/*****************  Charon Computers JavaScript File  ***********************/
/*****************  Created By David Barrett  ***********************/
/*****************  Last Update July 2010  ***********************/

/*****************  Global Variables  ***********************/
var preloadFlag = false;
var chkvar=0;
var currentColors = new Object();

/*****************  Visitor Map Functions  ***********************/
function cantload() {
	img = document.getElementById("clustrMapsImg");
	img.src = "http://www2.clustrmaps.com/images/clustrmaps-back-soon.jpg";
	document.getElementById("clustrMapsLink").href = "http://www2.clustrmaps.com";
}
/*****************  Basic Site Functions  ***********************/
function pausecomp(millis) {
	var date = new Date();
	var curDate = null;
	do { curDate = new Date(); }
	while(curDate-date < millis);
}
/*****************  Startup OnLoad functions  ***********************/
function preloadFunctions() {
	if (window.addEventListener){
		window.addEventListener('resize',function (e) {
			if (window.innerWidth < 1000){
				var objL = document.getElementById('pagewrapldiv');
				var objLChk = document.getElementById('leftchk');
				var objR = document.getElementById('pagewraprdiv');
				var objRChk = document.getElementById('rightchk');
				objL.style.display = 'none';
				objR.style.display = 'none';
				objLChk.checked = false;
				objRChk.checked = false;
				chkvar = 1;
			}
			if (window.innerWidth > 1000){
				var objL = document.getElementById('pagewrapldiv');
				var objLChk = document.getElementById('leftchk');
				var objR = document.getElementById('pagewraprdiv');
				var objRChk = document.getElementById('rightchk');
				if (chkvar == 1){
					chkvar = 0;
					objLChk.checked = true;
					objRChk.checked = true;
				}
				if (objLChk.checked){
					objL.style.display = 'block';
				}
				if (objRChk.checked){
					objR.style.display = 'block';
				}
			}
			},true);
	}else if (document.addEventListener){
		document.addEventListener('resize',function (e) {
			if (document.documentElement.clientWidth < 1000){
				var objL = document.getElementById('pagewrapldiv');
				var objLChk = document.getElementById('leftchk');
				var objR = document.getElementById('pagewraprdiv');
				var objRChk = document.getElementById('rightchk');
				objL.style.display = 'none';
				objR.style.display = 'none';
				objLChk.checked = false;
				objRChk.checked = false;
				chkvar = 1;
			}
			if (document.documentElement.clientWidth > 1000){
				var objL = document.getElementById('pagewrapldiv');
				var objLChk = document.getElementById('leftchk');
				var objR = document.getElementById('pagewraprdiv');
				var objRChk = document.getElementById('rightchk');
				if (chkvar == 1){
					chkvar = 0;
					objLChk.checked = true;
					objRChk.checked = true;
				}
				if (objLChk.checked){
					objL.style.display = 'block';
				}
				if (objRChk.checked){
					objR.style.display = 'block';
				}
			}
			},true);
	}else if (window.attachEvent){
		window.attachEvent("onresize",ie8resize);
	}
	preloadFlag = true;
}
/*****************  Checking Resize Event for IE  ***********************/
function ie8resize (e) {
	if (document.documentElement.clientWidth < 1000){
		var objL = document.getElementById('pagewrapldiv');
		var objLChk = document.getElementById('leftchk');
		var objR = document.getElementById('pagewraprdiv');
		var objRChk = document.getElementById('rightchk');
		objL.style.display = 'none';
		objR.style.display = 'none';
		objLChk.checked = false;
		objRChk.checked = false;
		chkvar = 1;
	}
	if (document.documentElement.clientWidth > 1000){
		var objL = document.getElementById('pagewrapldiv');
		var objLChk = document.getElementById('leftchk');
		var objR = document.getElementById('pagewraprdiv');
		var objRChk = document.getElementById('rightchk');
		if (chkvar == 1){
			chkvar = 0;
			objLChk.checked = true;
			objRChk.checked = true;
		}
		if (objLChk.checked){objL.style.display = 'block';}
		if (objRChk.checked){objR.style.display = 'block';}
	}
}
/*****************  Special Tooltips  ***********************/
function tooltip_findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
		    curleft += obj.offsetLeft
		    obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	curleft += obj.x;
	return curleft;
}
function tooltip_findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
		    curtop += obj.offsetTop
		    obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	curtop += obj.y;
	return curtop;
}
function tooltip_show(tooltipId, parentId, posX, posY, width, height){
	var it, img, x, y;
	it = document.getElementById(tooltipId);
	if ((it.style.top === '' || it.style.top === 0) && (it.style.left === '' || it.style.left === 0)) {
		if (width !== null){it.style.width = width + "px";}
		if (height !== null){it.style.height = height + "px";}
		img = document.getElementById(parentId);
		x = tooltip_findPosX(img) + posX;
		y = tooltip_findPosY(img) + posY;
		it.style.top = y + 'px';
		it.style.left = x + 'px';
	}
	it.style.visibility = 'visible';
}
function tooltip_hide(id) {
	var it = document.getElementById(id);
	it.style.visibility = 'hidden';
}
/*****************  Image Load Functions  ***********************/

function newImage(arg) {
	if (document.images) {
		var rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function findElement(n,ly) {
	var curDoc = ly ? ly.document : document;
	var elem = curDoc[n];
	if (!elem) {
		for (var i=0;i<curDoc.layers.length;i++) {
			elem = findElement(n,curDoc.layers[i]);
			if (elem) return elem;
		}
	}
	return elem;
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		var img;
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			img = null;
			if (document.layers) {
				img = findElement(changeImages.arguments[i],0);
			}
			else {
				img = document.images[changeImages.arguments[i]];
			}
			if (img) {
				img.src = changeImages.arguments[i+1];
			}
		}
	}
}
/*****************  Window Opening Functions  ***********************/
function openwin(url,h,w){
	var newwindow=window.open(url,'Charon','height='+h+',width='+w+',left=100,top=100,resizable=yes,scrollbars=no,toolbar=no,status=no');
	return false;
}
function openwin2(url,h,w){
	var newwindow=window.open(url,'Charon','height='+h+',width='+w+',left=100,top=100,resizable=yes,scrollbars=yes,toolbar=no,status=no');
	return false;
}
/*****************  Form Data Checking Functions  ***********************/
function IsNumeric(sText){
	var i, vchar, isnumber = true, valid;
	valid = "0123456789.-()x ";
	for (i=0; i< sText.length && isnumber === true; i++){
		vchar = sText.charAt(i);
		if (valid.indexOf(vchar) == -1){isnumber = false;}
	}
	return isnumber;
}
function IsEmail(sText){
	var testresults, filter;
	filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ;
	if (filter.test(sText)){testresults=true;}
	else{testresults=false;}
	return testresults;
}
function CleanText(sText){return sText.replace(/\W+/g,'');}
function clearIt(obj){if (obj.value.indexOf('Comments/Questions') !== -1){obj.value = '';}}
function submitform() {
	var fname, lname, email, comm, errtxt = '', qmaxchars = 200;
	 fname = CleanText(document.getElementById('firstname').value);
	 lname = CleanText(document.getElementById('lastname').value);
	 email = document.getElementById('emailadd').value;
	 comm = CleanText(document.getElementById('comments').value);
	 if (fname === ""){errtxt = "First Name Missing";}
	 else if (lname === ""){errtxt = "Last Name Missing";}
	 else if (email === ""){errtxt = "Email Missing";}
	 if (!IsEmail(email)){errtxt = "Email format is Incorrect";}
 	 if (comm.length > qmaxchars){errtxt = "Please remove "+(q-maxchars)+"characters from comments";}
 	 if (errtxt !== ""){alert(errtxt);}
	 else{document.getElementById("webform").submit();}
}
/*****************  Set/Forget Cookie Colors  ***********************************/
function setCookieColors(){
	cookie.backcolor = currentColors.backcolor;
	cookie.txtcolor = currentColors.txtcolor;
	cookie.linkcolor = currentColors.linkcolor;
	cookie.headercolor = currentColors.headercolor;
	cookie.bordercolor = currentColors.bordercolor;
	cookie.fontsize = currentColors.fontsize;
	cookie.fontfamily = currentColors.fontfamily;
	cookie.save(30);
	alert('Cookie has been set! Colors will remain for 30 days.');
}
function forgetCookies(){
	cookie.forget();
	alert('Cookies have been removed! Colors will return to default.');
	window.location.reload();
}
/*****************  Visibility Change Functions  ***********************/
function chgLeftVis(){
	var objL = document.getElementById('pagewrapldiv');
	var objChkL = document.getElementById('leftchk');
	if (objChkL.checked){objL.style.display = 'block';}
	else{objL.style.display = 'none';}

}
function chgRightVis(){
	var objR = document.getElementById('pagewraprdiv');
	var objChkR = document.getElementById('rightchk');
	if (objChkR.checked){objR.style.display = 'block';}
	else{objR.style.display = 'none';}
}
/*****************  Page Alteration Functions  ***********************/
function loadSiteColors(){
	chgBkgdColor(cookie.backcolor);
	chgTextColor(cookie.txtcolor);
	chgLinksColor(cookie.linkcolor);
	chgHeadColor(cookie.headercolor);
	chgBordColor(cookie.bordercolor);
	chgFontSize(cookie.fontsize);
	chgFontStyle(cookie.fontfamily);
}
function chgBkgdColor(hexColor){
	var obj=document.getElementById('maincontentdiv');
	obj.style.backgroundColor = hexColor;
	var obj=document.getElementById('bodyID');
	obj.style.backgroundColor = hexColor;
	currentColors.backcolor = hexColor;
}
function chgTextColor(hexColor){
	var obj=document.getElementById('masterwrapdiv');
	obj.style.color = hexColor;
	currentColors.txtcolor = hexColor;
}
function chgLinksColor(hexColor){
	var linkObj=document.getElementsByTagName('a');
	for (i=0;i<linkObj.length;i++){linkObj[i].style.color = hexColor;}
	currentColors.linkcolor = hexColor;
}
function chgHeadColor(hexColor){
	var h1Obj=document.getElementsByTagName('h1');
	for (i=0;i<h1Obj.length;i++){h1Obj[i].style.color = hexColor;}
	var h2Obj=document.getElementsByTagName('h2');
	for (i=0;i<h2Obj.length;i++){h2Obj[i].style.color = hexColor;}
	var h3Obj=document.getElementsByTagName('h3');
	for (i=0;i<h3Obj.length;i++){h3Obj[i].style.color = hexColor;}
	currentColors.headercolor = hexColor;
}
function chgBordColor(hexColor){
	var imgObjs = document.getElementsByTagName('img');
	for (i=0;i<imgObjs.length;i++){imgObjs[i].style.borderColor = hexColor;}
	currentColors.bordercolor = hexColor;
}
function chgFontSize(sizeto){
	var obj=document.getElementById('masterwrapdiv');
	obj.style.fontSize = sizeto + "px";
	var obj=document.getElementById('contenthdrwrapdiv');
	if (sizeto == 12){obj.style.height = "17px";}
	else if (sizeto == 14){obj.style.height = "15px";}
	else if (sizeto == 16){obj.style.height = "12px";}
	currentColors.fontsize = sizeto;
}
function chgFontStyle(styleto){
	var obj=document.getElementById('masterwrapdiv');
	obj.style.fontFamily = styleto + ", sans-serif";
	currentColors.fontfamily = styleto;
}
/*****************  Page Changing Functions  ***********************/
function chgServ(chk){
	for (i=0;i<13;i++){
		var obj=document.getElementById('s'+ i + 'div');
		obj.style.display='none';
	}
	obj=document.getElementById(chk)
	if(obj.style.display=='block'){obj.style.display='none';}
	else {obj.style.display='block';}
}
function chgPort(chk){
	var totpages = 16;
	for (i=0;i<(totpages+1);i++){
		var obj=document.getElementById('p' + i + 'div');
		if (obj.style.display == 'block'){
			if (chk == 0){
				if (i == 0){page = 'p' + totpages + 'div';}
				else{page = 'p' + (i-1) + 'div';}
			}
			if (chk == 1){
				if (i == totpages){page = 'p0' + 'div';}
				else{page = 'p' + (i+1) + 'div';}
			}
			if (chk == 2){
				objSelect = document.getElementById('portselect');
				val = objSelect.value;
				page = 'p' + val +'div';
			}
		}
		obj.style.display='none';
	}
	obj=document.getElementById(page);
     obj.style.display='block';
}
function chgPage(chk) {
	var eleMain = document.getElementById('mainpgdiv');
	var eleCont = document.getElementById('contactpgdiv');
	var eleServ = document.getElementById('servicespgdiv');
	var eleRes = document.getElementById('resumepgdiv');
	var elePort = document.getElementById('portfoliopgdiv');
	switch(chk) {
		case 'h':
		  eleMain.style.display='block';
		  eleCont.style.display='none';
		  eleServ.style.display='none';
		  eleRes.style.display='none';
		  elePort.style.display='none';
		  break;
		case 'c':
		  eleMain.style.display='none';
		  eleCont.style.display='block';
		  eleServ.style.display='none';
		  eleRes.style.display='none';
		  elePort.style.display='none';
		  break;
		case 's':
		  eleMain.style.display='none';
		  eleCont.style.display='none';
		  eleServ.style.display='block';
		  eleRes.style.display='none';
		  elePort.style.display='none';
		  break;
		case 'r':
		  eleMain.style.display='none';
		  eleCont.style.display='none';
		  eleServ.style.display='none';
		  eleRes.style.display='block';
		  elePort.style.display='none';
		  break;
		case 'p':
		  eleMain.style.display='none';
		  eleCont.style.display='none';
		  eleServ.style.display='none';
		  eleRes.style.display='none';
		  elePort.style.display='block';
		  break;
		case 'd':
		  window.location = 'http://www.charoncomputers.com/drupal';
		  break;
		case 'x':
		  window.location = 'http://www.charoncomputers.com/xcart';
		  break;
		default:
		  eleMain.style.display='block';
		  eleCont.style.display='none';
		  eleServ.style.display='none';
		  eleRes.style.display='none';
		  elePort.style.display='none';
		  break;
	}
}
/*****************  Flash Component addins  ************************/

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
	var version;
	var axo;
	var e;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isnt in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful.

			// default to the first public version
			version = "WIN 6,0,21,0";
			// throws if AllowScripAccess does not exist (introduced in 6.0r47)
			axo.AllowScriptAccess = "always";
			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}

	return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;

	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}
	return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?');
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs)
{
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '/>';
  }
  document.write(str);
}
function AC_FL_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();
    switch (currArg){
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace":
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
