// JavaScript Document

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function ValidateForm(f)
{
	
	var errorStr = "";
	var errorHeader = "Before continuing you must enter information into the required fields.\n";
	errorHeader += "Please review the list below and enter the proper informtion in those fields\n\n";
		
	//errorStr += checkTextFields(f.FirstName.value, "First Name");
	//errorStr += checkTextFields(f.LastName.value, "Last Name");
	//errorStr += checkGender(f);
	errorStr += checkTextFields(f.Company.value, "Company");
	//errorStr += checkEmail(f.Email.value);
	//errorStr += checkPhone(f.Phone.value);
	errorStr += checkTextFields(f.Job.value, "Job Name");
	
	errorStr += checkPrescreens(f);
	
	if(errorStr != "")
	{
		errorHeader += errorStr;
		alert(errorHeader);
		return;
	}
	f.submit();
}



function checkTextFields(strFieldValue, strFieldLabel)
{
	var error = "";
	if(strFieldValue == "")
	{
		error = "- " + strFieldLabel + " not entered.\n";
	}

	return error;
}


function checkPhone(strFieldValue)
{
	var error = "";
  	var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;

  	//check for valid us phone with or without space between area code
  	if(! objRegExp.test(strFieldValue))
  	{
  		error = "- Phone number format incorrect. Format is (000)000-0000 or (000) 000-0000\n"; 
  	}  	
  	return error;
}
function checkGender(formObj)
{
	var error ="";
	if((!formObj.Gender[0].checked) && (!formObj.Gender[1].checked))
	{
		error = "- Gender not selected. \n";
	}
	return error;	
}

function checkPrescreens(formObj)
{
	var error ="";
	var currOption = "";
	var numQuestion = 0;
	var numCheckedResp = 0;
	
	for(i=0; i < formObj.elements.length; i++)
	{
		if(formObj.elements[i].type == "radio")
		{
			if(formObj.elements[i].name == currOption)
			{	
				if(formObj.elements[i].checked)
				{
					numCheckedResp++;
				}
				
			}else{
				if(formObj.elements[i].checked)
				{
					numCheckedResp++;
				}			
				currOption = formObj.elements[i].name;
				numQuestion++;				
			}
		}
	}
	if(!(numQuestion == numCheckedResp))
	{
		error = "- All prescreen questions must be answered.\n";
	}	
	return error;
}

function checkEmail(str) 
{
 	// are regular expressions supported?
 	var error = "";
  	var supported = 0;
  	if (window.RegExp) 
  	{
   		var tempStr = "a";
    		var tempReg = new RegExp(tempStr);
    		if (tempReg.test(tempStr)) supported = 1;
  	}
  
  	if (!supported) 
    		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
    		
  	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  	
  	if(!r1.test(str) && r2.test(str))
  	{
  		error = "";
  	}else{
  		error = "- E-Mail address not valid. \n";
  	}
  	return error;
}

function isInteger(s)
{
	var i;
    	for (i = 0; i < s.length; i++)
    	{   
        	// Check that current character is number.
        	var c = s.charAt(i);
        	if (((c < "0") || (c > "9")))
        	{
        		return false;
        	}
    	}
    	// All characters are numbers.
    	return true;
}

function stripCharsInBag(s, bag)
{
	var i;
    	var returnString = "";
    
    	// Search through string's characters one by one.
    	// If character is not in bag, append to returnString.
    	for (i = 0; i < s.length; i++)
    	{   
        	var c = s.charAt(i);
       		if (bag.indexOf(c) == -1)
       		{
       			returnString += c;
       		}
    	}
    	return returnString;
}

function daysInFebruary (year)
{
	// February has 29 days in any year evenly divisible by four,
    	// EXCEPT for centurial years which are not also divisible by 400.
    	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) 
{
	for (var i = 1; i <= n; i++) 
	{
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) 
		{
			this[i] = 30;
		}
		
		if (i==2) 
		{
			this[i] = 29;
		}
   	} 
   	return this;
}

function isDate(dtStr,strFieldLabel)
{
	var error = "";
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(0,pos1);
	var strDay=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	
	strYr=strYear;
	
	if (strDay.charAt(0)=="0" && strDay.length>1)
	{
		strDay=strDay.substring(1);
	}
	
	if (strMonth.charAt(0)=="0" && strMonth.length>1)
	{
		strMonth=strMonth.substring(1);
	}
	
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	
	if (pos1==-1 || pos2==-1)
	{
		error = "-" + strFieldLabel + " The date format should be : mm/dd/yyyy\n";
	}
	
	if (strMonth.length<1 || month<1 || month>12)
	{
		error += "-" + strFieldLabel + " Please enter a valid month\n";
	}
	
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
	{
		error += "-" + strFieldLabel + " Please enter a valid day.\n";
	}
	
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
	{
		error += "-" + strFieldLabel + " Please enter a valid 4 digit year between " + minYear + " and " + maxYear + "\n";
	}
	
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
	{
		error += "-" + strFieldLabel + " Please enter a valid date\n";
	}
	return error;	
}

function checkSSN(strCheckSSN)
{
	var error = "";
	
	if( (!(isInteger(strCheckSSN))) || (strCheckSSN == ""))
	{
		error = "- Social Sec. # incorrect format (Numbers only)\n";
	}
	return error;
}

function numbersOnly(e)
{
	var key = window.event ? e.keyCode : e.which;
	var keyChar = String.fromCharCode(key);
	regExp = /\d/;
	return regExp.test(keyChar);
}
function moneyOnly(e)
{
	var key = window.event ? e.keyCode : e.which;
	var keyChar = String.fromCharCode(key);
	regExp = /[0-9\.]/;
	return regExp.test(keyChar);
}