/*
    Author: Yasser
    Created On:16/07/09
    File Name:client_validation.js
*/

//Regular Expressions for different kinds of data

var nameRegxp = new RegExp("^([a-zA-Z]+)$");

var houseRegxp = new RegExp("^([0-9A-Za-z]+)$");
                                 
var pcodeRegxp = new RegExp("^([A-Za-z]{1,2})([0-9]{2,3})([A-Za-z]{2})$");

var telnoRegxp = new RegExp("^([0-9]{11})$");
                                                                  
var emailRegxp = new RegExp("^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$");

var urlRegxp = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([\w]+)(.[\w]+){1,2}$");

var dobRegxp = new RegExp("^([0-9]){2}(\/|-){1}([0-9]){2}(\/|-)([0-9]){4}$");

var noRegxp = new RegExp("^([0-9]+)$");

var xmlHttp;
function init()
{ 
        try
        {   // Firefox, Opera 8.0+, Safari  
                xmlHttp=new XMLHttpRequest();    }
        catch (e)
        {  // Internet Explorer  
                try
                {       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    }
                catch (e)
                {    
                        try
                        {           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      }
                        catch (e)
                        {           alert("Your browser does not support AJAX!");      return false;      }    
                }    
        }
        return xmlHttp; 
}

function checkValid(chk,root)
{
        xmlHttp=init();
        chk=eval(chk);    
        var url= root+"/cms/checkImg.php";

        xmlHttp.onreadystatechange=services;
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
  
}

function services()
{
        if (xmlHttp.readyState==4){ 

        if(xmlHttp.responseText!='')
        {  
           
                txt=xmlHttp.responseText;

                if(txt=="NaN"){             
                        document.getElementById('extImg').innerHTML='<font color="red">Please upload a header image to the "images/headers" folder with the name of page url</font><br>';              
                }else{
                        var temp='';
                        temp = '<img src="'+txt+'"  width="200" height="70">';
                        document.getElementById('extImg').innerHTML=temp; 
                }
        }
        }
}

function loginValidate(chk)
{
    
        if(trimString(chk.uname.value)=="") { 
                document.getElementById('error').innerHTML = "Please enter User Name";
                chk.uname.focus();
                return false;
        }
        if(trimString(chk.password.value)=="") { 
                document.getElementById('error').innerHTML = "Please enter Password";
                chk.password.focus();
                return false;
        }
     
}
                                            
function validate_contactusform(nform){      // ContactUs validation

        if(trimString(nform.f1.value)==""){
                alert("First name required!");
                nform.f1.focus();
                return false;
        }
        if(trimString(nform.f2.value)==""){
                alert("Last name required!");
                nform.f2.focus();
                return false;
        }
        if(trimString(nform.f3.value)==""){
                alert("Country required!");
                nform.f3.focus();
                return false;
        }
        if(trimString(nform.f4.value)==""){
                alert("City required!");
                nform.f4.focus();
                return false;
        }
        var mail=isValidEmail(nform.f7.value);
        
        if(!mail){
                alert("Enter a valid Email Address!");
                nform.f7.focus();
                return false;
        }
        if(trimString(nform.f8.value)==""){
                alert("Please fill your Comment!");
                nform.f8.focus();
                return false;
        }    
        return true;
}

function validate_providerform(nform){      // ContactUs validation

        if(trimString(nform.f1.value)==""){
                alert("First name required!");
                nform.f1.focus();
                return false;
        }
        if(trimString(nform.f2.value)==""){
                alert("Last name required!");
                nform.f2.focus();
                return false;
        }
        if(trimString(nform.f3.value)==""){
                alert("Job Title required!");
                nform.f3.focus();
                return false;
        }
        if(trimString(nform.f4.value)==""){
                alert("Telephone1 required!");
                nform.f4.focus();
                return false;
        }
        var mail=isValidEmail(nform.f7.value);
        
        if(!mail){
                alert("Enter a valid Email Address!");
                nform.f7.focus();
                return false;
        }
        if(trimString(nform.f8.value)==""){
                alert("Organization Name required!");
                nform.f8.focus();
                return false;
        }
        if(trimString(nform.f10.value)=="" && trimString(nform.f11.value)==""){
                alert("Organization Type required!");
                nform.f10.focus();
                return false;
        }
        if(trimString(nform.f12.value)==""){
                alert("Coutry Required!");
                nform.f12.focus();
                return false;
        }  
        if(trimString(nform.f14.value)==""){
                alert("City Required!");
                nform.f14.focus();
                return false;
        } 
        if(trimString(nform.f14.value)==""){
                alert("City Required!");
                nform.f14.focus();
                return false;
        }  
        return true;
}

function validate_orderform(nform){      // Order validation

        if(trimString(nform.f1.value)==""){
                alert("First Name required!");
                nform.f1.focus();
                return false;
        }
        if(trimString(nform.f3.value)==""){
                alert("Last name required!");
                nform.f3.focus();
                return false;
        }
        if(trimString(nform.f4.value)==""){
                alert("Street Address required!");
                nform.f4.focus();
                return false;
        } 
        if(trimString(nform.f5.value)==""){
                alert("Country required!");
                nform.f5.focus();
                return false;
        }
        if(trimString(nform.f6.value)==""){
                alert("City required!");
                nform.f6.focus();
                return false;
        }
        if(trimString(nform.f7.value)==""){
                alert("State(Province) required!");
                nform.f7.focus();
                return false;
        }
        var mail=isValidEmail(nform.f10.value);
        
        if(!mail){
                alert("Enter a valid Email Address!");
                nform.f10.focus();
                return false;
        }
        if(trimString(nform.f11.value)==""){
                alert("Home Phone required!");
                nform.f11.focus();
                return false;
        }    
        return true;
}


function trimString(str)         // On 18/11/2008 by Aruna Sri
{
   return str.replace(/^\s+|\s+$/g, '');
}

function dateCompare(chk,dt1,dt2)
{

  var one_day=1000*60*60*24;  
  var x=dt1.split('/');       
  var date1=new Date(x[2],x[1]-1,x[0]);
  var y=dt2.split('/');
  var date2=new Date(y[2],y[1]-1,y[0]);
  diff=(date2.getTime()-date1.getTime())/(one_day);
  if(diff>=0)  return 1; else return 0;

}

function isValidEmail(emailStr) {
    var checkTLD=1;
    var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);
    if (matchArray==null) {
        //alert("Email address seems incorrect (check @ and .'s)");
        //alert("Invalid User Name");
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    // Start by checking that only basic ASCII characters are in the strings (0-127).
    for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) {
            //alert("Ths username contains invalid characters.");
            //alert("Invalid User Name"); 
            return false;
        }
    }
    for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) {
            //alert("Ths domain name contains invalid characters.");
            //alert("Invalid User Name"); 
            return false;
        }
    }
    if (user.match(userPat)==null) {
        //alert("The username doesn't seem to be valid in Email Address.");
        //alert("Invalid User Name");
        return false;
    }
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                //alert("Destination IP address is invalid!");
                //alert("Invalid User Name"); 
                return false;
               }
        }
        return true;
    }
    var atomPat=new RegExp("^" + atom + "$");
    var domArr=domain.split(".");
    var len=domArr.length;
    for (i=0;i<len;i++) {
        if (domArr[i].search(atomPat)==-1) {
            //alert("The domain name does not seem to be valid.");
            //alert("Invalid User Name"); 
            return false;
       }    
    }
    if (checkTLD && domArr[domArr.length-1].length!=2 && 
        domArr[domArr.length-1].search(knownDomsPat)==-1) {
        //alert("The address must end in a well-known domain or two letter " + "country.");
        //alert("Invalid User Name");
        return false;
    }

// Make sure there's a host name preceding the domain.

    if (len<2) {
        //alert("This address is missing a hostname!");
        //alert("Invalid User Name"); 
        return false;
    }    
    return true;
}
