﻿function Element( clientID , strValue ,vType ,strMessageError ,LabelClientID )
{
    this.clientID = clientID;
    this.strValue = strValue;
    this.vType = vType;
    this.strMessageError = strMessageError;
    this.LabelClientID = LabelClientID;
                
}


function DisplatErrorOnLabel (Labelobj,strErrmsg)
{
    Labelobj.innerHTML = strErrmsg;            
}

function MarkElement (inptObj)
{
    inptObj.className = 'ContactInputERR';            
}
function unMarkElement (inptObj)
{
    inptObj.className = 'ContactInput';            
}

        
function clientValidateForm (arrElements)
{                       
    for (var i = 0; i < arrElements.length; i++) 
    {	    	
        var elmObj = document.getElementById(arrElements[i].clientID);                   
        var labelObj = document.getElementById(arrElements[i].LabelClientID);                   
        
        if (validateElement ( elmObj.value ,arrElements[i].vType) == false)
        {
            elmObj.focus();
            MarkElement(elmObj);
            DisplatErrorOnLabel (labelObj,arrElements[i].strMessageError);
            return false;
        }
        else
        {
            unMarkElement(elmObj)
        }
    }	        
}


function validateElement (strValue,strType)
{
    switch(strType)
    {
    case "1":                
      return (strValue != "");              
      break;
    case "2":
      return (!checkMailValidty(strValue));              
      break;            
    }
}

function clickButton(e, buttonid){
      var evt = e ? e : window.event;
      var bt = document.getElementById(buttonid);
      if (bt){
          if (evt.keyCode == 13){				
                bt.click();
                return false;
          }
      }
}



// this function validate email
function checkMailValidty (email)
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))
    {
        return false;
    }
    else
    {
        return true;
    }
}

// this function validate that string date , the function get formats (DMY/MDY/YMD/YDM)
function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; } else if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } else if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}
