
var whitespace=" \t\n\r";function isEmpty(s){return((s==null)||(s.length==0));}
function isWhitespace(s){if(isEmpty(s))
return true;return trim(s).length==0;}
function containsWhitespace(s){if(isEmpty(s))
return false;var i;for(i=0;i<whitespace.length;i++){if(s.indexOf(whitespace.charAt(i))>=0)
return true;}
return false;}
function trimLeading(s){if(isEmpty(s))
return s;var i=0;while((whitespace.indexOf(s.charAt(i))>=0)&&(i<s.length))
i++;return s.substring(i,s.length);}
function trimTrailing(s){if(isEmpty(s))
return s;var i=s.length-1;while((whitespace.indexOf(s.charAt(i))>=0)&&(0<i))
i--;return s.substring(0,i+1);}
function trim(s){return trimTrailing(trimLeading(s));}
function trimTextFields(form){var i=0;for(i=0;i<form.elements.length;i++){if("text"==form.elements[i].type||"textarea"==form.elements[i].type){form.elements[i].value=trim(form.elements[i].value);}}
return true;}
function replace(s,oldC,newC){while(s.indexOf(oldC)>=0)
s=s.replace(oldC,newC);return s;}
function isEmailValid(s){var last=s.length-1;var atPos=s.indexOf('@');if(atPos<=0||atPos==last)
return false;var host=s.substring(atPos+1);if(!isHostValid(host))
return false;return true;}
function isNameOrEmailValid(s){if(isEmpty(s))
return false;if(s.indexOf(',')>0)
return false;var ltPos=s.indexOf('<');var gtPos=s.indexOf('>');if(0<=ltPos&&0<gtPos&&ltPos<gtPos){var email=s.substring(ltPos+1,gtPos);if(isEmailValid(email))
return true;else
return false;}
if(s.indexOf('@')>0)
return isEmailValid(s);return true;}
function isURLValid_old(s){if(isEmpty(s))
return false;if(s.length<11)
return false;var dpos=s.indexOf("://");if(dpos<0)
return false;var protocol=s.substring(0,dpos);protocol=protocol.toLowerCase();if(protocol!="http"&&protocol!="https")
return false;var host=s.substring(dpos+3);var spos=host.indexOf('/');var qpos=host.indexOf('?');if(spos<0)
spos=host.length;if(qpos<0)
qpos=host.length;var pos=Math.min(spos,qpos);if(pos<host.length)
host=host.substring(0,pos);if(!isHostValid(host))
return false;return true;}
function isURLValid(s){if(isEmpty(s))
return false;if(s.length<11)
return false;s=s.toLowerCase();var allowedProtocols=['http','https'];var ppos=s.indexOf('://');if(ppos<0)
return false;var protocol=s.substring(0,ppos);var i=0;var isProtocolAllowed=false;for(i=0;i<allowedProtocols.length;i++){if(allowedProtocols[i]==protocol){isProtocolAllowed=true;break;}}
if(!isProtocolAllowed)
return false;var host=s.substring(ppos+3);var spos=host.indexOf('/');var qpos=host.indexOf('?');if(spos<0)
spos=host.length;if(qpos<0)
qpos=host.length;var pos=Math.min(spos,qpos);if(pos<host.length)
host=host.substring(0,pos);if(!isHostValid(host))
return false;return true;}
function isHostValid(host){if(isEmpty(host))
return false;if(host.length<4)
return false;var dpos=host.indexOf('.');if(dpos<=0)
return false;dpos=host.lastIndexOf('.');if(dpos==(host.length-1))
return false;return true;}
function trimValues(form){if(form!=null){var i;for(i=0;i<form.elements.length;i++)
form.elements[i].value=trim(form.elements[i].value);}}
function tokenizeRaw(s,c){if(isEmpty(s))
return null;var tokenized=[];var token;var prev=0;var i;for(i=0;i<s.length;i++){if(s.charAt(i)==c){token=s.substring(prev,i);tokenized[tokenized.length]=token;prev=i+1;}}
if(prev<s.length){token=s.substring(prev);tokenized[tokenized.length]=token;}
return tokenized;}
function tokenize(s,c){if(isEmpty(s))
return null;var tokenized=[];var token;var prev=0;var i;for(i=0;i<s.length;i++){if(s.charAt(i)==c){token=s.substring(prev,i);tokenized[tokenized.length]=getAddress(token);prev=i+1;}}
if(prev<s.length){token=s.substring(prev);tokenized[tokenized.length]=getAddress(token);}
return tokenized;}
function getAddress(s){if(s==null)
return null;var ltPos=s.indexOf("<");var gtPos=s.lastIndexOf(">");var address=null;if(0<ltPos&&0<gtPos&&ltPos<gtPos)
address=s.substring(ltPos+1,gtPos);else
address=s;if(address!=null){ltPos=address.indexOf("<");gtPos=address.lastIndexOf(">");if(0<ltPos||0<gtPos)
return null;}
address=trim(address);if(containsWhitespace(address))
return null;else{if(isEmailValid(address))
return address;else
return null;}}
function areEmailsValid(s){var tokenized=tokenize(s,',');if(isEmpty(tokenized)){return-1;}
else{var i;for(i=0;i<tokenized.length;i++){if(isEmpty(tokenized[i]))
return i;}}
return-1;}