// Validate Download Edit Form

function checkDownloadEdit(theForm)

{

if (!checkPullDown(theForm.iCatId,"Please select an option from the \"Category\" field!", "yes"))	{

	return false;

}

if (!checkText(theForm.sTitle,"Please fill in the \"Title\" field!", "yes"))	{

	return false;

}

if (!checkFileExt(theForm.sLink,"Please fill in the \"Download\" field!","wma,pdf,mp3,doc,txt", "no"))	{

	return false;

}

return true;

}

// Validate Download Edit Form



// Validate Download  Form

function checkDownload(theForm)

{

if (!checkPullDown(theForm.iCatId,"Please select an option from the \"Category\" field!", "yes"))	{

	return false;

}

if (!checkText(theForm.sTitle,"Please fill in the \"Title\" field!", "yes"))	{

	return false;

}

if (!checkFileExt(theForm.sLink,"Please fill in the \"Download\" field!","wma,pdf,mp3,doc,txt", "yes"))	{

	return false;

}

return true;

}

// Validate Download Form





// Validate Contact Form

function checkContact(theForm)

{

if (!checkText(theForm.name,"Please fill in the \"Name\" field!", "yes"))	{

	return false;

}

if(!checkPhone(theForm.phone1, theForm.phone2, theForm.phone3, "Phone" ,"no")) {

	return false;

	}

if (!checkEmail(theForm.email,"Please fill in the \"Email\" field!", "yes"))	{

	return false;

}

return true;

}

// Validate Contact Form





/////////// Begin Functions //////////////////





///

/// Open Window Function

///

var hK;

function hkOpen(winurl,winname,winfeatures)

{

	hK = window.open(winurl,winname,winfeatures);

 	setTimeout('hK.focus();',250);

}

///

/// Check File Extension

///

function checkFileExt(obj,msg,ext,req){

// If Field Is Empty

if (req == "yes") {

file = obj.value

var file_ext = file.substring(file.lastIndexOf('.')+1, file.length);

//alert("file ext: " + file_ext)

var arr_ext = ext.split(',');

var matched = false;

for (var i=0; i<arr_ext.length; i++)

{

	//alert("file ext: " + file_ext + "\t array: " + arr_ext[i]);

	if(file_ext.toLowerCase() == arr_ext[i].toLowerCase())

	{

		matched = true;

	}

}



if (matched == false){

	alert(msg + "\nThese file types are allowed \"" + ext + "\"");

	obj.focus();

	return false;

}

}

return true;

}







///

///Check Check Box

// If not, it displays the error message,

// focuses the control	and returns false

// 

function checkBox(obj, msg, req)

	{

	if (req == "yes") {

		if (obj.checked==false)

		{ 	alert(msg);

			obj.focus();

			return false;

		}

		}

		return true;

	}

	

	//

	// Check For Numbers

	// If not, it displays the error message,

	// focuses the control	and returns false

	// 

function checkNumbers(obj,msg,req) {

		if (!checkNumChar(obj,req)){

			alert(msg);

			obj.focus();

			return false;

		};

		return true;

	};

	

function checkNumChar(obj,req) {

var valid = 1

var hkGoodNumbers = "0123456789,."

var i = 0



if (obj.value=="" && req == "yes") {

valid = 0

}



for (i =0; i <= obj.value.length -1; i++) {

if (hkGoodNumbers.indexOf(obj.value.charAt(i)) == -1) {

valid = 0

}

}

return valid

}

	

	//

	//

	// this function checks to see if the valid form of email address has been entered,

	// If not, it displays the error message,

	// focuses the control	and returns false

	// 



	function checkEmail(obj,msg,req) {

	if (req == "yes" || obj.value != ""){

			if (!checkEmailChar(obj)){

			alert(msg);

			obj.focus();

			return false;

		}

		}

		return true;

	};



	function checkEmailChar(obj) {

		invalidChars=" /:,;";

		for (i=0; i<invalidChars.length;i++){

			badChar = invalidChars.charAt(i);

				if (obj.value.indexOf(badChar,0) !=-1) {

					return false;

				};

		};

		atPos = obj.value.indexOf("@", 1);

		if (atPos == -1){

					return false;

		};

		if (obj.value.indexOf("@",atPos+1)!= -1){

					return false;

		};

		dotPos = obj.value.indexOf(".", atPos);

		if (dotPos <=0){

					return false;

		};

		if (dotPos+3 > obj.value.length){

					return false;

		};



		return true;

	};



	// 

	// this function checks to see if a radio-button has not been selected

	// If not, it displays the error message,

	// focuses the control	and returns true

	// 



	function checkRadio(obj,msg, req)	{

	if (req == "yes"){

	var itemchecked = false;

		for(var j = 0 ; j < obj.length ; ++j)

		{	if(obj[j].checked)

			{	itemchecked = true;

				break;

			};

		};

		if(!itemchecked)

		{ 	alert(msg);

			obj[0].focus()

			return false;

		}

		}

		return true;



	};



	// 

	// this function checks to see if a pull-down has not been selected

	// past the first item OR if the value option selected is '0' or '',

	// If not, it displays the error message,

	// focuses the control	and returns false

	// 

	function checkPullDown(obj,msg,req) {

	if (req == "yes") {

		if (obj.selectedIndex==0 || obj.options[obj.selectedIndex].value=='0' || obj.options[obj.selectedIndex].value=='') {

			alert(msg);

			obj.focus();

			return false;

		}

		}

		return true;

	};



	// 

	// this function checks to see whether a text input or textarea

	// is blank or is all white space.

	// If so, it displays the error message,

	// focuses the control	and returns false

	// 

	function checkText(obj,msg,req) {

		var str = obj.value+'';

		var allWhite = true;

		//var whiteTrail;

		for(var c=0; c<str.length; c++) {

			if (!isWhite(str.charAt(c))) allWhite=false;

		//	if (c=str.length) && (isWhite(str.charAt(str.length)))

		};

if (req == "yes"){

		if (allWhite || str=='') {

			obj.value="";

			alert(msg);

			obj.focus();

			return false;

		}

		}

			remove_XS_whitespace(obj);

		return true;

	};

	// 

	// this function checks to see whether a text input or textarea

	// is blank or is all white space.

	// If it is all white space, it cleans it out and return true

	// 

	function cleanNonRequiredText(obj) {

		var str = obj.value+'';

		var allWhite = true;

		for(var c=0; c<str.length; c++) {

			if (!isWhite(str.charAt(c))) {

				allWhite=false; 

			};

		}

		if (allWhite || str=='') {

			obj.value="";

			return true;

		}else{

			remove_XS_whitespace(obj);

			return false;		

		};

	};



	// 

	// this function checks to see whether a text input or textarea

	// is blank or is all white space.

	// If so, it displays the error message,

	// focuses the control	and returns true

	// It also checks the number of chars and displays the too many

	// chars message if that is exceeded

	// 

	function checkTextArea(obj,msg,max,msgmax,req) {

	

	if (req == "yes" || obj.vaulue != ""){

		var str = obj.value+'';

		if (str.length>max) {

			alert(msgmax + ' [There are currently '+str.length+' characters]');

			obj.focus();

			return false;

		};

		}

		var allWhite = true;

		for(var c=0; c<str.length; c++) {

			if (!isWhite(str.charAt(c))) allWhite=false;

		}

		if (allWhite || str=='') {

			obj.value="";

			alert(msg);

			obj.focus();

			return false;

		};

		return true;

	};

	// 

	// this function checks to see whether a text input 

	// contains " or '.

	// If so, it displays the error message,

	// focuses the control	and returns false

	// 

	function checkQuoteMark(obj, msg)

	{

		if ((obj.value.indexOf('"') >= 0) || (obj.value.indexOf("'") >= 0))

		{ 	alert(msg);

			obj.focus();

			return false;

		};

		

		return true;

	};





	function checkMax(obj,max,msgmax) {

		var str = obj.value+'';

		if (str.length>max) {

			alert(msgmax + ' [There are currently '+str.length+' characters]');

			obj.focus();

			return false;

		};

		return true;

	};

	

	// 

	// These functions check to see if the text field 

	// contains a valid date

	// If not, they display an error message,

	// focus the control and return false.

	// 

	// Declaring valid date character, minimum year and maximum year

	var dtCh= "/";

	var minYear=1900;

	var maxYear=2100;



	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 checkDate(obj,req){

	

	if (req == "yes" || obj.value != "") {

		sDateString = obj.value

		var daysInMonth = DaysArray(12)

		var pos1=sDateString.indexOf(dtCh)

		var pos2=sDateString.indexOf(dtCh,pos1+1)

		var strMonth=sDateString.substring(0,pos1)

		var strDay=sDateString.substring(pos1+1,pos2)

		var strYear=sDateString.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){

			alert("The date format should be : mm/dd/yyyy")

			obj.focus()

			return false

		}

		if (strMonth.length<1 || month<1 || month>12){

			alert("Please enter a valid month")

			obj.focus()

			return false

		}

		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){

			alert("Please enter a valid day")

			obj.focus()

			return false

		}

		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){

			alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)

			obj.focus()

			return false

		}

		if (sDateString.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(sDateString, dtCh))==false){

			alert("Please enter a valid date")

			obj.focus()

			return false

		}

		}

	return true

	}

	

	function isWhite(ch) {

		if (ch==' ' || ch=='	' || ch=="\n" || ch=="\r") return true;

		return false;

	};





function remove_XS_whitespace(obj)

{

  var tmpStr = "";

  var obj_length = obj.value.length;

  var obj_length_minus_1 = obj.value.length - 1;

  for (i = 0; i < obj_length; i++)

  {

    if (obj.value.charAt(i) != ' ')

    {

      tmpStr += obj.value.charAt(i);

    }

    else

    {

      if (tmpStr.length > 0)

      {

        if (obj.value.charAt(i+1) != ' ' && i != obj_length_minus_1)

        {

          tmpStr += obj.value.charAt(i);

        }

      }

    }

  }

  obj.value = tmpStr;

};





function checkPhone(area, prefix, number, type, req)

{   

if (req == "yes" || area.value != "" || prefix.value != "" || number.value != ""){

    if (area.value.length != 3)

    {

      alert(type + " - area code is required");

      area.focus();

      return false;

    }

    if (prefix.value.length != 3)

    {

      alert(type + " - 3 digit prefix is required");

      prefix.focus();

      return false;

    }

    if (number.value.length != 4)

    {

      alert(type + " - 4 digit number is required");

      number.focus();

      return false;

    }

 

   if (isAllDigits(area.value) == false)

    {

      alert(type + " must be all numbers");

      area.focus();

      return false;

    }

    if (isAllDigits(prefix.value) == false)

    {

      alert(type + " must be all numbers");

      prefix.focus();

      return false;

    }

    if (isAllDigits(number.value) == false)

    {

      alert(type + " must be all numbers");

      number.focus();

      return false;

    }

	}

    return true;

}



function isAllDigits(s)

{

   var test = "" + s;

   for (var k=0; k < test.length; k++)

   {

     var c = test.substring(k, k+1);

     if (isDigit(c) == false)

      {  

         return false; 

      }

   }

   return true;

}



function isDigit(c)

{

   var test = "" + c;

   if (test == "0" || test =="1" || test =="2" || test == "3" ||

       test == "4" || test =="5" || test =="6" || test == "7" ||   

       test == "8" || test =="9")

   { 

      return true; 

   }

   return false;   

}


