// JavaScript Document
//---------------------------------------------------------------------------------------------
/**
 * Ajax functions
 *
 */ 
//---------------------------------------------------------------------------------------------
/**
 *
 *
 */
function getXMLHTTPObject()
{

	var xmlhttp = false;

	try
	{
		xmlhttp = new ActiveXObject( "Msxml2.XMLHTTP" );
	}
	catch ( e )
	{
		try
		{
			xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
		}
		catch ( E )
		{
			xmlhttp = false;
		}
	}

	if ( !xmlhttp && typeof XMLHttpRequest != 'undefined' )
	{
		xmlhttp = new XMLHttpRequest();
	}

	return xmlhttp;
}

//---------------------------------------------------------------------------------------------
/**
 *
 *
 */
function sendXMLHttpRequest( method, url, async, callback, parameters )
{

	var xmlhttp = getXMLHTTPObject();

	var urlString = url;

	if ( method == 'get' )
		urlString += '?' + parameters;

	xmlhttp.open( method, urlString, async );

	xmlhttp.onreadystatechange = function()
	                             {
		                             if ( xmlhttp.readyState == 4 )
		                             {
			                             callback( xmlhttp );
		                             }
	                             }

	 if ( method == 'post' )
	 {
		 xmlhttp.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
		 xmlhttp.setRequestHeader( "Content-length", parameters.length );
		 xmlhttp.setRequestHeader( "Connection", "close" );
		 xmlhttp.send( parameters );

	 }
	 else
	 {
		 xmlhttp.send( null );
	 }
 }

 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
 function sendRequest( method, url, async, callback, parameters )
 {

	 var paramsString = "";

	 for (var i = 0; i < parameters.length ; i++ )
	 {

		 if ( i > 0 )
			 paramsString += "&";

		 var prm = parameters[ i ].split( "=" );

		 paramsString += prm[ 0 ] + "=" + encodeURIComponent( prm[ 1 ] );
	 }

	 sendXMLHttpRequest( method, url, async, callback, paramsString );
 }

 //---------------------------------------------------------------------------------------------
 /**
  * Form validation functions
  */ 
 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
 function RequiredFieldItem( name, errLabelMsg, label, reqType )
 {
	 this.name = name;
	 this.errLabel = errLabelMsg;
	 this.label = label;
	 this.reqType = reqType;
 }

 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
 function ClearErrors(fields,cleanCssClass)
 {
	 document.getElementById( 'errorMsg' ).style.display = 'none';
	 document.getElementById( 'missingMsg' ).style.display = 'none';
	 document.getElementById( 'formatMsg' ).style.display = 'none';
	 document.getElementById( 'fieldErrorList' ).innerHTML = '';

	 for ( var i = 0; i < fields.length; i++ )
	 {
		 var el = document.getElementById( fields[ i ].label + '_Label' );

		 if ( el != undefined && el != null )
		 {
			 el.className = cleanCssClass;
		 }
	 }
 }

 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
 function Trim( str )
 {
	 return str.replace( / ^ \s* / , "" ).replace( / \s*$ / , "" );
 }

 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
function NotifySubmit(formLoation,fieldList,fState)
{
	var parameters = new Array();
			
	parameters.push('formLocation='+formLoation);
	parameters.push('formState='+fState);
			
	for ( var i = 0; i < fieldList.length; i++ )
	{
		var field = fieldList[ i ];
		var el = document.getElementById( field.name );
		var val = null;

		if ( el.type == "select-one" ){
			 val = el.options[ el.selectedIndex ].value;
		}else if ( el.type == "radio" ){
			val = el.value;//just in case
			var rcount =  document.forms[0].FormMethod.length;
			var objectr = document.forms[0].FormMethod;
			var q = 0;
			for (q =0 ;  q < rcount; q++){
				if (objectr[q].checked == true){
					val = objectr[q].value;
					break //exist for loop, as target acquired.
				}
			}			 
		}else{
			 val = el.value;
		}
		/*fix for text area*/
		if(!el.type && el.name == 'description'){
			val = document.forms[0].description.innerHTML;
		}
		/**/
		if(el.type && el.type == "checkbox"){
			if(el.checked){
				val = "Yes";
			}else{
				val = "No";
			}
		}
		if(val == "")
			val = "empty";
		parameters.push('fieldLabel_'+i+'='+field.name);
		parameters.push('fieldValue_'+i+'='+val);
	}
	//alert(formLoation);
	sendRequest('post','/miscscripts/formMailer.php',false,null,parameters);
}
 //---------------------------------------------------------------------------------------------
 /**
  *
  *
  */
function NotifySubmitByFormName(formLoation,fieldList,fState,fName)
{
	var parameters = new Array();
			
	parameters.push('formLocation='+formLoation);
	parameters.push('formName='+fName);
	parameters.push('formState='+fState);
			
	for ( var i = 0; i < fieldList.length; i++ )
	{
		var field = fieldList[ i ];
		var el = document.getElementById( field.name );
		var val = null;

		if ( el.type == "select-one" ){
			 val = el.options[ el.selectedIndex ].value;
		}else{
			 val = el.value;
		}
		/*fix for text area*/
		if(!el.type && el.name == 'description'){
			val = document.forms[0].description.innerHTML;
		}
		/**/
		if(el.type && el.type == "checkbox"){
			if(el.checked){
				val = "Yes";
			}else{
				val = "No";
			}
		}
		if(val == "")
			val = "empty";
		parameters.push('fieldLabel_'+i+'='+field.name);
		parameters.push('fieldValue_'+i+'='+val);
	}
	//alert(formLoation);
	sendRequest('post','/miscscripts/formMailer.php',false,null,parameters);
}
/**
  *
  *
  */
function ValidateFormItems(form,fields,fieldList,badFormatList,labelClass,errorLabel)
{

	var reEmail = /^[\w._-]+@(([\w_-]+)\.)+[\w]{2,6}$/;
	var reZipCode = /^\d{5}(-\d{4}){0,1}$/;
	var reMonth = /^((0[1-9])|(1[0-2]))$/;
	var reDay = /^((0[1-9])|([1-2][0-9])|(3[0-1]))$/;
	var reYear = /^((19[0-9]{2})|20[0-9]{2})$/;
	var reNotEmpty = /^((.+)|(\\n))$/;


	fieldList.innerHTML = "";
	badFormatList.innerHTML = "";
	ClearErrors( fields, labelClass);

	var numMissing = 0;
	var numBadFormat = 0;

	var regexpToUse;
	for ( var i = 0; i < fields.length; i++ )
	{
		var req = fields[ i ];
		var el = document.getElementById( req.name );
		var val = null;


		if(req.reqType == "IsNotRequired")
			continue;
		


		
		if ( el.type == "select-one" ){
			 val = el.options[ el.selectedIndex ].value;
		}else{
			 val = el.value;
		}
		
		/*fix for text area*/
		if(!el.tagName && el.tagName == 'TEXTAREA'){
			val = el.innerHTML;
		}
		/**/
		
		if(req.reqType == "IsNotEmpty"){
			regexpToUse = reNotEmpty;
		}else if(req.reqType == "IsEmail"){
			regexpToUse = reEmail;
		}else if(req.reqType == "IsZipCode"){
			regexpToUse = reZipCode;
		}else if(req.reqType == "IsDateMonth"){
			regexpToUse = reMonth;
		}else if(req.reqType == "IsDateDay"){
			regexpToUse = reDay;
		}else if(req.reqType == "IsDateYear"){
			regexpToUse = reYear;
		}		
		
		//if(el.tagName && el.tagName == "TEXTAREA" && req.reqType == "IsNotEmpty"){
			
		if ((el.tagName && el.tagName != "TEXTAREA" && !regexpToUse.test( val ))||(el.tagName && el.tagName == "TEXTAREA" && req.reqType == "IsNotEmpty" && val == "")){
			
			if(req.reqType == "IsNotEmpty" || val == "")
				numMissing++;
			else
				numBadFormat++;
			var lbl = document.getElementById( req.label + "_Label" );

			if ( lbl != null && lbl != undefined )
			{
				lbl.className = errorLabel;
			}

			var newText = document.createTextNode( req.errLabel );
			var newNode = document.createElement( "li" );
			newNode.appendChild( newText );
			
			if(req.reqType == "IsNotEmpty" || val == "")
				fieldList.appendChild( newNode );
			else
				badFormatList.appendChild( newNode );

		}
	}

	if ( numMissing > 0 || numBadFormat > 0 ){
		document.getElementById( 'errorMsg' ).style.display = '';
		
		if ( numMissing > 0 ){
			document.getElementById( 'missingMsg' ).style.display = '';
		}
		
		if ( numBadFormat > 0 ){
			document.getElementById( 'formatMsg' ).style.display = '';
		}
		
		window.scrollTo( 0, 0 );
		return false;
	}else{
		return true;
	}
}

function ValidateMails(fieldEmail, fieldEmailConf)
{
	var ret = true;
	var reEmail = /^[\w._-]+@(([\w_-]+)\.)+[\w]{2,6}$/;
	
	if(reEmail.test(fieldEmail.value) && reEmail.test(fieldEmailConf.value) && fieldEmail.value != fieldEmailConf.value)
		ret = false;
		
	return ret;
}
