/// Upload Progress Bar
function uploadProgress(){
	document.all("formDiv").style.display = "none";
	document.all("progressDiv").style.display = "";
	window.setTimeout("StartAnimation()",100);
}
function StartAnimation()
{
			document.images['progress_indicator'].src = document.images['progress_indicator'].src;
}
/// Tribesoft Open Popup Window

var hK;
function tribeOpen(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" || obj.value != "") {
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 + "\nOnly these files 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(hkGoodNumbers);
			msg += '\nBe sure you are only using numbers';
			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
}

//
	// Check For Numbers
	// If not, it displays the error message,
	// focuses the control	and returns false
	// 
function checkQty(obj,msg,req) {
		if (!checkQtyChar(obj,req)){
			//alert(hkGoodNumbers);
			msg += '\nBe sure you are only using whole numbers';
			alert(msg);
			obj.focus();
			return false;
		};
		return true;
	};
	
function checkQtyChar(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)
		/// Use This for the States
		var strMonth=sDateString.substring(0,pos1)
		var strDay=sDateString.substring(pos1+1,pos2)
		/// Use This for Europe
		//var strMonth=sDateString.substring(pos1+1,pos2)
		//var strDay=sDateString.substring(0,pos1)
		
		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 : dd/mm/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;   
}



function compareDate(date1,date2,msg)
{
	// date1 and date2 must be validated before send, required format is "mm/dd/yyyy"
	var X1 = date1.value
	X1 = X1.split('/')
	X1 = -((-X1[2]*100-X1[0])*100-X1[1])
	// -((-X2[2]*100-X2[1])*100-X2[0]) use this formula for "dd/mm/yyyy"
	var X2 = date2.value
	X2 = X2.split('/')
	X2 = -((-X2[2]*100-X2[0])*100-X2[1])
	// -((-X2[2]*100-X2[1])*100-X2[0]) use this formula for "dd/mm/yyyy"
	if (X1<=X2)
		return true;	
	else
		alert(msg);
		date2.focus();
		return false;
}


