function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
	
	var args=MM_showHideLayers.arguments;
	var obj=MM_findObj(args[0])

	if (args[1]=='hide') {
		obj.style.display='none';		
	}
	if (args[1]=='show') {
		obj.style.display='block';
	}
} 

var sErrorMsg='';
var ie=0;ns=0;
document.layers?ns=1:ie=1;

var bSubmitted = false; // mjg 20040329 avoid those duplications forever!!

function Navigate(iDirection) {
		
	if (iDirection <0) {
		if (iSelectedPage>1) {
			iSelectedPage--;
		}
	}else{		
		if (!validateControls(iSelectedPage)) {
			alert ("please complete or correct\nthe mandatory fields (*)");
			return;
		}
			
		if (iDirection==0) {
			//Save button functionality
			iSelectedPage=iTotalPages
		}
		
		if (iSelectedPage<iTotalPages) {
			iSelectedPage++;
		}else{ 
			if(bSubmitted == false){     // mjg 20040329 avoid those duplications forever!!
				walkForms();
				oSaveText = MM_findObj('save');
				oSaveText.value="true";
				objForm = MM_findObj("frmMain");
				objForm.submit();
				
				bSubmitted = true;       // mjg 20040329 avoid those duplications forever!!
				return;
			}
		}
	}
						
	// hide pages
	for (i=1;i<=iTotalPages;i++) {
		if (i!=iSelectedPage) {
			MM_showHideLayers('page' + i,'hide')
		}
	}
					
	// Track Page Level hit
	if (cookiesEnabled()) {	
		var imgSession = new Image(0,0); 
		imgSession.src = "/Common/SessionTrack.aspx?" + unescape("strPageName=/Common/Register.aspx?page=" + iSelectedPage)
	}

	// display selected page
	MM_showHideLayers('page' + iSelectedPage,'show')	

	buttons(iSelectedPage)
	
}



function validateFormData (oForm) {
			
	var bValidated=true;
	var intElementLength = oForm.elements.length
	for (intLoop=0;intLoop<intElementLength;intLoop++) {					
		var oElement = oForm.elements[intLoop];		
		if (ie) {
			oElement.style.backgroundColor='#FFFFFF';
		}

		if (oElement.className=='validate') {
			switch (oElement.type) {
				case "text":				
					bReturn = validateString (oElement);
					break;
				case "password":				
					bReturn = validateString (oElement);
					break;
				case "select-one":
					bReturn = validateSelect (oElement);
					break;
				case "select-multiple":
					bReturn = validateMultipleSelect (oElement);
					break;
				case "checkbox":
					bReturn = oElement.checked;
					break;
			}
		
			if (!bReturn) {
				if (ie) {
					oElement.style.backgroundColor='#F8C8C8';
				}
			}

			if (!bReturn && bValidated) {
				bValidated=false;
			}

		}
					
	}	

	if (!bValidated)
		alert ("please complete or correct\nthe mandatory fields (*)");	
	else if (!ValidateRegistrationPage (oForm))
		bValidated = false


	if(bValidated && bSubmitted == false) {
		bSubmitted=true;
		return true;
	} else {
		return false;
	}

}

var windowOrLayer;

function validateControls(iSelectedPage) {

	var objForm = MM_findObj("frmPage" + iSelectedPage);
	return validateFormData(objForm)
      				
}

function SetUpPages(){

	// hide pages
	for (i=1;i<=iTotalPages;i++) {
		if (i!=iSelectedPage) {
			MM_showHideLayers('page' + i,'hide')
		}
	}
		
	// Track Page Level hit - start page
	if (cookiesEnabled()) {	
		var imgSession = new Image(0,0); 
		// mjg 20041115 only log subsequent pages of registration - register.aspx?strURL=blah/blah is by definition page 1
		if(iSelectedPage!=1){
			imgSession.src = '/Common/SessionTrack.aspx?' + unescape('strPageName=/Common/Register.aspx?page=' + iSelectedPage);
		}
		// mjg 20041115 ... instead of this sculduggery...to avoid duplicate sessions
		//window.setTimeout("imgSession.src = '/Common/SessionTrack.aspx?' + unescape('strPageName=/Common/Register.aspx?page=' + iSelectedPage);", 800);
	}

	// display selected page
	MM_showHideLayers('page' + iSelectedPage,'show')	

	buttons(iSelectedPage)
	
}
var strXML;

function walkForms (windowOrLayer) {

	strXML='';
		
	for (var f = 1; f <= iTotalPages; f++) {		
		objForm = MM_findObj("frmPage"+f);
		gatherFormData(objForm);
	}

	objForm = MM_findObj("frmMain");
	objForm.formxml.value = strXML;
	
}

function gatherFormData (oForm) {
	
	var strValue ='';
	var intElementLength = oForm.elements.length
	for (intLoop=0;intLoop<intElementLength;intLoop++) {					
		var oElement = oForm.elements[intLoop];
		if (oElement.id !='') {
			switch (oElement.type) {
				case "hidden":
					strValue = getTextValue(oElement); break;
				case "password":
					strValue = getTextValue(oElement); break;
				case "text":
					strValue = getTextValue(oElement); break;
				case "select-one":
					strValue = getComboValue(oElement); break;
				case "select-multiple":
					strValue = getComboValue(oElement); break;
				case "checkbox":
					strValue = getCheckValue(oElement); break;
				case "textarea":
					strValue = getTextValue(oElement); break;
			}		
			
			if (strValue!='')				
				strXML += strValue + ' ';
		}
	}

}

function getTextValue (oElement){
	var strValue ='';
	var sLocalValue='';
	if (oElement.value !='') {
		sLocalValue = oElement.value
		sLocalValue=sLocalValue.replace(/&/ig,"&amp;")
		sLocalValue=sLocalValue.replace(/\"/ig,"&quot;")
		strValue = oElement.id + '="' + sLocalValue + '"'
	}
	return strValue ;
}
 
function getComboValue (oElement) {
	var strValue = '';
	var sLocalValue='';
	var oElementName=oElement.name;
	var intOptionsLength = oElement.options.length
	for (i=0;i<intOptionsLength;i++) {
		if (oElement.options[i].selected) {
			if(strValue!='') strValue+=','		
			sLocalValue=oElement[i].value;
			sLocalValue=sLocalValue.replace(/&/ig,"&amp;")
			sLocalValue=sLocalValue.replace(/\"/ig,"&quot;")
			strValue += sLocalValue			
		}
	}
	strValue = oElementName + '="' + strValue + '"'
	return strValue;
}

function getCheckValue (oElement) {
	var strValue = '';
	if (oElement.checked) {
		strValue = oElement.id + '="' + oElement.value + '"'
	}
	return strValue;
}

function validateString(oElement) {
	var bValidated = true;
	if (oElement.value.length==0) {
		bValidated=false;
	}
	return bValidated ;
}

function validateSelect(oElement) {
	var bValidated = true;
	if (oElement.selectedIndex==0) {
		bValidated=false;
	}
	return bValidated ;
}

function validateMultipleSelect(oElement) {
	var bValidated = true;
	if (oElement.selectedIndex==-1) {
		bValidated=false;
	}
	return bValidated ;
}

function buttons(iSelectedPage) {
	
	if (iSelectedPage==iTotalPages) {
		//MM_findObj('imgNext').src='/common/images/generic/save.gif';
		MM_findObj('imgPrevious').src='/common/images/show/previous.gif';
		MM_findObj('imgNext').src='/common/images/show/next.gif';

	}

	if (iSelectedPage==1) {
		MM_findObj('imgPrevious').src='/common/images/show/spacer.gif';
	}
	
	if (iSelectedPage!=iTotalPages&&iSelectedPage!=1) {
		MM_findObj('imgPrevious').src='/common/images/show/previous.gif';
		MM_findObj('imgNext').src='/common/images/show/next.gif';
	}
}

function switchKeywordGroup(oSelectedRadioButton){
	var aSelectorRadioButtons = document.getElementsByName('KeywordGroupSelector');
	var intElementLength = aSelectorRadioButtons.length;
	for (var intLoop=0;intLoop<intElementLength;intLoop++) {
		var oElement = aSelectorRadioButtons[intLoop];
		//alert('Group'.length);
		//alert(oElement.id.length);
		//alert('RadioButton'.length);
		//alert(oElement.id.substring('Group'.length, oElement.id.length - 'RadioButton'.length));
		if(oElement.id==oSelectedRadioButton.id){
			document.getElementById('Group' + oElement.id.substring('Group'.length, oElement.id.length - 'RadioButton'.length) + 'Div').style.display='block';
		}
		else{
			document.getElementById('Group' + oElement.id.substring('Group'.length, oElement.id.length - 'RadioButton'.length) + 'Div').style.display='none';
		}
	}
}
