
// Validate Shop Product Form
function checkProduct(theForm)
{
if (!checkText(theForm.sTitle,"Please fill in the \"Product Title\" field!", "yes"))	{
	return false;
}
if (!checkText(theForm.sBody,"Please fill in the \"Product Description\" field!", "no"))	{
	return false;
}
if (!checkNumbers(theForm.mPrice,"Please fill in the \"Price\" field!", "yes"))	{
	return false;
}

if (theForm.iSale.value == "1"){
	if (!checkNumbers(theForm.mSalePrice,"Please fill in the \"Sale Price\" field!", "yes"))	{
	return false;
}
}


if (!checkFileExt(theForm.sImg,"Please fill in the \"Sub Category Image\" field!","gif,jpg,jpeg", "no"))	{
	return false;
}
return true;
}
// Validate Shop Product Form

/// Function used to delete Shop Category
function deleteShop(id,iLine) {
	if(window.confirm("Do you really want to delete this Item?")) {
		document.location.href = "secure_shop_edit_pro.asp?action=delete&id=" + id + "&iLine=" + iLine
	}
}

// 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,mov", "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,mov", "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;   
}

