﻿//Functions for Validation
function isPageValid(paramGroup, dateFormat)
{
  obj = new Object();
  obj.msg = "";
  var objValid = true;
  var theform = document.forms[0];

  for( var i=0; i<theform.elements.length; i++ )
  {
    var isValid = true;
    eName = theform.elements[i].name;
    type = theform.elements[i].ValidateType;
    isReq = theform.elements[i].isReq;
    description = theform.elements[i].Description;
    // for checking the select dropdown value
    if (theform.elements[i].tagName=="SELECT")
        eValue = theform.elements[i].options[theform.elements[i].options.selectedIndex].value;
    else        
        eValue = theform.elements[i].value;
    
    // ensure the element is existed
    if( eName && eName != '')
    {
      if( eName == '__EVENTTARGET' || eName == '__EVENTARGUMENT' || eName == '__VIEWSTATE' )
      {
        // Do Nothing
      }
      else
      {
        // Only check the elements in the same web control with the submit button
        if (isUndefined(paramGroup) || paramGroup=='' || (paramGroup && paramGroup!='' && theform.elements[i].ValidateGroup==paramGroup))
        {
            // Check the field is required or not            
          if (isReq && isReq=='true')
            isValid = !isUndefined(eValue) && eValue!='';
          if(!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " is Required";}
          
            // Check the field value if the validateType is defined            
          if (isValid && type && type != '')
          {
            // check text field
            if (type.substr(0,4)=="text")
            {
              isValid=isString(eValue);
              if(!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " Accept Text Only"}

              // Check text length will be done by the EXTextBox Maxlength property and it will set in ucBaseEdit automatically  
              /*
              if(isValid)
                  switch (type)
                  {
                      case "text10":
                        isValid=eValue.length<=10;
                        if(!isValid) {obj.msg="Accept text not longer than 10 characters"};
                        break;
                      default:
                        break;
                  }
                */  
            }
            // check numeric field
            else if (type.substr(0,3)=="num")
            {
              isValid=isNumber(eValue);
              
              if(!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " Accept Number Only"}
              if(isValid)
              {
                andPos = type.indexOf("and",3);
                //alert(andPos)
                if(andPos>=3) // between case
                {
                    isValid = eValue >= parseInt(type.substring(3,andPos)) && eValue <= parseInt(type.substring(andPos+3)); 
                    if(!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " must be between " + type.substring(3,andPos) + " and " + type.substring(andPos+3)};
                }
                else              
                {
                    //alert(eValue+type.substring(3))
                    //alert(eval(eValue+type.substring(3)))
                    isValid = eval(eValue+type.substring(3));
                    if(!isValid) 
                    {
                        obj.msg += (obj.msg!=""?"<br>":"") + description + " must be ";

                        if (type.indexOf(">",3)>=3) obj.msg += "greater than ";
                        if (type.indexOf("<",3)>=3) obj.msg += "less than ";
                        if (type.indexOf("=",3)>=3) obj.msg += (type.indexOf(">",3)>=3 || type.indexOf("<",3)>=3?" or ":"") + "equal to ";
                        obj.msg += type.replace(/[^0-9.]/g, "") ; 
                    }    
                }    


              
              /*   
                  switch (type)
                  {
                      case "num+":
                        isValid=eValue>0;
                        if(!isValid) {obj.msg="Accept number greater than 0"};
                        break;
                      case "num0+":
                        isValid=eValue>=0;
                        if(!isValid) {obj.msg="Accept number greater than or equal to 0"};
                        break;
                      case "num-":
                        isValid=eValue<0;
                        if(!isValid) {obj.msg="Accept number less than 0"};
                        break;
                      case "num0-":
                        isValid=eValue<=0;
                        if(!isValid) {obj.msg="Accept number less than or equal to 0"};
                        break;
                      default:
                        break;
                  }
               */   
               }      
            }
            // check date field
            else if (type=="date")
            {
                if (eValue!="")
                {
                    isValid = chkDate(eValue, dateFormat);
                    if (!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " Date Format Error"};
                }
            }
            // check email field
            else if (type=="email") //added by san
            {
               if(eValue!="")
               {
                   isValid = chkEmail(eValue);
                   if(!isValid) {obj.msg += (obj.msg!=""?"<br>":"") + description + " Address Invalid "};                
               }
            }
          }
          if(!isValid) objValid = false;
          //if(!isValid) {obj.field = theform.elements[i]; break;}
        }
      }
    }
  }
  
  obj.isValid = objValid;
  return obj;
}

function getElement(str,i,separator)
{
	var ar=str.split(separator);
	var tmp = ar.length>i ? ar[i] : ''
	return(tmp)
}

function chkDate(str,dateFormat){ // t=dmy|mdy|ymd
	var tmpDate, y, m, d
	var separator = (type=='ansi'?'.':'/')
	
				separator = " "
				aFormat	= dateFormat.split(separator)
				if (aFormat.length<3)
				{
					separator = "/"
					aFormat	= dateFormat.split(separator)
					if (aFormat.length<3)
					{
						separator = "."
						aFormat	= dateFormat.split(separator)
						if (aFormat.length<3)
						{
							separator = "-"
							aFormat	= dateFormat.split(separator)
							if (aFormat.length<3)
							{
								// invalid date	format
								separator=""
							}
						}
					}
				}
					
    d= (getElement(dateFormat,0,separator).indexOf("d",0)>=0 ? parseInt(getElement(str,0,separator),10) : (getElement(dateFormat,1,separator).indexOf("d",0)>=0 ? parseInt(getElement(str,1,separator),10) :  parseInt(getElement(str,2,separator),10))) ; 					
    m= (getElement(dateFormat,0,separator).indexOf("m",0)>=0 ? parseInt(getElement(str,0,separator),10) : (getElement(dateFormat,1,separator).indexOf("m",0)>=0 ? parseInt(getElement(str,1,separator),10) :  parseInt(getElement(str,2,separator),10)))-1; 					
    y= (getElement(dateFormat,0,separator).indexOf("y",0)>=0 ? parseInt(getElement(str,0,separator),10) : (getElement(dateFormat,1,separator).indexOf("y",0)>=0 ? parseInt(getElement(str,1,separator),10) :  parseInt(getElement(str,2,separator),10))) ; 					

/*
	switch(dateFormat){
		case 'dmy':
			d=parseInt(getElement(str,0,separator),10);
			m=parseInt(getElement(str,1,separator),10)-1;
			y=parseInt(getElement(str,2,separator),10); 
			break;
		case 'mdy': 
			d=parseInt(getElement(str,1,separator),10);
			m=parseInt(getElement(str,0,separator),10)-1;
			y=parseInt(getElement(str,2,separator),10); 
			break;
		case 'ymd': 
			d=parseInt(getElement(str,2,separator),10);
			m=parseInt(getElement(str,1,separator),10)-1;
			y=parseInt(getElement(str,0,separator),10); 
			break;
		case 'ansi': 
			d=parseInt(getElement(str,2,separator),10);
			m=parseInt(getElement(str,1,separator),10)-1;
			y=parseInt(getElement(str,0,separator),10); 
			break;
	}
*/
	tmpDate=new Date(y, m, d ); 

	return((str.replace(/([^\/])/g,'')=='//' || str.replace(/([^\.])/g,'')=='..') &&
		y==tmpDate.getFullYear() && m==tmpDate.getMonth() && d==tmpDate.getDate())
}


//check email added by san start
function chkEmail(str)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(str);
}
//check email added by san end
