function validateForm(theFormname,theFieldlist,goodMess,badMess,emailMess){if(document[theFormname]&&theFieldlist){var index=1,theField=split(theFieldlist,",",index),msg="",theEreg='',theEregMsg='',specialMode='';while(theField){theEreg='';specialMode='';if(theField=='_EREG'){specialMode=theField;index++;theEregMsg=unescape(split(theFieldlist,",",index));index++;theEreg=unescape(split(theFieldlist,",",index))}else if(theField=='_EMAIL')specialMode=theField;if(specialMode){index++;theField=split(theFieldlist,",",index)};index++;theLabel=unescape(split(theFieldlist,",",index));theField=unescape(theField);if(document[theFormname][theField]){var fObj=document[theFormname][theField],type=fObj.type;if(!fObj.type)type="radio";var value="";switch(type){case"text":case"textarea":value=fObj.value;break;case"select-one":if(fObj.selectedIndex>=0)value=fObj.options[fObj.selectedIndex].value;break;case"select-multiple":var l=fObj.length;for(a=0;a<l;a++)if(fObj.options[a].selected)value+=fObj.options[a].value;break;case"radio":var l=fObj.length;for(a=0;a<l;a++)if(fObj[a].checked)value=fObj[a].value;break;default:value=1};switch(specialMode){case"_EMAIL":var theRegEx_notValid=new RegExp("(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)","gi"),theRegEx_isValid=new RegExp("^.+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})$","");if(!theRegEx_isValid.test(value))msg+="\n"+theLabel+' ('+(emailMess?unescape(emailMess):'Email address not valid!')+')';break;case"_EREG":var theRegEx_isValid=new RegExp(theEreg,"");if(!theRegEx_isValid.test(value))msg+="\n"+theLabel+' ('+theEregMsg+')';break;default:if(!value)msg+="\n"+theLabel}};index++;theField=split(theFieldlist,",",index)};if(msg){var theBadMess=unescape(badMess);if(!theBadMess)theBadMess="You must fill in these fields:";theBadMess+="\n";alert(theBadMess+msg);return false}else{var theGoodMess=unescape(goodMess);if(theGoodMess)alert(theGoodMess);if(document[theFormname]['kb_md5fepw'].value=='1'){var pass=document[theFormname]['real_pass'].value,user=document[theFormname]['user'].value,chal=document[theFormname]['challenge'].value,enc_pass=MD5(pass),str=user+':'+enc_pass+':'+chal,enc_str=MD5(str);document[theFormname]['real_pass'].value='';document[theFormname]['pass'].value=enc_str};return true}}}
function split(theStr1,delim,index){var theStr=''+theStr1,lengthOfDelim=delim.length;sPos=-lengthOfDelim;if(index<1)index=1;for(a=1;a<index;a++){sPos=theStr.indexOf(delim,sPos+lengthOfDelim);if(sPos==-1)return null};ePos=theStr.indexOf(delim,sPos+lengthOfDelim);if(ePos==-1)ePos=theStr.length;return(theStr.substring(sPos+lengthOfDelim,ePos))};
function array(n){for(i=0;i<n;i++)this[i]=0;this.length=n}
function integer(n){return n%(0xffffffff+1)}
function shr(a,b){a=integer(a);b=integer(b);if(a-0x80000000>=0){a=a%0x80000000;a>>=b;a+=0x40000000>>(b-1)}else a>>=b;return a}
function shl1(a){a=a%0x80000000;if(a&0x40000000==0x40000000){a-=0x40000000;a*=2;a+=0x80000000}else a*=2;return a}
function shl(a,b){a=integer(a);b=integer(b);for(var i=0;i<b;i++)a=shl1(a);return a}
function and(a,b){a=integer(a);b=integer(b);var t1=(a-0x80000000),t2=(b-0x80000000);if(t1>=0){if(t2>=0){return((t1&t2)+0x80000000)}else return(t1&b)}else if(t2>=0){return(a&t2)}else return(a&b)}
function or(a,b){a=integer(a);b=integer(b);var t1=(a-0x80000000),t2=(b-0x80000000);if(t1>=0){if(t2>=0){return((t1|t2)+0x80000000)}else return((t1|b)+0x80000000)}else if(t2>=0){return((a|t2)+0x80000000)}else return(a|b)}
function xor(a,b){a=integer(a);b=integer(b);var t1=(a-0x80000000),t2=(b-0x80000000);if(t1>=0){if(t2>=0){return(t1^t2)}else return((t1^b)+0x80000000)}else if(t2>=0){return((a^t2)+0x80000000)}else return(a^b)}
function not(a){a=integer(a);return(0xffffffff-a)};var state=new array(4),count=new array(2);count[0]=0;count[1]=0;var buffer=new array(64),transformBuffer=new array(16),digestBits=new array(16),S11=7,S12=12,S13=17,S14=22,S21=5,S22=9,S23=14,S24=20,S31=4,S32=11,S33=16,S34=23,S41=6,S42=10,S43=15,S44=21
function F(x,y,z){return or(and(x,y),and(not(x),z))}
function G(x,y,z){return or(and(x,z),and(y,not(z)))}
function H(x,y,z){return xor(xor(x,y),z)}
function I(x,y,z){return xor(y,or(x,not(z)))}
function rotateLeft(a,n){return or(shl(a,n),(shr(a,(32-n))))}
function FF(a,b,c,d,x,s,ac){a=a+F(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;return a}
function GG(a,b,c,d,x,s,ac){a=a+G(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;return a}
function HH(a,b,c,d,x,s,ac){a=a+H(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;return a}
function II(a,b,c,d,x,s,ac){a=a+I(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;return a}
function transform(buf,offset){var a=0,b=0,c=0,d=0,x=transformBuffer;a=state[0];b=state[1];c=state[2];d=state[3];for(i=0;i<16;i++){x[i]=and(buf[i*4+offset],0xff);for(j=1;j<4;j++)x[i]+=shl(and(buf[i*4+j+offset],0xff),j*8)};a=FF(a,b,c,d,x[0],S11,0xd76aa478);d=FF(d,a,b,c,x[1],S12,0xe8c7b756);c=FF(c,d,a,b,x[2],S13,0x242070db);b=FF(b,c,d,a,x[3],S14,0xc1bdceee);a=FF(a,b,c,d,x[4],S11,0xf57c0faf);d=FF(d,a,b,c,x[5],S12,0x4787c62a);c=FF(c,d,a,b,x[6],S13,0xa8304613);b=FF(b,c,d,a,x[7],S14,0xfd469501);a=FF(a,b,c,d,x[8],S11,0x698098d8);d=FF(d,a,b,c,x[9],S12,0x8b44f7af);c=FF(c,d,a,b,x[10],S13,0xffff5bb1);b=FF(b,c,d,a,x[11],S14,0x895cd7be);a=FF(a,b,c,d,x[12],S11,0x6b901122);d=FF(d,a,b,c,x[13],S12,0xfd987193);c=FF(c,d,a,b,x[14],S13,0xa679438e);b=FF(b,c,d,a,x[15],S14,0x49b40821);a=GG(a,b,c,d,x[1],S21,0xf61e2562);d=GG(d,a,b,c,x[6],S22,0xc040b340);c=GG(c,d,a,b,x[11],S23,0x265e5a51);b=GG(b,c,d,a,x[0],S24,0xe9b6c7aa);a=GG(a,b,c,d,x[5],S21,0xd62f105d);d=GG(d,a,b,c,x[10],S22,0x2441453);c=GG(c,d,a,b,x[15],S23,0xd8a1e681);b=GG(b,c,d,a,x[4],S24,0xe7d3fbc8);a=GG(a,b,c,d,x[9],S21,0x21e1cde6);d=GG(d,a,b,c,x[14],S22,0xc33707d6);c=GG(c,d,a,b,x[3],S23,0xf4d50d87);b=GG(b,c,d,a,x[8],S24,0x455a14ed);a=GG(a,b,c,d,x[13],S21,0xa9e3e905);d=GG(d,a,b,c,x[2],S22,0xfcefa3f8);c=GG(c,d,a,b,x[7],S23,0x676f02d9);b=GG(b,c,d,a,x[12],S24,0x8d2a4c8a);a=HH(a,b,c,d,x[5],S31,0xfffa3942);d=HH(d,a,b,c,x[8],S32,0x8771f681);c=HH(c,d,a,b,x[11],S33,0x6d9d6122);b=HH(b,c,d,a,x[14],S34,0xfde5380c);a=HH(a,b,c,d,x[1],S31,0xa4beea44);d=HH(d,a,b,c,x[4],S32,0x4bdecfa9);c=HH(c,d,a,b,x[7],S33,0xf6bb4b60);b=HH(b,c,d,a,x[10],S34,0xbebfbc70);a=HH(a,b,c,d,x[13],S31,0x289b7ec6);d=HH(d,a,b,c,x[0],S32,0xeaa127fa);c=HH(c,d,a,b,x[3],S33,0xd4ef3085);b=HH(b,c,d,a,x[6],S34,0x4881d05);a=HH(a,b,c,d,x[9],S31,0xd9d4d039);d=HH(d,a,b,c,x[12],S32,0xe6db99e5);c=HH(c,d,a,b,x[15],S33,0x1fa27cf8);b=HH(b,c,d,a,x[2],S34,0xc4ac5665);a=II(a,b,c,d,x[0],S41,0xf4292244);d=II(d,a,b,c,x[7],S42,0x432aff97);c=II(c,d,a,b,x[14],S43,0xab9423a7);b=II(b,c,d,a,x[5],S44,0xfc93a039);a=II(a,b,c,d,x[12],S41,0x655b59c3);d=II(d,a,b,c,x[3],S42,0x8f0ccc92);c=II(c,d,a,b,x[10],S43,0xffeff47d);b=II(b,c,d,a,x[1],S44,0x85845dd1);a=II(a,b,c,d,x[8],S41,0x6fa87e4f);d=II(d,a,b,c,x[15],S42,0xfe2ce6e0);c=II(c,d,a,b,x[6],S43,0xa3014314);b=II(b,c,d,a,x[13],S44,0x4e0811a1);a=II(a,b,c,d,x[4],S41,0xf7537e82);d=II(d,a,b,c,x[11],S42,0xbd3af235);c=II(c,d,a,b,x[2],S43,0x2ad7d2bb);b=II(b,c,d,a,x[9],S44,0xeb86d391);state[0]+=a;state[1]+=b;state[2]+=c;state[3]+=d}
function init(){count[0]=count[1]=0;state[0]=0x67452301;state[1]=0xefcdab89;state[2]=0x98badcfe;state[3]=0x10325476;for(i=0;i<digestBits.length;i++)digestBits[i]=0}
function update(b){var index,i;index=and(shr(count[0],3),0x3f);if(count[0]<0xffffffff-7){count[0]+=8}else{count[1]++;count[0]-=0xffffffff+1;count[0]+=8};buffer[index]=and(b,0xff);if(index>=63)transform(buffer,0)}
function finish(){var bits=new array(8),padding,i=0,index=0,padLen=0;for(i=0;i<4;i++)bits[i]=and(shr(count[0],(i*8)),0xff);for(i=0;i<4;i++)bits[i+4]=and(shr(count[1],(i*8)),0xff);index=and(shr(count[0],3),0x3f);padLen=(index<56)?(56-index):(120-index);padding=new array(64);padding[0]=0x80;for(i=0;i<padLen;i++)update(padding[i]);for(i=0;i<8;i++)update(bits[i]);for(i=0;i<4;i++)for(j=0;j<4;j++)digestBits[i*4+j]=and(shr(state[i],(j*8)),0xff)}
function hexa(n){var hexa_h="0123456789abcdef",hexa_c="",hexa_m=n;for(hexa_i=0;hexa_i<8;hexa_i++){hexa_c=hexa_h.charAt(Math.abs(hexa_m)%16)+hexa_c;hexa_m=Math.floor(hexa_m/16)};return hexa_c};var ascii="01234567890123456789012345678901 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
function MD5(entree){var l,s,k,ka,kb,kc,kd;init();for(k=0;k<entree.length;k++){l=entree.charAt(k);update(ascii.lastIndexOf(l))};finish();ka=kb=kc=kd=0;for(i=0;i<4;i++)ka+=shl(digestBits[15-i],(i*8));for(i=4;i<8;i++)kb+=shl(digestBits[15-i],((i-4)*8));for(i=8;i<12;i++)kc+=shl(digestBits[15-i],((i-8)*8));for(i=12;i<16;i++)kd+=shl(digestBits[15-i],((i-12)*8));s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);return s};
