/* * * * * * * * * *
  
  JAVASCRIPT FOR Capton Cylinders Custom Cylinder Order Form
  
* * * * * * * * * */


// SHOWS OR HIDES THE 'OTHER' FIELD FOR A COUNTRY SELECTION
function showOrHideOther(SelectObj) {
	document.getElementById(SelectObj.name + '_OtherContainer').style.display =
	(SelectObj[SelectObj.selectedIndex].value == 'OTHER')?'block':'none';
}


// GETS CERTAIN VARS FROM A LIST (seperated by commas with no comma at the end -- useful for grabbing vars from window.open options)
function getVarsFromList(VarList, GetVar) {

	IndexOfVar    = VarList.indexOf(GetVar + '=') + (GetVar.length + 1);
	CommaAfterVar = VarList.substr(IndexOfVar).indexOf(",");
	return (CommaAfterVar > 0)?VarList.substr(IndexOfVar, CommaAfterVar):VarList.substr(IndexOfVar);
}


// GET HORIZONTAL CENTER OF WINDOW
function getWindowCenterX(w) {
	w = (w)?w:document.body.clientWidth;
	return ((screen.width-w)/2);
}


// GET VERTICAL CENTER OF WINDOW
function getWindowCenterY(h) {
	h = (h || navigator.appName != "Microsoft Internet Explorer")?h:document.body.clientHeight;
	return ((screen.height-h)/2);
}


// OPENS A WINDOW TO DISPLAY AN IMAGE, BUT ALSO HAS A DOCUMENT.TITLE
function openImageWindow(ImgFile, WindowOptions, WindowTitle) {
	tmpName = Math.random();
	winName = String(tmpName).replace(/\./, "");

	imgWin = window.open("", winName, WindowOptions + ",left=" + getWindowCenterX(getVarsFromList(WindowOptions, "width")) + ",top=" + getWindowCenterY(getVarsFromList(WindowOptions, "height")));

	with (imgWin.document) {
		open();
		write("<html><head><title>" + WindowTitle + "</title></head><body onLoad=\"window.focus()\"><img src=\"" + ImgFile + "\"></body></html>");
		close();
	}
}

// Toggle extra colour option(s)
function toggleExtraColourOptions(SelectedRadio) {
	with (document)
		getElementById('PaintOptions_PrimedandPainted_Colour_ID').disabled = !getElementById('PaintOptions_PrimedandPainted').checked;
}

// Toggle dimension fields for rod/base mounting
function toggleDimensionFields(UpToLetter, SectionLabel) {	

	var SetHidden = false;
	for (var i = 0; i < LetterSelectionsArray.length; i++) {
		document.getElementById('FieldLabel_Dimension_for_' + SectionLabel + '_' + LetterSelectionsArray[i] + '_container').style.visibility = (SetHidden)?'hidden':'visible';
		
		if (LetterSelectionsArray[i] == UpToLetter)
			SetHidden = true;
	}
}


// CONVERTS FORM DATA TO GET STRING
function convertFormDataToGETStr(formObj, AlternateParentElmntForFields) { 
		
	POSTDataArray = new Array();
	
	// Loop through form fields
	AltCounter = 0;
	ElmntsList = '';
	
	if (AlternateParentElmntForFields)
		LoopInObjectsArray = new Array(formObj.elements,
					       AlternateParentElmntForFields.getElementsByTagName('input'),
					       AlternateParentElmntForFields.getElementsByTagName('textarea'),
					       AlternateParentElmntForFields.getElementsByTagName('select')
					      );

	else
		LoopInObjectsArray = new Array(formObj.elements);
	
 	for (var i in LoopInObjectsArray) {
	
		for (var j = 0; j < LoopInObjectsArray[i].length; j++) {
			
			Elmnt = LoopInObjectsArray[i][j];
	
			Name  = '';
			Value = '';
			
			if (!Elmnt.disabled) {
			
				// Submit different information for various types of fields...
				switch (Elmnt.type) {
					
					// "Normal" field
					default:
						Name  = Elmnt.name;
						Value = Elmnt.value;
					break;
					
					// Radio
					case 'radio':
						if (Elmnt.checked) {
							Name  = Elmnt.name;
							Value = Elmnt.value;
						}
					break;
					
					// Checkbox
					case 'checkbox':
						Name  = Elmnt.name;
						Value = (Elmnt.checked)?Elmnt.value:'';
					break;
				}
				
				if (Name != '' && Name != 'undefined' && Name != undefined && Name != 'null' && Name != null) {
					POSTDataArray[AltCounter] = encodeURIComponent(Name) + '=' + encodeURIComponent(Value);
					AltCounter++;
				}
			}
		}
	}
	
	return POSTDataArray.join('&');
}

              
// Submits the form for processing
function submitCaptonOrderForm() {
	
	document.getElementById('ProcessingMsg').style.display = 'block';
	
	// Set all field labels to #000000 text color
	Spans = document.getElementsByTagName('span');
	for (var i in Spans) {
		if (Spans[i].id != 'undefined') {
			if (String(Spans[i].id).substr(0, 11) == 'FieldLabel_')
				Spans[i].style.color = '#000000';
		}
	}
	
	document.getElementById('ErrorOutput').innerHTML = '';
	
	// Choose object
	if (navigator.appName == 'Microsoft Internet Explorer')
		AJAXHTTPObj = new ActiveXObject('Microsoft.XMLHttp');
	else
		AJAXHTTPObj = new XMLHttpRequest;
	
	// Gather form data
	FormData = convertFormDataToGETStr(document.CaptonOrderForm);
	
	// Open AJAX connection...
	AJAXHTTPObj.open('POST', 'index.php', true);
	AJAXHTTPObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	AJAXHTTPObj.send('ProcessForm=true&' + FormData);
	
	// Process form...
	AJAXHTTPObj.onreadystatechange = function() {
		if (AJAXHTTPObj.readyState == 4) {
			
			// Errors exist?
			if (!outputFormErrors(document.CaptonOrderForm, AJAXHTTPObj.responseText, document.getElementById('ErrorOutput'))) {
				
				// No errors: 'thank-you' output
				document.getElementById('MainOutput').innerHTML
				= '<center>'
				+ '<p>&nbsp;</p>'
				+ '<p><b>Thank-you</b></p>'
				+ '<p>We will contact you shortly<p>'
				+ '</center>';
			}
		}
	}
	
}


// PROCESSES AND OUTPUT FORM ERRORS
function outputFormErrors(formObj, formErrStrFromAJAX, ErrorOutputContainer) {
	
	// Error string is valid
	if (formErrStrFromAJAX.substr(0, 11) == 'FormErrors:') {
	
		ErrorOutput        = '';
		PipeExists         = formErrStrFromAJAX.match(/\|/);
		formErrStrFromAJAX = formErrStrFromAJAX.substring(11, formErrStrFromAJAX.length);
		formErrArray       = (PipeExists)?formErrStrFromAJAX.split('|'):Array(formErrStrFromAJAX);
		
		ErrorFieldsArray_array = new Array();
		
		UndefStr = '';
		for (var i in formErrArray) {
			SplitCharAt      = formErrArray[i].indexOf('=');
			ErrorFields      = formErrArray[i].substr(0, SplitCharAt);
			ErrorFieldsArray = (ErrorFields.indexOf(',') != -1)?ErrorFields.split(','):new Array(ErrorFields);
			ErrorOutput_tmp  = formErrArray[i].substr(SplitCharAt+1);
			
			if (ErrorOutput_tmp != '')
				ErrorOutput += '<li>' + ErrorOutput_tmp + '</li>';
	
			for (var j in ErrorFieldsArray) {
				if (document.getElementById('FieldLabel_' + ErrorFieldsArray[j]) != null)
					document.getElementById('FieldLabel_' + ErrorFieldsArray[j]).style.color = '#FF0000';
				else
					UndefStr += ErrorFieldsArray[j] + '\n';
			}
			
			ErrorFieldsArray_array.push(ErrorFieldsArray);
		}
		
		ErrorOutputContainer.className = 'InvalidFont';
		ErrorOutputContainer.innerHTML = '<b>The form could not be processed for the following reasons...</b><ul>' + ErrorOutput + '</ul><p>&nbsp;</p>';
		
		document.location.href = '#';
		return true;
	}
	
	else if (formErrStrFromAJAX == '')
		return false;
	
	else {
		alert(formErrStrFromAJAX);
		return true;
	}
}