//## 
//# pbContactForm class Version 2
//##

//## 
//# Version 1.1.1
//# - Import "select with other field' from Smile Texas
//# - Move Javascript from html to .js source
//# - Server side validation
//##

function pbContactForm_Submit(sFormId) {
	var oForm = document.getElementById(sFormId+"_Form");
	var oFormItems = oForm.childNodes[0];
	var oFormItem, oFormItemField;
	var i;
	
	var bInvalidFieldPresent = false;
	
	for ( i=0; i<oFormItems.childNodes.length; i++ ) {
		oFormItem = oFormItems.childNodes[i];
		
		if ( -1 == oFormItem.className.search(/formItem/) ) continue;
		if ( oFormItem.getAttribute('itemType') != 'input' ) continue;
		
		oFormItemField = oFormItem.childNodes[1];
		
		// ??????????????????????????
			if ( ! oFormItemField ) continue;
			switch ( oFormItemField.getAttribute('inputType') ) {
				case 'text' :
				case 'textArea' :
				break;
				default :
					continue;
				break;
			}
		//
		
		if ( false == pbContactForm_ValidateField(oFormItemField) ) bInvalidFieldPresent = true;
	}
	
	//if ( ! bInvalidFieldPresent ) alert('submit');
	if ( ! bInvalidFieldPresent ) oForm.submit();
}
function pbContactForm_ValidateField(oField) {
	//return true;
	
	if ( ! oField.getAttribute('validPattern') ) return true; // if theres no valid pattern definition field is considered valid
	
	eval('sValidPattern = ' + oField.getAttribute('validPattern') + ';');
	var sInvalidMsg = oField.getAttribute('invalidMsg');
	
	var oInput = oField.childNodes[0];
	var oInvalidMsg = oField.childNodes[oField.childNodes.length -1];
	
	var sValue = oInput.value;
	
	//alert('pattern=' + sValidPattern + ' value=' + sValue + ' search=' + sValue.search(sValidPattern));
	
	if ( sValue.search(sValidPattern) < 0 ) {// field is invalid
		oField.setAttribute('originalClass', oField.className);
		oField.className += ' invalid';
		oInvalidMsg.childNodes[0].nodeValue = sInvalidMsg;
		return false;
	} else {// field is valid
		if ( oField.getAttribute('originalClass') ) oField.className = oField.getAttribute('originalClass');
		oInvalidMsg.childNodes[0].nodeValue = ' ';
		return true;
	}
}
function pbContactForm_InputTypeSelect_SetOtherOption(oField) {
	var oSel = oField.childNodes[1];
	var oOtherOpt = oField.childNodes[2];
	
	switch ( oSel.value ) {
		case 'other' :
			oOtherOpt.style.display='block';
			oOtherOpt.focus();
		break;
		default :
			oOtherOpt.style.display='none';
		break;
	}
}
function pbContactForm_InputTypeSelect_SetFieldValue(oField) {
	var oInput = oField.childNodes[0];
	var oSel = oField.childNodes[1];
	var oOtherOpt = oField.childNodes[2];
	var sValue;
	
	var sSelValue = oSel.options[oSel.selectedIndex].value;
	
	switch ( sSelValue ) {
		case 'other' :
			oSel.className = '';
			sValue = oOtherOpt.value;
		break;
		case '' :
			oSel.className = 'initial';
			sValue = '';
		break;
		default :
			oSel.className = '';
			sValue = sSelValue;
		break;
	}
	
	oInput.value = sValue;
	pbContactForm_ValidateField(oField);
}


