// create or append a page onload event
if (typeof(window.onload)=='function') {
	var fos=window.onload.toString();
	fos=fos.substring(fos.indexOf("{")+1, fos.lastIndexOf("}"));
	window.onload=new Function("gd_init();"+fos);
}
else {
	window.onload=gd_init;
}
// global variables are defined server-side
function gd_init() {
	if (g_oCtry) {
		// populate the country and state cascading dropdowns
		initListGroup('country-state', g_oCtry, g_oStte, 'cs');
		// select the country state values if set from persistent cookie
		if (g_hCtry.value) {
			g_oCtry.value=g_hCtry.value;
			g_oCtry.onchange();
			if (g_hStte.value) g_oStte.value=g_hStte.value;
		}
		// force client-side state and country validation even
		// for browsers that don't support it.
		if (typeof(Page_ValidationActive)=='undefined') if (typeof(g_oFrm.onsubmit)=='function') {
			var fos=g_oFrm.onsubmit.toString();
			fos=fos.substring(fos.indexOf("{")+1, fos.lastIndexOf("}"));
			g_oFrm.onsubmit=new Function("checkState();\n"+fos);
		}
		else {
			g_oFrm.onsubmit=checkState;
		}
	}
	if (g_oSbm) {
		// force client-side page validation
		if (typeof(Page_ValidationActive)=='undefined') if (typeof(g_oFrm.onsubmit)=='function') {
			var fos=g_oFrm.onsubmit.toString();
			fos=fos.substring(fos.indexOf("{")+1, fos.lastIndexOf("}"));
			g_oFrm.onsubmit=new Function("if (!checkAnswer()) return false;"+fos);
		}
		else {
			g_oFrm.onsubmit=checkAnswer;
		}
	}
	if (g_oQust) {
		// attach the category dropdown to the category icons and
		// message on change
		if (typeof(g_oQust.onchange)=='function') {
			var fos=g_oQust.onchange.toString();
			fos=fos.substring(fos.indexOf("{")+1, fos.lastIndexOf("}"));
			g_oQust.onchange=new Function("changeGDImage();"+fos);
		}
		else {
			g_oQust.onchange=changeGDImage;
		}
		makeOptionTitle(g_oQust);
		changeGDImage();
	}
	// show the page body after all is initialized
	document.getElementById('centerContent').style.visibility='visible';
	// give focus to the first input element
	var elm=getNamedElement('FirstName');
	if (elm==null)
		elm=getThisElement(1);
	if (elm) elm.focus();
	//alert((typeof(g_oFrm.onsubmit)=='function')?g_oFrm.onsubmit.toString():'form.onsubmit is not defined');
}
// validate the country and state selections and post their values
// in hidden fields
function checkState(src, args) {
	g_hCtry.value='';
	g_hStte.value='';
	var brst=g_oStte.disabled;
	if (!brst) {
		brst=(g_oStte.selectedIndex>0);
	}
	if (brst) { // identify which courties have a state selection
		if (g_oCtry.value)
			g_hCtry.value=((g_oStte.disabled)?'@@':'++')+g_oCtry.value;
		g_hStte.value=g_oStte.value;
	}
	if (args) args.IsValid=brst;
}
function setValidation(bol) {
	g_bValidate=(bol==true);
}
// return a pointer the first element with an ID that contains sName
function getNamedElement(sName) {
	var itm=null;
	var bOK=false;
	var elm=null;
	for (itm=0; ((itm<g_oFrm.elements.length)&&(!bOK)); itm++) {
		if (g_oFrm.elements[itm].id.indexOf(sName)>0) {
			elm=g_oFrm.elements[itm];
			bOK=true;
		}
	}
	return elm;
}
// each question has a sort order.  find the first visible element after
// the sort order indicated by nIdx (null if none found)
function getThisElement(nIdx) {
	var itm=null;
	var bOK=false;
	var elm=null;
	while (!bOK) {
		for (itm=0; ((itm<g_oFrm.elements.length)&&(!bOK)); itm++) {
			if (g_oFrm.elements[itm].id.indexOf('hidSortOrder')>0) {
				elm=g_oFrm.elements[itm+4];
				bOK=(parseInt(g_oFrm.elements[itm].value)==nIdx);
			}
		}
		if (!bOK) {
			elm=null;
			bOK=true;
		}
	}
	return elm;
}
// returns true if sSearch is found in the pipe delimited list sSeek
function isIn(sSeek, sSearch) {
	var bRslt=false;
	if (!sSearch) return false;
	if (!sSeek) return false;
	var aSrch=sSearch.split('|');
	for (var idx=0; ((idx<aSrch.length)&&(!bRslt)); idx++) {
		bRslt=(aSrch[idx]==sSeek);
	}
	return bRslt;
}
// returns false if the form is invalid and shades the invalid elements
function checkAnswer(src, args) {
	if (!g_bValidate) return true;
	//if (src) if (src.target) alert('src.target.id='+src.target.id);
	//if (window.event) alert('window.event.srcElement.id='+window.event.srcElement.id);
	// optimistic seed value
	var formvalid=true;
	// defines the start index for the question set
	var sidx=0;
	for (var itm=0; itm<g_oFrm.elements.length; itm++) {
		// hidSortOrder starts the question element in the set
		if (g_oFrm.elements[itm].id.indexOf('hidSortOrder')>0) {
			// element 3 past the sort order determine if this
			// element is required
			var req=(getItemValue(g_oFrm.elements[itm+3])=='True');
			// get the element index starting point
			if (sidx==0) sidx=itm;
			if (req) {
				var elm=g_oFrm.elements[itm+4];
				var rid=parseInt(getItemValue(g_oFrm.elements[itm+1]));
				var bvalid=true;
				if (isNaN(rid)) {
					bvalid=(getItemValue(elm)!=null);
				}
				else {
					var rans=getItemValue(g_oFrm.elements[itm+2]);
					var cval=getItemValue(getThisElement(rid));
					// alert(g_oFrm.elements[idx].id+'?='+g_oFrm.elements[itm+2].id+'\n'+cval+'=?'+rans);
					if (isIn(rans, cval)) {
						bvalid=(getItemValue(elm)!=null);
					}
				}
				if ((elm.type=='checkbox')||(elm.type=='radio')) {
					var fdg=document.getElementsByName(elm.name).length-1;
					itm+=fdg;
					sidx+=fdg;
					var elm_id=elm.id;
					fdg=elm_id.lastIndexOf('_');
					elm=document.getElementById(elm_id.substr(0,fdg));
				}
				elm.style.backgroundColor=(bvalid)?'transparent':'#ffb6c1';
				if (!bvalid) formvalid=false;
			}
		}
	}
	if (args) args.IsValid=formvalid;
	return formvalid;
}
// returns a pipe (|) delimited list of all selected values
// depending upon element type
function getItemValue(el) {
	var rslt=null;
	switch (el.type) {
		case 'radio':
			var col=document.getElementsByName(el.name);
			rslt='';
			for (var idx=0; idx<col.length; idx++) {
				if (col[idx].checked)
					rslt+='|'+col[idx].value;
			}
			if (rslt=='') {
				rslt=null;
			}
			else {
				rslt=rslt.substr(1);
			}
			break;
		case 'checkbox':
			var idx=el.id.lastIndexOf('_');
			var col=el.id.substr(0,idx);
			var elm=document.getElementById(col+'_0');
			rslt='';
			for (idx=1; (elm!=null); idx++) {
				if (elm.checked)
					rslt+='|'+elm.nextSibling.innerHTML;
				elm=document.getElementById(col+'_'+idx);
			}
			if (rslt=='') {
				rslt=null;
			}
			else {
				rslt=rslt.substr(1);
			}
			break;
		case 'select-multiple':
			rslt='';
			for (var opt=0; opt<el.options.length; opt++) {
				if (el.options[opt].selected)
					rslt+='|'+el.options[opt].value;
			}
			if (rslt=='') {
				rslt=null;
			}
			else {
				rslt=rslt.substr(1);
			}
			break;
		default:
			if (el.value!='') rslt=el.value;
	}
	if (rslt!=null) rslt=rslt.replace(/^\s+|\s+$/g, '');
	if (rslt=='') rslt=null;
	return rslt;
}
function makeOptionTitle(ddl_id) {
	var ddl=ddl_id;
	if (typeof(ddl_id)=='string')
		ddl=document.getElementById(ddl_id);
	for (var i=1;i<ddl.options.length;i++)
		ddl.options[i].title=ddl.options[i].text;
}
function changeGDImage() {
	g_oQust.title='';
	var dImg=document.getElementById('img_gdpic');
	var dDesc=document.getElementById('div_gdmsg');
	var dMsg=document.getElementById('div_gdpic');
	if (g_oQust.selectedIndex>0) {
		g_oQust.title=g_oQust.options[g_oQust.selectedIndex].text;
		dImg.src=g_ImgBase+g_aImg[g_oQust.value][0];
		g_hCImg.value=dImg.src;
		dMsg.title=g_oQust.options[g_oQust.selectedIndex].text;
		dDesc.innerHTML=g_aImg[g_oQust.value][1];
	}
	else {
		dImg.src=g_aImg[0][0];
		dMsg.title='Ask the Glue Doctor';
		dDesc.innerHTML=g_aImg[0][1];
	}
}
