/************
 *
 *		validators.js 
 *
 *		Last Modified: 10/04/2006 
 *
 *		Change Log:	
 *				10/04/2006	added SSNToString() function to display the number like 555-22-4545
 *
 */

////////////////////////////////
//		COMMON FUNCTIONS
////////////////////////////////

function isDigit( c ) 
{
	var digits = "0123456789";
	return (c.length == 1 && digits.indexOf( c ) != -1);
}

function getDigits( txt ) 
{
	var chr; 
	var num = "";
	for (var i = 0; i < txt.length; i++) 
	{
		chr = txt.charAt(i);
		if (isDigit( chr )) num += chr; 
	}
	return num;
}	

function AllCharsTheSame( str ) 
{
	var num = 1;
	var chr = str.charAt(0);

	for (var i = 1; i < str.length; i++) 
	{	
		if (chr == str.charAt(i)) 
			num++;
		else 
			break;
	}
	return (num == 9);
}

/////////////////////////////////////////
//		Social Security Number (SSN)
/////////////////////////////////////////

function CheckSSN( elm )
{
	if (!SSNIsValid( elm.value )) 
	{
		window.alert("Social Security Number is invalid.\nPlease, check it again.");
		elm.focus();
		return false;
	}
	return true;
}

function SSNIsValid( txt ) 
{
	var isValid = false;	
	if (txt.length >= 9) 
	{
		var ssn = getDigits( txt );
		if (ssn.length == 9 && !SSNIsRejected( ssn ) && !AllCharsTheSame( ssn )) 
		{
			var area   = ssn.substr(0,3);
			var group  = ssn.substr(3,2);
			var serial = ssn.substr(5,4);
			
			if (!SSNAreaIsNeverUsed( area ) && serial != "0000") 
			{
				isValid = true;
			
				// Advanced validation comes here ...
			}
		}
	}
	return isValid;
}

function SSNToString( txt ) 
{
	var str = txt;
	if (txt.length >= 9) 
	{
		var ssn = getDigits( txt );
		if (ssn.length == 9) 
		{
			var area   = ssn.substr(0,3);
			var group  = ssn.substr(3,2);
			var serial = ssn.substr(5,4);
			
			str = area + "-" + group + "-" + serial;
		}
	}
	return str;
}

function SSNIsRejected( ssn ) 
{
	var rejected = ["123456789","078051120"];
	var res = false;

	for (var i = 0; i < rejected.length; i++) 
	{
		if (ssn == rejected[i]) 
		{
			res = true;
			break;
		}
	}
	return res;
}

function SSNAreaIsNeverUsed( area )
{
	var res = (area.charAt(0) == "9");
	if(!res)
	{
		var rejected = ["000","666"];
		for (var i = 0; i < rejected.length; i++) 
		{
			if (area == rejected[i]) 
			{
				res = true;
				break;
			}
		}
	}
	return res;
}

/////////////////////////////////////////
//		Phone Number
/////////////////////////////////////////

function CheckPhone( elm )
{
	if (!PhoneIsValid( elm.value )) 
	{
		window.alert("Phone Number is invalid.\nIt should contains at least 10 digits: (area code + number).\nPlease, include your country code if you are outside of the USA or Canada.");
		elm.focus();
		return false;
	}
	return true;
}

function PhoneIsValid( txt ) 
{
	var isValid = false;	
	if (txt.length >= 10)
	{
		var num = getDigits( txt );
		if (num.length >= 10)
		{
			var pos   = 0;
			var extra = "";
			if (num.length > 10)
			{
				pos    = num.length - 10;
				extra  = num.substr(0,pos);
			}
			var area   = num.substr(pos,3);
			var number = num.substr(pos+3,7);
			
			if (area.charAt(0) != "0" && number.charAt(0) != "0") 
			{
				isValid = true;
			
				// Advanced validation comes here ...
			}
		}
	}
	return isValid;
}

function PhoneToString( txt ) 
{
	var str = txt;	
	if (txt.length >= 10)
	{
		var num = getDigits( txt );
		if (num.length >= 10)
		{
			var pos   = 0;
			var extra = "";
			if (num.length > 10)
			{
				pos    = num.length - 10;
				extra  = num.substr(0,pos);
			}
			var area   = num.substr(pos,3);
			var number = num.substr(pos+3,7);
			
			str = ((extra != "") ? extra + " - " : "") + "(" + area + ")" + " " + number.substr(0,3) + " - " + number.substr(3,4);
		}
	}
	return str;
}

function CheckSubmission()
{
var formObj = self.document.forms['saveForm'];
	if(formObj == null) {
		formObj = self.document.forms['fsave'];
	}
	var selectElement = formObj.elements['ManagerInformed'][0];
    if(selectElement.checked == true)
    {
    document.getElementById('Submission').style.display = '';
     }
     else
     {
      document.getElementById('Submission').style.display = 'none';
     }
}

function CheckAuthorized()
{
var formObj = self.document.forms['saveForm'];
	if(formObj == null) {
		formObj = self.document.forms['fsave'];
	}
	var selectElement = formObj.elements['appq_23'];
	var selIndex = selectElement.selectedIndex;
	var selValue = selectElement.options[selIndex].value;
//alert(selValue);
	    if (selValue == 10)  {
		document.getElementById('tr_appq_26').style.display = '';
		document.getElementById('tr_appq_25').style.display = '';
		//formObj.elements['appq_26'].title = 'Specify School(s) and Major(s)';
		}
		
		else {
		document.getElementById('tr_appq_26').style.display = 'none';
		document.getElementById('tr_appq_25').style.display = 'none';
		formObj.elements['appq_26'].title = '';
		formObj.elements['appq_25'].title = '';
			}
}

function limitTextArea(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } 
}
