function TrimStr(S){
var Lenx=0;
while(S.charCodeAt(0) && S.charCodeAt(0)<33)
{S=S.substring(1);}
while( (Lenx=S.length)>0 && S.charCodeAt(Lenx-1)<33)
{S=S.substring(0,S.length-1);}
return S;
}
function FilterForLettersOnly(S){
var Lenx=0,C='';
while(
S && S.charCodeAt(0) &&
  (S.charCodeAt(0)<65 || (S.charCodeAt(0)>90 && S.charCodeAt(0)<97)  || (S.charCodeAt(0)>122 && S.charCodeAt(0)<128) )
)
{S=S.substring(1);}
return S;
}

function CountChars(S,Cr)
{
var L1=S.length,i=0,Ct=0;
for(i=0;i<L1; i++){if(S.charAt(i)==Cr) Ct++;}
return Ct;
}

function IsCheckDigitOK(Cp)
{
var m=0,j=1,n1=0; 
for(i = Cp.length - 1; i >= 0; i--){
n1=Number(Cp.charAt(i)) * j;
if(n1>9){m=m + 1; n1=n1-10;
}
m=m+n1;
if(j==1){j=2}else{j=1};
}
if(m%10!=0){
return false;
}
return true;
}

function checkit1(fm,key1)
{
var n1='',i=0;
var L1=fm.elements.length;
for(i=0; i<L1; i++)
{
n1=fm.elements[i].name;
if( n1.indexOf(key1)>=0 && fm.elements[i].value)
return 1;
}
return 0;
}

function CleanEmail(GivenEmailp)
{
if( GivenEmailp.indexOf("<")<0 || GivenEmailp.indexOf(">")<0 ) return GivenEmailp;
var Emailx=TrimStr(GivenEmailp);
var pos1=-1;
if( (pos1=Emailx.indexOf("<"))>=0 )
{
Emailx=Emailx.substr(pos1+1);
if( (pos1=Emailx.indexOf(">"))>0 )
{
Emailx=Emailx.substr(0,pos1)
return Emailx;
}
}
return GivenEmailp;
}

function IsNotvalidEmail(Ep)
{
var E=CleanEmail(Ep);
var Mx='Please enter VALID email',X=0;;
E=TrimStr(E);
E=E.toLowerCase();
if(E=='')return 'Please enter email';
if(E.match(/\s/)) return 'Email cannot contain spaces.';
var p1=E.indexOf("@");
if(p1<1)X=1;
else{
var R=E.substr(p1+1);
var L=E.substr(0,p1);
var Ln=L.length;
var Rn=R.length;
if(Ln<1 || Ln>64)X=1;
else if(Rn<1 || Rn>128)X=1;
else if(L.charAt(0)=='.' || L.charAt(Ln-1)== '.')X=1;
else if(L.indexOf("..")>=0 || R.indexOf("..")>=0)return 'Cannot contain two sequential dots';
else if(!(/^[A-Za-z0-9-.]+$/.exec(R)))X=1;
else if(!(/^(\\\\.|[A-Za-z0-9!#%&_=\'+.-])+$/.exec(L)))X=1;
var C1=0;
C1+=CountChars(E,"&");
C1+=CountChars(E,"\'");
if(C1>1)X=1;
}if(!X){
var p2=R.lastIndexOf(".");
if(p2<0)X=1;
else{
var D=R.substr(p2+1);
D=D.toLowerCase()
if(D.length<2)X=1;
else if(D.length==2){
A=D.charAt(0);
B=D.charAt(1);
if(A>='a' && A<='z' && B>='a' && B<='z' ){}else X=1;
}
else{
D="."+D+".";
var DL=".biz.com.info.name.net.org.pro.aero.asia.cat.coop.edu.gov.int.jobs.mil.mobi.museum.tel.travel.arpa.nato.";
if(DL.indexOf(D)<0)
{
return 'Email domain at end is wrong';
}
}}}if(X) return Mx; else return "";
}


function InvalidCreditCard(Cp)
{
Cp=CleanCCN(Cp);
if(Cp==''){
return 'Please enter';
}else if( Cp.length<12 ){
return 'Not Valid.';
}else if( Cp.length>19){
return 'Number is too long';
}else if(!(/^[0-9]+$/.exec(Cp))){
return 'Only digits allowed';
}else if(!IsCheckDigitOK(Cp)){
return 'Not Valid';
}
return InvalidCCtype(Cp);
}
function CleanCCN(Ct)
{
Ct=TrimStr(Ct);
Ct=Ct.replace(/-/g,"");
Ct=Ct.replace(/ /g,"");
Ct=Ct.replace(/O/g,"0");
Ct=Ct.replace(/l/g,"1");
return Ct;
}

function CountryCodeRequiresZip(CountryCodep)
{
var List1=';AD;AI;AM;AR;AS;AT;AU;AZ;BA;BB;BD;BE;BG;BM;BN;BO;BR;BS;BY;CA;CA;CC;CH;CN;CR;CV;CX;CY;CZ;DE;DK; DO;DZ;EC;EE;EG;ES;FI;FK;FO;FR;GA;GB;GE;GL;GR;GT;GU;HM;HN;HR;HT;HU;ID;IL;IN;IO;IR;IS;IT;JM;JP;KE;KG;KH;KR; KW;KY;KZ;LB;LI;LK;LR;LS;LT;LU;LV;LY;MA;MC;MD;MG;MH;MK;MM;MN;MP;MQ;MT;MV;MX;MY;MZ;NC;NE;NF;NG;NI;NL;NO;NP; NZ;PG;PH;PK;PN;PR;PT;PW;PY;RE;RO;RU;SA;SD;SE;SG;SI;SK;SM;SN;SV;SZ;TC;TD;TH;TJ;TM;TR;TW;UA;UM;US;US;UY;UZ; VA;VE;VI;VN;WF;YT;YU;ZA;';
if( List1.indexOf(CountryCodep)>=0 )
return 1;
return 0;
}

function InvalidCCtype(Cp)
{
F='Not correct';
F2="Sorry, we don't accept this card";
T="";
Cp=CleanCCN(Cp);
L1=Cp.length;
if(L1<12 && L1>19)return F;
var c1=Cp.charAt(0);
if(!Cp || c1=='0' || c1=='7' || c1=='8' || c1=='9' )
return  F2;
CC2=Cp.substr(0,2);
CC3=Cp.substr(0,3);
CC4=Cp.substr(0,4);
CC6=Cp.substr(0,6);
if(CC2=="34" || CC2=="37")
{
if(L1!=15)return F;
return T; // AmExp
}
else if(CC2>=51 && CC2<=55)
{
if(L1!=16)return F;
return T; // MC
}
else if(CC2=="35" || CC4=="1800" || CC4=="2131")
{
if(L1!=15 && L1!=16)return F;
return T; // JCB
}
else if(CC2=="64" || CC2=="65" || CC3=="622" || CC4=="6011")
{
if(L1!=16)return F;
return T; // Dis
}
else if((CC3>=300 && CC3<=305) ||
(CC2=="36" || CC2=="54" || CC2=="55" || CC4=="2014" || CC4=="2149"))
{
if(L1!=14 && L1!=15 && L1!=16)return F;
return T; // din
}
else if("5018,5020,5038,6304,6759,6761".indexOf(CC4)>=0 || CC2=="67")
{
if(L1<12 && L1>16)return F;
return T; // maes
}
else if(CC2.charAt(0)=="5" && (L1==14 || L1==18) )
{
return T; // maes int
}
else if("6334,6767".indexOf(CC4)>=0)
{
if(L1!=16 && L1!=18 && L1!=19)return F;
return T; // solo
}
else if("4903,4905,4911,4936,6333,6759,4903,4905,4911,4936,6333,6759".indexOf(CC4)>=0 ||
"564182,633110,564182,633110".indexOf(CC6)>=0)
{
if(L1!=16 && L1!=18 && L1!=19)return F;
return T; // swit
}
else if("4917,4913,4508,4844".indexOf(CC4)>=0 || CC6=="417500")
{
if(L1!=16)return F;
return T; // Visa Electron
}
else if(CC2.charAt(0)=="4")
{
if(L1!=13 && L1!=16)return F;
return T; // Visa
}
else if("2014,2149".indexOf(CC4)>=0)
{
if( L1!=15 && L1!=16)return F;
return T; // din/en route
}
return F2;
}


function CleanStr(Sp,DigitsOKp,AllowCharsp)
{
var Len=0,Cx='',ii=0,Ordx=0,Allow1=-1;
var Ret='';
Len=Sp.length;
for( ii=0; ii<Len ;ii++)
{
Cx=Sp.charAt(ii);
Ordx=Sp.charCodeAt(ii);
if( (DigitsOKp && Ordx>=48 && Ordx<=57 ) ||  // digit
(Ordx>=65 && Ordx<=90 ) ||  // upper
(Ordx>=97 && Ordx<=122 ) ||  // lower
( Ordx>=192 && Ordx<=214 ) ||
( Ordx>=216 && Ordx<=246 ) ||
( Ordx>=248 && Ordx<=255 ) ||
 (Allow1=AllowCharsp.indexOf(Cx))>=0  )
{
Lx=Ret.length;
if ( Allow1>=0 && Lx>0  && Ret.charAt(Lx-1)==Cx )
{/* do nothing */}
 else
Ret=Ret+Cx;
}
else
{
Lx=Ret.length;
 if( Lx>0  && Ret.charAt(Lx-1)==' ' )
 {/* do nothing */}
 else
 Ret=Ret+' ';
}
}
return TrimStr(Ret);
}

