/* Funzioni di GRAFICA */
function on(e)
{
    e.className = "form";
}
function off(e)
{
    e.className = "";
}
function HighlightAll(theField) 
{ 
theField.select(); 
} 

var active

function nascondi(active) {
       if (document.all) {
         document.all[active].style.visibility="hidden";
         document.all[active].style.display="none";
       }
  }

function mostra(obj) {
  if (active!=null) {
  nascondi(active)
  }
if (document.all) {
      document.all[obj].style.visibility="visible";
      document.all[obj].style.display='';
    }
  active = obj
}

/* Funzioni MATEMATICHE */

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}



function formatta_data(theField)

{
var stringa_data = theField.value;

     if (stringa_data.length ==6 & stringa_data.indexOf("/") == -1 ) {
var giorno= (stringa_data.substr(0,2))
var mese= (stringa_data.substr(2,2))
var anno= (stringa_data.substr(4,2))
var stringa = (giorno + "/" + mese + "/20" + anno)
var stringa_data_corretta = (giorno + "/" + mese + "/20" + anno)
theField.value = stringa_data_corretta; //document.forms[0].data.value = stringa_data_corretta;
     }
	 
 if  (stringa_data.indexOf("/") != -1){

var stringa_data_array=stringa_data.split("/");

var giorno= ("0"+stringa_data_array[0])
var giorno = Right("0"+stringa_data_array[0],2)
var mese= ("0"+stringa_data_array[1])
var mese=Right(mese,2)
var anno= ("20"+stringa_data_array[2])
var anno=Right(anno,4)
var stringa_data_corretta = (giorno + "/" + mese + "/" +anno)
theField.value = stringa_data_corretta; //document.forms[0].data.value = stringa_data_corretta;
 
 }	 
}



/* personalizzazione */

/* YAV v1.2 LGPL license - Copyright (C) 2005-2006 <f.crivellaro@gmail.com> http://yav.sourceforge.net */
var undef;
function performCheck(formName,strRules,alertType){
var rules=makeRules(strRules);
this.f=document.forms[formName];
if(!this.f){
debug('DEBUG: could not find form object '+formName);
return null;}
var errors=new Array();
var ix=0;
if(rules.length){
for(var i=0;i<rules.length;i++){
var aRule=rules[i];
highlight(f.elements[aRule.el],inputclassnormal);}}else{
highlight(f.elements[rules.el],inputclassnormal);}
if(rules.length){
for(var i=0;i<rules.length;i++){
var aRule=rules[i];
var anErr=null;
if(aRule==null){}else if(aRule.ruleType=='pre-condition'||aRule.ruleType=='post-condition'){}else if(aRule.ruleName=='implies'){
pre=aRule.el;
post=aRule.comparisonValue;
var oldClassName=f.elements[rules[pre].el].className;
if(checkRule(f,rules[pre])==null&&checkRule(f,rules[post])!=null){
anErr=aRule.alertMsg;}else if(checkRule(f,rules[pre])!=null){
f.elements[rules[pre].el].className=oldClassName;}}else{
anErr=checkRule(f,aRule);}
if(anErr!=null){
errors[ix]=anErr;
ix++;}}}else{
var myRule=rules;
err=checkRule(f,myRule);
if(err!=null){
errors[0]=err;}}
return displayAlert(errors,alertType);}
function checkKeyPress(ev,obj,strRules){
var keyCode=null;
if(getBrowser()=='msie'){
keyCode=window.event.keyCode;}else if(getBrowser()=='netscape'||getBrowser()=='firefox'){
keyCode=ev.which;}
var rules=makeRules(strRules);
var keyAllowed=true;
if(rules.length){
for(var i=0;i<rules.length;i++){
var aRule=rules[i];
if(aRule.ruleName=='keypress'&&aRule.el==obj.name){
keyAllowed=isKeyAllowed(keyCode,aRule.comparisonValue);
break;}}}else{
var aRule=rules;
if(aRule.ruleName=='keypress'&&aRule.el==obj.name){
keyAllowed=isKeyAllowed(keyCode,aRule.comparisonValue);}}
if(!keyAllowed){
if(getBrowser()=='msie'){
window.event.keyCode=0;}else if(getBrowser()=='netscape'||getBrowser()=='firefox'){
ev.initKeyEvent('keypress',true,true,window,false,false,true,false,0,0x00,obj);}}
return false;}
function displayAlert(messages,alertType){
var retval=null;
if(alertType=='classic'){
retval=displayClassic(messages);}else if(alertType=='innerHtml'){
retval=displayInnerHtml(messages);}else if(alertType=='jsVar'){
retval=displayJsVar(messages);}else{
debug('DEBUG: alert type '+alertType+' not supported');}
return retval;}
function displayClassic(messages){
var str='';
if(messages!=null&&messages.length>0){
if(strTrim(HEADER_MSG).length>0){
str+=HEADER_MSG+'\n\n';}
for(var i=0;i<messages.length;i++){
str+=' '+messages[i]+'\n';}
if(strTrim(FOOTER_MSG).length>0){
str+='\n'+FOOTER_MSG;}
alert(str);
return false;}else{
return true;}}
function displayInnerHtml(messages){
if(messages!=null&&messages.length>0){
var str='';
if(strTrim(HEADER_MSG).length>0){
str+=HEADER_MSG;}
str+='<ul>';
for(var i=0;i<messages.length;i++){
str+='<li>'+messages[i]+'</li>';}
str+='</ul>';
if(strTrim(FOOTER_MSG).length>0){
str+=FOOTER_MSG;}
document.getElementById(errorsdiv).innerHTML=str;
document.getElementById(errorsdiv).className=innererror;
document.getElementById(errorsdiv).style.display='block';
return false;}else{
document.getElementById(errorsdiv).innerHTML='';
document.getElementById(errorsdiv).className='';
document.getElementById(errorsdiv).style.display='none';
return true;}}
function displayJsVar(messages){
document.getElementById(errorsdiv).className='';
document.getElementById(errorsdiv).style.display='none';
if(messages!=null&&messages.length>0){
var str='';
str+='<script>var jsErrors;</script>';
document.getElementById(errorsdiv).innerHTML=str;
jsErrors=messages;
return false;}else{
document.getElementById(errorsdiv).innerHTML='<script>var jsErrors;</script>';
return true;}}
function rule(el,ruleName,comparisonValue,alertMsg,ruleType){
if(!checkArguments(arguments)){
return false;}
tmp=el.split(':');
nameDisplayed='';
if(tmp.length==2){
nameDisplayed=tmp[1];
el=tmp[0];}
this.el=el;
this.nameDisplayed=nameDisplayed;
this.ruleName=ruleName;
this.comparisonValue=comparisonValue;
this.ruleType=ruleType;
if(alertMsg==undef||alertMsg==null){
this.alertMsg=getDefaultMessage(el,nameDisplayed,ruleName,comparisonValue);}else{
this.alertMsg=alertMsg;}}
function checkRule(f,myRule){
retVal=null;
if(myRule!=null){
if(myRule.ruleName=='custom'){
var customFunction=' retVal = '+myRule.el;
eval(customFunction);}else{
el=f.elements[myRule.el];
if(el==null){
debug('DEBUG: could not find element '+myRule.el);
return null;}
var err=null;
if(el.type){
if(el.type=='hidden'||el.type=='text'||el.type=='password'||el.type=='textarea'){
err=checkText(el,myRule);}else if(el.type=='checkbox'){
err=checkCheckbox(el,myRule);}else if(el.type=='select-one'){
err=checkSelOne(el,myRule);}else if(el.type=='select-multiple'){
err=checkSelMul(el,myRule);}else if(el.type=='radio'){
err=checkRadio(el,myRule);}else{
debug('DEBUG: type '+el.type+' not supported');}}else{
err=checkRadio(el,myRule);}
retVal=err;}}
return retVal;}
function checkArguments(args){
if(args.length<4){
debug('DEBUG: rule requires four arguments at least');
return false;}else if(args[0]==null||args[1]==null){
debug('DEBUG: el and ruleName are required');
return false;}
return true;}



function checkRadio(el,myRule){
var err=null;
if(myRule.ruleName=='required'){
var radios=el;
var found=false;
if(isNaN(radios.length)&&radios.checked){
found=true;}else{
for(var j=0;j<radios.length;j++){
if(radios[j].checked){
found=true;
break;}}}
if(!found){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='equal'){
var radios=el;
var found=false;
if(isNaN(radios.length)&&radios.checked){
if(radios.value==myRule.comparisonValue){
found=true;}}else{
for(var j=0;j<radios.length;j++){
if(radios[j].checked){
if(radios[j].value==myRule.comparisonValue){
found=true;
break;}}}}
if(!found){
err=myRule.alertMsg;}}else{
debug('DEBUG: rule '+myRule.ruleName+' not supported for radio');}
return err;}



function checkText(el,myRule){
err=null;
if(trimenabled){
el.value=strTrim(el.value);}

if(myRule.ruleName=='required'){
if(el.value==null||el.value==''){
highlight(el,inputclasserror);

	// custom ccp
err=myRule.alertMsg;}}else if(myRule.ruleName=='telefonointernazionale'){
reg=new RegExp("^[+][0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);

err=myRule.alertMsg;}}else if(myRule.ruleName=='codicefiscale'){
reg=new RegExp("^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
	// custom ccp
	



err=myRule.alertMsg;}}else if(myRule.ruleName=='equal'){
if(el.value!=myRule.comparisonValue){
highlight(el,inputclasserror);

err=myRule.alertMsg;}}else if(myRule.ruleName=='numeric'){
reg=new RegExp("^[0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);

err=myRule.alertMsg;}}else if(myRule.ruleName=='alphabetic'){
reg=new RegExp("^[A-Za-z]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);

err=myRule.alertMsg;}}else if(myRule.ruleName=='alphanumeric'){
reg=new RegExp("^[A-Za-z0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);

err=myRule.alertMsg;}}else if(myRule.ruleName=='alnumhyphen'){
reg=new RegExp("^[A-Za-z0-9\-_]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='alnumhyphenat'){
reg=new RegExp("^[A-Za-z0-9\-_@]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='alphaspace'){
reg=new RegExp("^[A-Za-z0-9\-_ \n\r\t]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='email'){
reg=new RegExp("^(([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}){0,1}$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='maxlength'){
if(isNaN(myRule.comparisonValue)){
debug('DEBUG: comparisonValue for rule '+myRule.ruleName+' not a number');}else if(el.value.length>myRule.comparisonValue){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='minlength'){
if(isNaN(myRule.comparisonValue)){
debug('DEBUG: comparisonValue for rule '+myRule.ruleName+' not a number');}else if(el.value.length<myRule.comparisonValue){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='numrange'){
reg=new RegExp("^[0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}else{
regRange=new RegExp("^[0-9]+-[0-9]+$");
if(!regRange.test(myRule.comparisonValue)){
debug('DEBUG: comparisonValue for rule '+myRule.ruleName+' not in format number1-number2');}else{
rangeVal=myRule.comparisonValue.split('-');
if(eval(el.value)<eval(rangeVal[0])||eval(el.value)>eval(rangeVal[1])){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}}}else if(myRule.ruleName=='regexp'){
reg=new RegExp(myRule.comparisonValue);
if(!reg.test(el.value)){
highlight(el,inputclasserror);
err=myRule.alertMsg;}}else if(myRule.ruleName=='integer'){
err=checkInteger(el,myRule);}else if(myRule.ruleName=='double'){
err=checkDouble(el,myRule);}else if(myRule.ruleName=='date'){
err=checkDate(el,myRule);}else if(myRule.ruleName=='date_lt'){
err=checkDateLessThan(el,myRule,false);}else if(myRule.ruleName=='date_le'){
err=checkDateLessThan(el,myRule,true);}else if(myRule.ruleName=='keypress'){}else{
debug('DEBUG: rule '+myRule.ruleName+' not supported for '+el.type);}
return err;}
function checkInteger(el,myRule){
reg=new RegExp("^[-+]{0,1}[0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
return myRule.alertMsg;}}
function checkDouble(el,myRule){
var sep=DECIMAL_SEP;
reg=new RegExp("^[-+]{0,1}[0-9]*["+sep+"]{0,1}[0-9]*$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
return myRule.alertMsg;}}
function checkDate(el,myRule){
error=null;
if(el.value!=''){
var dateFormat=DATE_FORMAT;
ddReg=new RegExp("dd");
MMReg=new RegExp("MM");
yyyyReg=new RegExp("yyyy");
if(!ddReg.test(dateFormat)||!MMReg.test(dateFormat)||!yyyyReg.test(dateFormat)){
debug('DEBUG: locale format '+dateFormat+' not supported');}else{
ddStart=dateFormat.indexOf('dd');
MMStart=dateFormat.indexOf('MM');
yyyyStart=dateFormat.indexOf('yyyy');}
strReg=dateFormat.replace('dd','[0-9]{2}').replace('MM','[0-9]{2}').replace('yyyy','[0-9]{4}');
reg=new RegExp("^"+strReg+"$");
if(!reg.test(el.value)){
highlight(el,inputclasserror);
error=myRule.alertMsg;}else{
dd=el.value.substring(ddStart,ddStart+2);
MM=el.value.substring(MMStart,MMStart+2);
yyyy=el.value.substring(yyyyStart,yyyyStart+4);
if(!checkddMMyyyy(dd,MM,yyyy)){
highlight(el,inputclasserror);
error=myRule.alertMsg;}}}
return error;}
function checkDateLessThan(el,myRule,isEqualAllowed){
error=null;
var isDate=checkDate(el,myRule)==null?true:false;
if(isDate&&el.value!=''){
var dateFormat=DATE_FORMAT;
ddStart=dateFormat.indexOf('dd');
MMStart=dateFormat.indexOf('MM');
yyyyStart=dateFormat.indexOf('yyyy');
dd=el.value.substring(ddStart,ddStart+2);
MM=el.value.substring(MMStart,MMStart+2);
yyyy=el.value.substring(yyyyStart,yyyyStart+4);
myDate=""+yyyy+MM+dd;
strReg=dateFormat.replace('dd','[0-9]{2}').replace('MM','[0-9]{2}').replace('yyyy','[0-9]{4}');
reg=new RegExp("^"+strReg+"$");
var isMeta=myRule.comparisonValue.indexOf('$')==0
?true
:false;
var comparisonDate='';
if(isMeta){
toSplit=myRule.comparisonValue.substr(1);
tmp=toSplit.split(':');
if(tmp.length==2){
comparisonDate=this.f.elements[tmp[0]].value;}else{
comparisonDate=this.f.elements[myRule.comparisonValue.substr(1)].value;}}else{
comparisonDate=myRule.comparisonValue;}
if(!reg.test(comparisonDate)){
highlight(el,inputclasserror);
error=myRule.alertMsg;}else{
cdd=comparisonDate.substring(ddStart,ddStart+2);
cMM=comparisonDate.substring(MMStart,MMStart+2);
cyyyy=comparisonDate.substring(yyyyStart,yyyyStart+4);
cDate=""+cyyyy+cMM+cdd;
if(isEqualAllowed){
if(!checkddMMyyyy(cdd,cMM,cyyyy)||myDate>cDate){
highlight(el,inputclasserror);
error=myRule.alertMsg;}}else{
if(!checkddMMyyyy(cdd,cMM,cyyyy)||myDate>=cDate){
highlight(el,inputclasserror);
error=myRule.alertMsg;}}}}else{
if(el.value!=''){
highlight(el,inputclasserror);
error=myRule.alertMsg;}}
return error;}
function checkddMMyyyy(dd,MM,yyyy){
retVal=true;
if((dd>31)||(MM>12)||(dd==31&&(MM==2||MM==4||MM==6||MM==9||MM==11))||(dd>29&&MM==2)||(dd==29&&(MM==2)&&((yyyy%4>0)||(yyyy%4==0&&yyyy%100==0&&yyyy%400>0)))){
retVal=false;}
return retVal;}
function checkCheckbox(el,myRule){
if(myRule.ruleName=='required'){
if(!el.checked){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else if(myRule.ruleName=='equal'){
if(!el.checked||el.value!=myRule.comparisonValue){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else{
debug('DEBUG: rule '+myRule.ruleName+' not supported for '+el.type);}}
function checkSelOne(el,myRule){
if(myRule.ruleName=='required'){
var found=false;
var inx=el.selectedIndex;
if(inx>=0&&el.options[inx].value){
found=true;}
if(!found){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else if(myRule.ruleName=='equal'){
var found=false;
var inx=el.selectedIndex;
if(inx>=0&&el.options[inx].value==myRule.comparisonValue){
found=true;}
if(!found){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else{
debug('DEBUG: rule '+myRule.ruleName+' not supported for '+el.type);}}
function checkSelMul(el,myRule){
if(myRule.ruleName=='required'){
var found=false;
opts=el.options;
for(var i=0;i<opts.length;i++){
if(opts[i].selected&&opts[i].value){
found=true;
break;}}
if(!found){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else if(myRule.ruleName=='equal'){
var found=false;
opts=el.options;
for(var i=0;i<opts.length;i++){
if(opts[i].selected&&opts[i].value==myRule.comparisonValue){
found=true;
break;}}
if(!found){
highlight(el,inputclasserror);
return myRule.alertMsg;}}else{
debug('DEBUG: rule '+myRule.ruleName+' not supported for '+el.type);}}
function debug(msg){
if(debugmode){
alert(msg);}}
function strTrim(str){
return str.replace(/^\s+/,'').replace(/\s+$/,'');}
function makeRules(strRules){
var rules=new Array();
if(strRules.length){
for(var i=0;i<strRules.length;i++){
rules[i]=splitRule(strRules[i]);}}else{
rules[0]=splitRule(strRules);}
return rules;}
function splitRule(strRule){
var retval=null;
if(strRule!=undef){
params=strRule.split('|');
switch(params.length){
case 2:
retval=new rule(params[0],params[1],null,null,null);
break;
case 3:
if(threeParamRule(params[1])){
retval=new rule(params[0],params[1],params[2],null,null);}else if(params[2]=='pre-condition'||params[2]=='post-condition'){
retval=new rule(params[0],params[1],null,'foo',params[2]);}else{
retval=new rule(params[0],params[1],null,params[2],null);}
break;
case 4:
if(threeParamRule(params[1])&&(params[3]=='pre-condition'||params[3]=='post-condition')){
retval=new rule(params[0],params[1],params[2],'foo',params[3]);}else{
retval=new rule(params[0],params[1],params[2],params[3],null);}
break;
default:
debug('DEBUG: wrong definition of rule');}}
return retval;}
function threeParamRule(ruleName){
return(ruleName=='equal'||ruleName=='minlength'||ruleName=='maxlength'||ruleName=='date_lt'||ruleName=='date_le'||ruleName=='implies'||ruleName=='regexp'||ruleName=='numrange'||ruleName=='keypress')?true
:false;}
function highlight(el,clazz){
if(el!=undef&&inputhighlight){
el.className=clazz;}}
function getDefaultMessage(el,nameDisplayed,ruleName,comparisonValue){
if(nameDisplayed.length==0){
nameDisplayed=el;}
var msg=DEFAULT_MSG;
if(ruleName=='telefonointernazionale'){
	
	// custom ccp
msg=telefonointernazionale_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='codicefiscale'){
msg=CODICEFISCALE_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='required'){
	// custom ccp
	
msg=REQUIRED_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='minlength'){
msg=MINLENGTH_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonValue);}else if(ruleName=='maxlength'){
msg=MAXLENGTH_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonValue);}else if(ruleName=='numrange'){
msg=NUMRANGE_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonValue);}else if(ruleName=='date'){
msg=DATE_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='numeric'){
msg=NUMERIC_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='integer'){
msg=INTEGER_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='double'){
msg=DOUBLE_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='equal'){
msg=EQUAL_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonValue);}else if(ruleName=='alphabetic'){
msg=ALPHABETIC_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='alphanumeric'){
msg=ALPHANUMERIC_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='alnumhyphen'){
msg=ALNUMHYPHEN_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='alnumhyphenat'){
msg=ALNUMHYPHENAT_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='alphaspace'){
msg=ALPHASPACE_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='email'){
msg=EMAIL_MSG.replace('{1}',nameDisplayed);}else if(ruleName=='regexp'){
msg=REGEXP_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonValue);}else if(ruleName=='date_lt'){
if(comparisonValue.substring(0,1)=='$'){
comparisonValue=comparisonValue.substring(1,comparisonValue.length);
tmp=comparisonValue.split(':');
comparisonDisplayed='';
if(tmp.length==2){
comparisonDisplayed=tmp[1];}else{
comparisonDisplayed=comparisonValue;}}
msg=DATE_LT_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonDisplayed);}else if(ruleName=='date_le'){
if(comparisonValue.substring(0,1)=='$'){
comparisonValue=comparisonValue.substring(1,comparisonValue.length)
tmp=comparisonValue.split(':');
comparisonDisplayed='';
if(tmp.length==2){
comparisonDisplayed=tmp[1];}else{
comparisonDisplayed=comparisonValue;}}
msg=DATE_LE_MSG.replace('{1}',nameDisplayed).replace('{2}',comparisonDisplayed);}
return msg;}
function getBrowser(){
brs=navigator.userAgent.toLowerCase();
var retval;
if(brs.search(/msie\s(\d+(\.?\d)*)/)!=-1){
retval='msie';}else if(brs.search(/netscape[\/\s](\d+([\.-]\d)*)/)!=-1){
retval='netscape';}else if(brs.search(/firefox[\/\s](\d+([\.-]\d)*)/)!=-1){
retval='firefox';}else{
retval='unknown';}
return retval;}
function isKeyAllowed(keyCode,charsAllowed){
retval=false;
var aCharCode;
if(keyCode==8){
retval=true;}else{
for(var i=0;i<charsAllowed.length;i++){
aCharCode=charsAllowed.charCodeAt(i);
if(aCharCode==keyCode){
retval=true;
break;}}}
return retval;}

