﻿   
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "xX()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function IsValidEMail(mailids)
{
        
        var arr = new Array('.com','.net','.org','.biz','.coop','.info','.museum','.name','.pro'
        ,'.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag','.ai','.al',
        '.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw','.az','.ba','.bb',
        '.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm','.bn','.bo','.br','.bs',
        '.bt','.bv','.bw','.by','.bz','.ca','.cc','.cd','.cf','.cg','.ch','.ci',
        '.ck','.cl','.cm','.cn','.co','.cr','.cu','.cv','.cx','.cy','.cz','.de',
        '.dj','.dk','.dm','.do','.dz','.ec','.ee','.eg','.eh','.er','.es','.et',
        '.fi','.fj','.fk','.fm','.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh',
        '.gi','.gl','.gm','.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy',
        '.hk','.hm','.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io',
        '.iq','.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
        '.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li','.lk',
        '.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg','.mh','.mk',
        '.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt','.mu','.mv','.mw',
        '.mx','.my','.mz','.na','.nc','.ne','.nf','.ng','.ni','.nl','.no','.np',
        '.nr','.nu','.nz','.om','.pa','.pe','.pf','.pg','.ph','.pk','.pl','.pm',
        '.pn','.pr','.ps','.pt','.pw','.py','.qa','.re','.ro','.rw','.ru','.sa',
        '.sb','.sc','.sd','.se','.sg','.sh','.si','.sj','.sk','.sl','.sm','.sn',
        '.so','.sr','.st','.sv','.sy','.sz','.tc','.td','.tf','.tg','.th','.tj',
        '.tk','.tm','.tn','.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug',
        '.uk','.um','.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu',
        '.ws','.wf','.ye','.yt','.yu','.za','.zm','.zw'); 
        var mai = mailids.toLowerCase();
        var val = true;

        var dot = mai.lastIndexOf(".");
        var ext = mai.substring(dot,mai.length);
        var at = mai.indexOf("@");
        var dom = dot - at;
        var sp = mai.indexOf(" ");

        if(dom >= 4 && at >1 && sp == -1)
        {
            for(var i=0; i<arr.length; i++)
            {
                if(ext == arr[i])
                {
                    val = true;
                    break;
                } 
                else
                {
                    val = false;
                }
            }
            if(val == false)
            {
                
               return false;
            }
        }
        else
        {
            
            return false;
        }

       return true;
}

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++)
	{   
		// Check that current character isn't whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function IsInternationalPhone(strPhone)
{
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}
function IsMandatory(control)
{
	if (document.getElementById(control).value == "")
	{
		
		return false;
	}
	else
	{
		return true;
	}
}
function cancel() 
{
    var numberForms = document.forms.length;
    var formIndex; 
    for (formIndex = 0; formIndex < numberForms; formIndex++) 
    {   
        alert(document.forms[formIndex].type); 
    }
	document.getElementById("ctl00_MainContentHolder_divErrors").style.display = 'none';
}

function back()
{
	history.back();
}

function IsNumber(e)
{
	var unicode=e.charCode? e.charCode : e.keyCode
	if (unicode!=8)
	{ 
		//if the key isn't the backspace key (which we should allow)
		if (unicode<48||unicode>57) //if not a number
		return false //disable key press
	}
}
function ValidateCCOld(ccnum,type)
{
   if (type == "Visa")
   {
	  // Visa: length 16, prefix 4, dashes optional.Format 4159-8765-2100-1234
	  var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
   }
   else if (type == "MC")
   {
	  // Mastercard: length 16, prefix 51-55, dashes optional.Format 5159-8765-2100-1234
	  var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
   }
   else
   {
	  // AMEX: length 15, prefix 34-37, dashes optional.Format 3759-876543-21001
	  var re = /^3[4-7]\d{2}-?\d{6}-?\d{5}$/;
   }
   //if (!re.test(ccnum)) return false;
   // Remove all dashes for the checksum checks to eliminate negative numbers
   ccnum = ccnum.split("-").join("");
   // Checksum ("Mod 10")
   // Add even digits in even length strings or odd digits in odd length strings.
   var checksum = 0;
   for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) 
   {
	  checksum += parseInt(ccnum.charAt(i-1));
   }
   // Analyze odd digits in even length strings or even digits in odd length strings.
   for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) 
   {
	  var digit = parseInt(ccnum.charAt(i-1)) * 2;
	  if (digit < 10) 
	  { checksum += digit; } 
	  else 
	  { checksum += (digit-9); }
   }
   if ((checksum % 10) == 0)
   {
	   return true;
   }
   else
   {
	   return false;
   }
   return false;
}
			
function fnSetValues()
{
   var sFeatures="dialogHeight: " + 50 + "px;";
   return sFeatures;
}
function IsValidZIP(field) {
var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) {
return false;
}
for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
return false;
}
if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
return false;
   }
}
return true;
}

function IsValidUSZIP(field) {
var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) {
return false;
}
for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
return false;
}
if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
return false;
   }
}
return true;
}

function IsValidCanadaZIP(field) 
{
    //var valid = "0123456789-";
    //Valid format ANA NAN
    var validNumeral = "0123456789";
    var validAlphabet = "QWERTYUIOPASDFGHJKLZXCVBNM";

    if (field.length!=7)
    {
        return false;
    }
    //Cheking first character alohanumeric
    if(validAlphabet.indexOf(field.substring(0,1).toUpperCase())== "-1")
        return false;
    //Cheking second character
    if(validNumeral.indexOf(field.substring(1,2).toUpperCase())== "-1")
        return false;
    //Cheking third character
    if(validAlphabet.indexOf(field.substring(2,3).toUpperCase())== "-1")
        return false;

    //Cheking fourth character
    if(field.substring(3,4) != "-" && field.substring(3,4) != " ")
        return false;

    //Cheking fifth character
    if(validNumeral.indexOf(field.substring(4,5).toUpperCase())== "-1")
        return false;
    //Cheking sixth character
    if(validAlphabet.indexOf(field.substring(5,6).toUpperCase())== "-1")
        return false;
    //Cheking seventh character
    if(validNumeral.indexOf(field.substring(6,7).toUpperCase())== "-1")
        return false;

    return true;
}

function change_case(control)
{
	document.getElementById(control).value = document.getElementById(control).value.toLowerCase();
	
}
function IsDecimal(e)
{
	var unicode=e.charCode? e.charCode : e.keyCode
	if (unicode!=8)
	{ 
		//if the key isn't the backspace key (which we should allow)
		if(unicode==46)
		    return true
		if (unicode<48||unicode>57) //if not a number
		return false //disable key press
	}
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function ValidateCC(ccnum,type)
{
    //remove spaces form card number
    var cardNumber = ccnum.replace(/ /g,"");
    var cardNumberLength = cardNumber.length;
   //check its valid number or not
   if(!isInteger(cardNumber))
   {
        return false;
   }
   
   if (type == "Visa")
   {
	  // Visa: length 16, prefix 4, dashes optional.Format 4159-8765-2100-1234
	  if(cardNumberLength == 16 || cardNumberLength == 13)
	  {
	    if(cardNumber.substring(0,1) == '4')
	    {
	        return true;
	    }
	    else
	    {
	        return false;
	    }
	  }
	  else
	  {
	    return false;
	  }
   }
   else if (type == "MC")
   {
	  // Mastercard: length 16, prefix 51-55, dashes optional.Format 5159-8765-2100-1234
	  if(cardNumberLength == 16)
	  {
	     if(cardNumber.substring(0,2) == '51' || cardNumber.substring(0,2) =='52' || cardNumber.substring(0,2) =='53' || cardNumber.substring(0,2) =='54' || cardNumber.substring(0,2) =='55')
	    {
	        return true;
	    }
	    else
	    {
	        return false;
	    }
	  }
	  else
	  {
	    return false;
	  }
   }
   else
   {
	  // AMEX: length 15, prefix 34-37, dashes optional.Format 3759-876543-21001
	  if(cardNumberLength == 15)
	  {
	    if(cardNumber.substring(0,2) == '34' || cardNumber.substring(0,2) =='37')
	    {
	        return true;
	    }
	    else
	    {
	        return false;
	    }
	  }
	  else
	  {
	    return false;
	  }
   }
   return false;
}