///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//                       Copyright (c) 2003-2006                             //
//                            Marc Peterson                                  //
//                     marc.s.peterson at gmail.com                          //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

// Last updated: 06-12-06

var gForm_lock=false;function checkAlphaNum(string){var good="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkDomain(string){var good="-.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkEmail(string){string=trim(string);var pos_at=string.indexOf("@"),pos_last_at=string.lastIndexOf("@"),pos_last_dot=string.lastIndexOf("."),pos_space=string.indexOf(" "),str_len=string.length,good=".@-+_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};if(pos_at<1)return false;if(pos_at!=pos_last_at)return false;if(pos_last_dot<pos_at)return false;if(str_len-pos_last_dot<=2)return false;return true;};function checkHex(string){var good="0123456789abcdef",str=trim(string).toLowerCase();if(str.substring(0,2)=="0x")str=str.substring(2);for(var i=0;i<str.length;i++){if(good.indexOf(str.charAt(i))==-1)return false;};return true;};function checkHexRange(string,min_val,max_val){var str=hex2dec(string),min_val=hex2dec(minVal),max_val=hex2dec(maxVal);if(str<min_val)return false;else if(str>max_val)return false;else return true;};function hex2dec(hex){return parseInt(hex,16);};function checkIp(string){var good=".0123456789";if(string.length==0)return false;for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};var indexStart=0,indexEnd=string.indexOf(".");if(indexEnd<0)return false;if(parseInt(string.substring(indexStart,indexEnd))>255)return false;indexStart=indexEnd+1;indexEnd=string.indexOf(".",indexStart);if(indexEnd<0)return false;if(parseInt(string.substring(indexStart,indexEnd))>255)return false;indexStart=indexEnd+1;indexEnd=string.indexOf(".",indexStart);if(indexEnd<0)return false;if(parseInt(string.substring(indexStart,indexEnd))>255)return false;indexStart=indexEnd+1;if(parseInt(string.substring(indexStart))>255)return false;if(string.indexOf(".",indexStart)!=-1)return false;if(indexStart==string.length)return false;return true;};function checkIpAndDomain(string){string=trim(string);if(string.indexOf(".")==0||string.lastIndexOf(".")==(string.length-1))return false;var parts=string.split(".");if(parts.length!=4)return checkDomain(string);for(var i=0;i<parts.length;i++){if(!checkNumRange(parts[i],0,255))return checkDomain(string);};return checkIp(string);};function checkIpWithMask(string){var slashPos=string.indexOf("/");if(slashPos>=0){if(slashPos<7)return false;var mask=string.substring(slashPos+1),ip=string.substring(0,slashPos);if(parseInt(mask)!=mask)return false;if(mask<0||mask>32)return false;return checkIp(ip);}else{return checkIp(string);};};function checkLink(string){var good="~/:.-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkMAC(string){var i,group,value,good=":0123456789abcdefABCDEF",numColons=0;if(string.length==0)return false;for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;if(string.charAt(i)==":")numColons++;};if(numColons!=5)return false;for(var i=0;i<string.length;i=i+3){group=string.substring(i,i+2);value=hex2dec(group);if(value>=0&&value<=255)return true;else return false;};};function checkNumber(string){var good="-0123456789";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkNumRange(string,min_val,max_val){var good="-0123456789";if(string.length==0)return false;for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};if(min_val>max_val){var temp=min_val;min_val=max_val;max_val=temp;};string=Number(string);if(string<min_val)return false;else if(string>max_val)return false;else return true;};function checkPortList(string){var good=" 0123456789-,";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkTheseChars(string,good){for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};return true;};function checkTime(string){var good="0123456789:";for(var i=0;i<string.length;i++){if(good.indexOf(string.charAt(i))==-1)return false;};var indexStart=0,indexEnd=string.indexOf(":");if(parseInt(string.substring(indexStart,indexEnd))>12)return false;indexStart=indexEnd+1;if(string.indexOf(":",indexStart)!=-1)return false;if(parseInt(string.substring(indexStart))>59)return false;return true;};function isNum(i){if(i==parseInt(i))return true;else return false;};function submitOnEnter(fn,e){var keycode;if(window.event)keycode=window.event.keyCode;else if(e)keycode=e.which;else return true;if(keycode==13)fn();};function textCounter(field,countfield,maxlimit){if(field.value.length>maxlimit){field.value=field.value.substring(0,maxlimit);}else{countfield.value=maxlimit-field.value.length;};};function getInputValue(oInput){var i,ret_val="";if(oInput){if(oInput.type)type=oInput.type;else if(oInput[0].type)type=oInput[0].type;else type=null;switch(type){case"text":case"hidden":case"password":case"file":case"textarea":ret_val=oInput.value;break;case"select-one":var len=oInput.options.length;if(len==0)ret_val="";else ret_val=oInput.options[oInput.options.selectedIndex].value;break;case"select-mulitiple":var len=oInput.options.length;if(len==0)ret_val="";else{for(i=0;i<ret_val;i++){if(oInput.options[i].checked){if(ret_val=="")ret_val=oInput.options[i].value;else ret_val+=", "+oInput.options[i].value;};};};break;case"radio":if(oInput.length){for(i=0;i<oInput.length;i++){if(oInput[i].checked)ret_val=oInput[i].value;};}else if(oInput.checked)ret_val=oInput.value;break;case"checkbox":if(oInput.length){for(i=0;i<oInput.length;i++){if(oInput[i].checked){if(ret_val=="")ret_val=oInput[i].value;else ret_val+=", "+oInput[i].value;};};}else if(oInput.checked)ret_val=oInput.value;break;default:alert("getInputValue() unknown type: "+type);break;};};return trim(ret_val);};function setInputValue(oInput,new_val){if(oInput){if(oInput.type)type=oInput.type;else if(oInput[0].type)type=oInput[0].type;else type=null;switch(type){case"text":case"hidden":case"password":oInput.value=new_val;break;case"select-one":case"select-mulitiple":selDropdown(oInput,new_val);break;case"radio":selRadio(oInput,new_val);break;case"checkbox":selCheckbox(oInput,new_val);break;case"textarea":oInput.value=new_val;break;default:alert("setInputValue() unknown type: "+type);break;};};};function selCheckbox(oCbox,txt){var i,txt_to_match;if(typeof(txt)=="string")txt_to_match=txt.toLowerCase();else if(typeof(txt)=="number")txt_to_match=txt.toString();if(oCbox){if(oCbox.length){for(i=0;i<oCbox.length;i++){if(oCbox[i].value.toLowerCase()==txt_to_match){oCbox[i].checked=true;}else{oCbox[i].checked=false;};};}else{if(oCbox.value.toLowerCase()==txt_to_match){oCbox.checked=true;}else{oCbox.checked=false;};};};};function selDropdown(oDropdown,txt){var i,txt_to_match;if(typeof(txt)=="string")txt_to_match=txt.toLowerCase();else if(typeof(txt)=="number")txt_to_match=txt.toString();if(oDropdown){for(i=0;i<oDropdown.options.length;i++){if(oDropdown.options[i].value.toLowerCase()==txt_to_match){oDropdown.options[i].selected=true;break;};};};};function selRadio(oRadio,txt){var i,txt_to_match;if(typeof(txt)=="string")txt_to_match=txt.toLowerCase();else if(typeof(txt)=="number")txt_to_match=txt.toString();if(oRadio){if(oRadio.length){for(i=0;i<oRadio.length;i++){if(oRadio[i].value.toLowerCase()==txt_to_match){oRadio[i].checked=true;}else{oRadio[i].checked=false;};};}else if(oRadio.value.toLowerCase()==txt_to_match)oRadio.checked=true;else oRadio.checked=false;};};function clearInputValue(oInput){if(oInput){if(oInput.type)type=oInput.type;else if(oInput[0].type)type=oInput[0].type;else type=null;switch(type){case"text":case"hidden":oInput.value="";break;case"select-one":case"select-mulitiple":for(var i=0;i<oInput.length;i++){oInput[i].selected=false;};oInput[0].selected=true;break;case"radio":case"checkbox":if(oInput.length){for(var i=0;i<oInput.length;i++){oInput[i].checked=false;};}else oInput.checked=false;break;case"button":break;case"textarea":ret_val=oInput.value="";break;default:alert("clearInputValue() unknown type: "+type);break;};};};function trim(txt){if(!txt||txt==""||txt==null||txt===undefined)return"";else{txt=txt.replace(/^[\s\t]*/,"");txt=txt.replace(/[\s\t]*$/,"");return txt;};};function ErrorList(){var num_errors=0,list=new Array();this.addError=function(msg,line){if(line===undefined||line==null||line=="")line=0;else line=parseInt(line);if(!list[line])list[line]=new Array();list[line].push(msg);num_errors++;};this.getNumErrors=function(){return num_errors;};this.showErrors=function(){var error_msg="";for(var i=0;i<list.length;i++){if(list[i]){for(err in list[i]){error_msg+=list[i][err];};};};if(error_msg!=""){alert(error_msg);};};};function setError(oInput,oErrorList,msg,line){if(line===undefined||line==null||line=="")line=0;if(oErrorList!==undefined&&oErrorList!=null&&oErrorList!=""){oErrorList.addError(msg,line);};if(oInput!=null&&oInput!=""){if(oInput.className)oInput.prevClassName=oInput.className;oInput.className="typo";};};function clearInputErrors(oForm){oInputs=oForm.getElementsByTagName("INPUT");for(var i=0;i<oInputs.length;i++){if(oInputs[i].className=="typo"){if(oInputs[i].prevClassName){oInputs[i].className=oInputs[i].prevClassName;oInputs[i].prevClassName=null;}else{oInputs[i].className="";};};};oInputs=oForm.getElementsByTagName("SELECT");for(var i=0;i<oInputs.length;i++){if(oInputs[i].className=="typo"){if(oInputs[i].prevClassName){oInputs[i].className=oInputs[i].prevClassName;oInputs[i].prevClassName=null;}else{oInputs[i].className="";};};};};function initFormOnChange(form_id,btn_id,className){var oForm;if(oForm=document.getElementById(form_id)){for(var i=0;i<oForm.elements.length;i++){if(oForm.elements[i].type=="radio"||oForm.elements[i].type=="checkbox"){if(document.addEventListener){oForm.elements[i].addEventListener("click",function(e){enableButton(e,btn_id,className);},false);}else if(document.attachEvent){oForm.elements[i].attachEvent("onclick",function(e){enableButton(e,btn_id,className);});};}else if(oForm.elements[i].type!="button"){if(document.addEventListener){oForm.elements[i].addEventListener("change",function(e){enableButton(e,btn_id,className);},false);oForm.elements[i].addEventListener("keyup",function(e){enableButton(e,btn_id,className);},false);}else if(document.attachEvent){oForm.elements[i].attachEvent("onchange",function(e){enableButton(e,btn_id,className);});oForm.elements[i].attachEvent("onkeyup",function(e){enableButton(e,btn_id,className);});};};};};};function enableButton(evt,btn_id,className){var obj,key_pressed,evt=(evt)?evt:((window.event)?window.event:null);if(evt!=null){if(evt.which)key_pressed=evt.which;else key_pressed=evt.keyCode;};if(evt==null||evt.type=="change"||(key_pressed!=9&&key_pressed!=13&&!(key_pressed>=33&&key_pressed<=40))){obj=(typeof(btn_id)=="string")?document.getElementById(btn_id):btn_id;if(obj){if(obj.disabled)obj.disabled=false;if(obj.className!=className)obj.className=className;};};};function disableButton(btn_id,className){var obj;obj=(typeof(btn_id)=="string")?document.getElementById(btn_id):btn_id;if(obj){obj.disabled=true;obj.className=className;};};function trim(txt){if(!txt||txt==""||txt==null||txt===undefined)return"";else{txt=txt.replace(/^[\s\t]*/,"");txt=txt.replace(/[\s\t]*$/,"");return txt;};};
