// ***************** Error Object
function ErrorObject(){
	this.errorList = new Array();
	this.errorCount = 0;
	this.hasError=false;
	this.AddError= AddError;
	this.ShowError = ShowError;
	this.ClearError=ClearError;
}

function AddError(errorObject,error){
	errorObject.errorCount++;
	errorObject.errorList[errorObject.errorCount] = error;
	errorObject.hasError=true;
	//alert(errorObject.errorCount +	error);

}
function CheckError(errorObject){
		if (errorObject.errorCount>0){
				return true;
		}else{
				return false;
		}
}

function ShowError(errorObject){
	var errStr = "";
	for(i=1;i<= errorObject.errorCount;i++){
		errStr =errStr + errorObject.errorList[i] + "\n";
	}
	alert(errStr);
}

function ClearError(errorObject){
	errorObject.errorCount=0;
	errorObject.hasError=false;
}

// ***************** End Error Object




function isCharsInBag (s, bag)
{
  var i;
  for (i = 0; i < s.length; i++)
  {
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if (bag.indexOf(c) == -1) return false;
  }
  return true;
}

function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{
  var whitespace = " \t\n\r";
  var i;
   for (i = 0; i < s.length; i++)
   {
	var c = s.charAt(i);
       if (whitespace.indexOf(c) >= 0)
	   {
		  return true;
	   }
   }
   return false;
}
function CheckMail (s){

    if (isEmpty(s))
	{
		return false;
	}
    if (isWhitespace(s))
	{
		return false;
	}

   var i = 1;
   var len = s.length;


	//if (len > 30)
	//{
	//	return false;
	//}

	pos1 = s.indexOf("@");
	pos2 = s.indexOf(".");
	pos3 = s.lastIndexOf("@");
	pos4 = s.lastIndexOf(".");
	if ((pos1 <= 0)||(pos1 == len)||(pos2 <= 0)||(pos2 == len-1))
	{
		return false;
	}
	else
	{
		if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1)
		  || ( pos1 != pos3 )  //find two @
		  || ( pos4 < pos3 ))  //. should behind the '@'

		{
			return false;
		}
	}
	if ( !isCharsInBag( s, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@"))
	{
		return false;
	}
	return true;
}

function CheckAll(call,citem){
	if (citem!=null){
			if (citem.length==null)	{
					citem.checked=call.checked;
			}else{
					for (var i=0;i< citem.length;i++)
					{
						citem[i].checked=call.checked;
					}
			}
	}
}

function checkedCount(cb){
	var count;
	count=0;
	if (cb!=null){
			if (cb.length==null){
				if (cb.checked) count++;
			}else{
				for (var i=0;i< cb.length;i++){
						if (cb[i].checked) count=count+1;
				}
			}
	}
	return count;
}

function CheckRadio(radio){
 	var flag = false;
	if (radio!=null){
		count=checkedCount(radio);
		if (count>0) flag = true;
	}
	return flag;
 }
 

 
 
function CheckStringValidChars(s, bag){
	return isCharsInBag (s, bag);
}


function CheckStr(s, min,max){
		var len = s.length;
		if ((len<min)||(len>max)){
			return false;
		}
			return true;
}

function CheckInteger(s){
							var  vv=s%1;
							if((s>0)||(vv==0))       return true;
							 else{
								return false;
							}
}

function CheckBlank(s)
{
	if ((s == null) || (s.length == 0)){
		 return true;
	}
	return false;
}





function CheckMonthDay(Month,date){
         if(Month==1)
			 var D=31;
		 else if(Month==3)
			 var D=31;
		 else if(Month==4)
			 var D=30;
		 else if(Month==5)
			 var D=31;
		 else if(Month==6)
			 var D=30;
		 else if(Month==7)
			 var D=31;
		 else if(Month==8)
			 var D=31;
		 else if(Month==9)
			 var D=30;
		 else if(Month==10)
			 var D=31;
		 else if(Month==11)
			 var D=30;
		 else if(Month==12)
			 var D=31;

		 if(date>D)
			 return false;
		 else
			 return true;

}

function isCharsInBag (s, bag)
{
  var i;
  for (i = 0; i < s.length; i++)
  {
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if (bag.indexOf(c) == -1) return false;
  }
  return true;
}



function CheckDate(s,type){
		type=type.toUpperCase();
		if(s.length<8){
			return false;
		}
		if(type.length>10){
			return false;
		}
		if(s.length>10){
			return false;
		}

		var validChar = "0123456789/-";
		var Char="YMDymd/-";
		if ((!isCharsInBag(s, validChar))||(!isCharsInBag(type,Char)))
		  {
			return false;
		  }
		var delim;
		var delimt;
		if(((s.indexOf("/")!=-1)&&(s.indexOf("-")!=-1))||((type.indexOf("/")!=-1)&&(type.indexOf("-")!=-1))) {
			  return false;
		}
		if(type.indexOf("/")==-1)
			delimt="-";
		else
			delimt="/";
		if(type.indexOf(delimt)==0||type.indexOf(delimt,(type.indexOf(delimt)+1))==type.length){
				return false;
		}
		if(s.indexOf("/")==-1)
				delim="-";
		else
				 delim="/";
		if(s.indexOf(delim)==0 || s.indexOf(delim,(s.indexOf(delim)+1))==s.length){
				return false;
		}
		else if((Math.abs(s.indexOf(delim)-s.indexOf(delim,s.indexOf(delim)+1))==1)||(Math.abs(type.indexOf(delimt)-type.indexOf(delimt,type.indexOf(delimt)+1))==1))
		{
		   		  return false;
		}
		else{


			 var thisYear=0;
			var thisMonth=0;
			var thisDate=0;
			var indexY=type.indexOf("YYYY");
			var indexM=type.indexOf("MM");
			var indexD=type.indexOf("DD");

			var H=parseInt(s.substring(0,s.indexOf(delim)));
			var M=parseInt(s.substring(s.indexOf(delim)+1,s.indexOf(delim,s.indexOf(delim)+1)));
			var L=parseInt(s.substring((s.indexOf(delim,s.indexOf(delim)+1))+1,s.length));
			 if((indexY>indexM)&&(indexM>indexD)){
				   thisYear=L;
				   thisMonth=M;
				   thisDate=H;
				}
			   else if((indexY>indexD)&&(indexD>indexM)){
				    thisYear=L;
				   thisMonth=H;
				   thisDate=M;
			   }
			   else if((indexD>indexM)&&(indexM>indexY)){
			       thisDate=L;
				   thisMonth=M;
				   thisYear=H;
			   }
			   else if((indexM>indexD)&&(indexD>indexY)){
			       thisMonth=L;
				   thisDate=M;
				   thisYear=H;
			   }
			   //alert(thisYear);
			   //alert(thisMonth);
			   //alert(thisDate);
			   if (thisMonth==2){
					if ((((thisYear % 4 == 0) && !	(thisYear % 100 == 0)) ||(thisYear % 400 ==0))&& thisDate>29){
						return false;
					 } else if(thisDate>28){
						return false;
					}

				}
				if(!CheckMonthDay(thisMonth,thisDate))
					return false;
				if(thisMonth>12){

							return false;
				}
				else{
							return true;
				}

		 }
 }




function fieldValToDate(s,type){
			type=type.toUpperCase();
			var delim;
			var delimt;
			if(type.indexOf("/")==-1)
				delimt="-";
			else
				delimt="/";
			if(s.indexOf("/")==-1)
					delim="-";
			else
					 delim="/";

			var thisYear=0;
			var thisMonth=0;
			var thisDate=0;
			var indexY=type.indexOf("YYYY");
			var indexM=type.indexOf("MM");
			var indexD=type.indexOf("DD");

			var H=s.substring(0,s.indexOf(delim));
			var M=s.substring(s.indexOf(delim)+1,s.indexOf(delim,s.indexOf(delim)+1));
			var L=s.substring((s.indexOf(delim,s.indexOf(delim)+1))+1,s.length);
			//alert(M.length);
			if (M.length>1 && M.substring(0,1)=="0"){
				M=M.substring(1);
			}
			if (H.length>1 && H.substring(0,1)=="0"){
				H=H.substring(1);
			}				
			if (L.length>1 && L.substring(0,1)=="0"){
				L=L.substring(1);
			}
			
			H=parseInt(H);
			M=parseInt(M);
			L=parseInt(L);
												
			if((indexY>indexM)&&(indexM>indexD)){
			   thisYear=L;
			   thisMonth=M;
			   thisDate=H;
			}else if((indexY>indexD)&&(indexD>indexM)){
				thisYear=L;
			   thisMonth=H;
			   thisDate=M;
		   	}else if((indexD>indexM)&&(indexM>indexY)){
			   thisDate=L;
			   thisMonth=M;
			   thisYear=H;
		   	}else if((indexM>indexD)&&(indexD>indexY)){
			   thisMonth=L;
			   thisDate=M;
			   thisYear=H;
		   	}

			   //alert (thisYear);
			   //alert (thisMonth);
			   //alert (thisDate);
				var d1 = new Date();
			    d1.setMonth((thisMonth-1));
				d1.setDate(thisDate);
				d1.setYear(thisYear);
				//alert(d1);
				return d1;
}
function isSmallerDate(d1,d2){
	var dd1=fieldValToDate(d1,"YYYY/MM/DD");
	var dd2=fieldValToDate(d2,"YYYY/MM/DD");
	//alert (dd1);
	//alert (dd2);
	return(dd1<dd2);
}


function checkedCount_inputandhidden(cb){
	var count;
	count=0;
	if (cb!=null){
			if (cb.length==null){
						if(cb.type=="hidden"){
							 count=count+1;
						}else{
							if (cb.checked) count++;
						}
			}else{
				for (var i=0;i< cb.length;i++){
						if(cb[i].type=="hidden"){
							 count=count+1;
						}else{
								if (cb[i].checked) count=count+1;
						}


				}
			}
	}
	return count;
}

 function getRadioValue(radio){
  	var rstr = null;
 	if (radio!=null){	
		if (radio.length==null){
			if (radio.checked) rstr = radio.value;
		}else{
			for (var i=0;i< radio.length;i++){
					if (radio[i].checked) rstr = radio[i].value;
			}
		} 	
 	}
 	return rstr;
 }
 