d = document;

function findPosX(obj){
	var curleft = 0;
	if(!obj.nodeName)obj = document.getElementById(obj);
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	return curleft;
}

function findPosY(obj){
	var curtop = 0;
	if(!obj.nodeName)obj = document.getElementById(obj);
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	return curtop;
}

function ds_addClass(curLayer,newClass){
	if (d.getElementById){
		if(!curLayer.nodeName){
			curLayer = document.getElementById(curLayer);
		}
		//alert(curLayer.className);
		if(curLayer.className.indexOf(newClass) == -1){
			curLayer.className = curLayer.className + " " + newClass;
		}
		//alert(curLayer.className);
	}
}

function ds_delClass(curLayer,oldClass){
	if (d.getElementById){
		if(!curLayer.nodeName){
			curLayer = document.getElementById(curLayer);
		}
		//alert(curLayer.className);
		curClass = curLayer.className;
		if(curClass.indexOf(oldClass) != -1){
			curClass =  " "+curClass + " ";
			curLayer.className = trim(curClass.replace(" "+oldClass+" "," "));
		}
		//alert(curLayer.className);
	}
}

function trim(s){
	toTrim = new Array(' ','\n','\r');
	for(x=0; x<toTrim.length; x++){
		while(s.substring(0,1) == toTrim[x]){
			s = s.substring(1,s.length);
		}
		while(s.substring(s.length-1,s.length) == toTrim[x]){
			s = s.substring(0,s.length-1);
		}
	}
	return s;
}

function getQueryVariable(variable) { // this function gets us the value of a passed variable name from the query string
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	} 
	return '';
}

function ds_findParentElem(curNode,lookingFor){
	while(curNode.tagName.toLowerCase() != lookingFor.toLowerCase()){
		curNode = curNode.parentNode;
	}
	return curNode;
}


// in-line error checking
function ds_checkValue(foo){ // field must just have some value
	if(foo.value == ""){
		ds_addClass(foo.parentNode.parentNode,'error');
		ds_addClass(ds_findParentElem(foo,'form'),foo.id);
	} else {
		ds_delClass(foo.parentNode.parentNode,'error');
		ds_delClass(ds_findParentElem(foo,'form'),foo.id);
	}
}

function ds_checkEmail(foo){
    if (foo.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1) {
		ds_addClass(foo.parentNode.parentNode,'error');
		ds_addClass(ds_findParentElem(foo,'form'),foo.id);
	} else {
		ds_delClass(foo.parentNode.parentNode,'error');
		ds_delClass(ds_findParentElem(foo,'form'),foo.id);
	}
}

function ds_checkForm(checkThis){
	hasErrors = '';
	//alert(checkThis.elements.length);
	for(x=0; x<checkThis.elements.length; x++){
		curField = checkThis.elements[x];
		formGroup = curField.parentNode.parentNode;
		curClass = formGroup.className;
		if(curClass && curClass.toLowerCase().indexOf('required') != -1){
			if((curField.type == 'text' || curField.type == 'textarea') && curField.value == ""){
				ds_addClass(formGroup,'error');
				ds_addClass(checkThis,curField.id);
				//alert(curField.id);
			}
			if((curField.type == 'checkbox' || curField.type == 'radio') && !curField.checked){
				ds_addClass(formGroup,'error');
				ds_addClass(checkThis,curField.id);
				//alert(curField.id);
			}
		}
	}

	if(checkThis.className != ""){ // check for existing errors
		hasErrors = 'true';
	}
	if(hasErrors){
		alert('Highlited fields must be corrected first');
		scrollTo(findPosX(checkThis),findPosY(checkThis)-30);
		return false;
	}
	return true;
}

function showHide(layerName){ // shows and hides a given layer
	if (d.getElementById){
		if(!layerName.nodeName) layerName = d.getElementById(layerName);
		layerName.style.display = layerName.style.display ? '' : 'none';
		return;
	}
}

function showLayer(layerName){ // shows a given layer
	if (d.getElementById){
		if(!layerName.nodeName) layerName = d.getElementById(layerName);
		if(layerName){
			layerName.style.display = '';
			return;
		}
	}
}

function hideLayer(layerName){ // hides a given layer
	if (d.getElementById){
		if(!layerName.nodeName) layerName = d.getElementById(layerName);
		layerName.style.display = 'none';
		return;
	}
}

function ds_flashDetect(reqVersion){ // detect users version of flash, and if it's high enough
	var actualVersion = 0;
	var gotIt = got2 = got3 = got4 = got5 = got6 = got7 = got8 = got9 = false;
	if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.toLowerCase().indexOf("win") != -1)) {
		vbCode = '<scr'+'ipt language="VBScript"\> \n';
		vbCode += 'on error resume next \n';
		for(x=2; x<=maxFlashVersion; x++){
			vbCode += 'got'+x+' = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+x+'"))) \n';
		}
		vbCode += '</scr'+'ipt\> \n';
		d.write(vbCode);
		for (var i = 2; i <= maxFlashVersion; i++) {  
			if (eval("got" + i) == true) actualVersion = i;
		}
	} else {
		var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
		if (plugin) {
			actualVersion = parseInt(plugin.description.substring(plugin.description.indexOf(".")-1));
		}
	}
	if(actualVersion >= reqVersion) gotIt = true;
	return gotIt;
}

function ds_makeFlash(w,h,vars,fileName){ // generate flash code based on passed vars
	swf  = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+window.location.protocol+'//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+w+'" height="'+h+'" class="flashTitle">\n';
	swf += '	<param name="movie" value="'+fileName+'" />\n';
	/*swf += '	<param name="wmode" value="transparent" />\n';*/
	swf += '	<param name="flashvars" value="'+vars+'" />\n';
	swf += '	<embed src="'+fileName+'" flashvars="'+vars+'" width="'+w+'" height="'+h+'" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" class="flashTitle"><'+'/embed>\n';// wmode="transparent"
	swf += '<'+'/object>\n';
	return swf;
}


// experiments
function moveRightCol(){
	//window.status ="1";
	if(d.getElementById('leftBot')){
		//window.status ="2";
		adCol2 = d.getElementById('adCol');
		bodyArea2 = d.getElementById('bodyArea');
		if(d.getElementById('footer').offsetWidth <=950 ||  self.screen.width < 1024){
			//window.status ="3";
			// smaller then 1024 so move over to left
			if(adCol2.parentNode.id != 'leftBot'){
				d.getElementById('leftBot').appendChild(adCol2);
				bodyArea2.style.width = "610px";
				//window.status ="moved";
			}
		} else {
			//window.status ="4";
			if(adCol2.parentNode.id != 'rightCol'){
				d.getElementById('rightCol').appendChild(adCol2);
				bodyArea2.style.width = "680px";
			}
		}
	}
}
window.onresize = moveRightCol;