function wuiFieldValue(fld){if(!fld)return undefined;if(!fld.type&&fld.length&&(fld[0].type=="radio"))
fld.type="radio";switch(fld.type){case"checkbox":if(fld.checked){if(fld.value)return fld.value;if(fld.name)return fld.name;return true;}
break;case"radio":var radl=fld.length;if(radl==undefined)
if(fld.checked)
return fld.value;else
return"";for(var i=0;i<radl;i++){if(fld[i].checked){return fld[i].value;}}
break;case"hidden":case"password":case"text":case"textarea":return fld.value;break;case"select-one":var idx=fld.selectedIndex;if((idx>=0)&&fld.options&&fld.options[idx]&&fld.options[idx].selected)
return fld.options[idx].value;break;case"select-multiple":var val=new Array;var opts=fld.options;if(opts){for(var i=0;(i<opts.length)&&!ret;++i){if(opts[i]&&opts[i].selected)val.push(opts[i].value);}}
return val;break;default:break;}
return undefined;}
function wuiFormFind(el){while(el&&(el.nodeName!='FORM')){el=el.parentNode};return el;}
function wuiFormArrayContains(ar,val){if(!ar||!val)return false;for(var i=0;i<ar.length;++i){if(ar[i]==val)return true;}
return false;}
function wuiFormChanged(frm,ignr){var elem=frm.elements;var ret=Array();var ignrar=ignr.split(",");for(var i=0;i<elem.length;++i){var fld=elem[i];var name=(fld.name)?fld.name:fld.id;if(wuiFormArrayContains(ignrar,name))continue;if(wuiFormFieldChanged(elem[name]))ret.push(name);}
return ret.length?ret.join(","):false;}
function wuiFormFieldChanged(fld){if(!fld)return false;if(!fld.type&&fld.length&&(fld[0].type=="radio"))
fld.type="radio";switch(fld.type){case"text":case"textarea":case"password":if(!fld.readOnly&&(fld.value!=fld.defaultValue))
return true;break;case"checkbox":if(fld.checked!=fld.defaultChecked)
return true;break;case"radio":if(!fld.length)return false;fld.name=fld[0].name;for(var i=0;i<fld.length;++i){if(fld[i].checked!=fld[i].defaultChecked)
return true;}
break;case"select-one":var idx=fld.selectedIndex;var opts=fld.options;if((idx>=0)&&opts&&opts[idx]&&(opts[idx].selected!=opts[idx].defaultSelected))
return true;break;case"select-multiple":var opts=fld.options;if(opts){for(var i=0;i<opts.length;++i){if(opts[i]&&(opts[i].selected!=opts[i].defaultSelected))
return true;}}
break;default:break;}
return false;}
function wuiFormMakeOptions(sel,opts,dflt){while(sel.length){sel.remove(0);}
if(!sel||!opts)return;for(var i=0;i<opts.length;++i){var val=opts[i].value;var txt=opts[i].text?opts[i].text:val;var chk=((!dflt&&(i==0))||(dflt&&(val==dflt)));var opt=new Option(txt,val,chk,chk);opt.disabled=opts[i].disabled?true:false;opt.text=txt;sel.appendChild(opt);opt.text=txt;opt.innerHTML=txt;}}
function wuiFormMakeMultiOptions(sel,opts,dflt){while(sel.length){sel.remove(0);}
if(!sel||!opts)return;var dflt_lst=dflt.split(",");for(var i=0;i<opts.length;++i){var val=opts[i].value;var txt=opts[i].text?opts[i].text:val;var chk=false;for(var j=0;j<dflt_lst.length;++j){if(dflt_lst[j]==val)chk=true;}
var opt=new Option(txt,val,chk,chk);opt.text=txt;sel.appendChild(opt);opt.text=txt;opt.innerHTML=txt;}}
function wuiFormFieldFill(fld,d){if(!fld)return;if(fld&&fld.length&&(!fld.type||(fld.type!='select-one'&&fld.type!='select-multiple'))){for(var i=0;i<fld.length;i++){wuiFormFieldFill(fld[i],d);}
return;}
switch(fld.type){case"checkbox":if(d.value.match)
fld.checked=d.value.match(new RegExp('^[yt1]','i'))?true:false;else
fld.checked=d.value?true:false;fld.defaultChecked=fld.checked;break;case"select-one":var sel=fld;if(d.options==null){d.options=Array();var opts=sel.options;for(var j=0;j<opts.length;++j){d.options[j]=Array();d.options[j].value=opts[j].value;d.options[j].text=opts[j].text;d.options[j].disabled=opts[j].disabled;if((d.value==null)&&(sel.selectedIndex>=0)&&(j==sel.selectedIndex))
d.value=opts[j].value;}}
if(d.value==null)d.value="";wuiFormMakeOptions(sel,d.options,d.value);break;case"select-multiple":var sel=fld;var tmpval=Array();if(d.options==null){d.options=Array();var opts=sel.options;for(var j=0;j<opts.length;++j){d.options[j]=Array();d.options[j].value=opts[j].value;d.options[j].text=opts[j].text;d.options[j].disabled=opts[j].disabled;if(opts[j].selected)
tmpval.push(opts[j].value);}}
if(d.value==null)d.value=tmpval.join(",");wuiFormMakeMultiOptions(sel,d.options,d.value);break;case"hidden":case"password":case"text":case"textarea":fld.value=d.value;fld.defaultValue=fld.value;break;case"radio":if(fld.value==d.value){fld.checked=true;fld.defaultChecked=true;if(fld.onclick)fld.onclick();}
else{fld.checked=false;fld.defaultChecked=false;}
break;default:alert("Field "+fld+" '"+fld.name
+"' is of unsupported type '"+fld.type+"'.");break;}}
function wuiFormFill(frm,data){var fld=frm.elements;while(data.length>0){d=data.shift();var name=d.name;if(!fld[name]){alert("Field "+name+" does not exist.");continue;}
wuiFormFieldFill(fld[name],d);wuiFormFieldChanged(fld[name]);}}function wuiAjaxArrayContains(ar,val){if(!ar||!val)return false;for(var i=0;i<ar.length;++i){if(ar[i]==val)return true;}
return false;}
function wuiAjaxForm(frm,func,type,alturl){var params=Array();for(var idx=0;idx<frm.elements.length;++idx){var elmnt=frm.elements[idx];switch(elmnt.type){case"text":case"textarea":case"hidden":case"password":if(!elmnt.readOnly)
params.push(elmnt.name+"="
+encodeURIComponent(elmnt.value));break;case"checkbox":params.push(elmnt.name+"="
+((elmnt.checked)?encodeURIComponent(elmnt.value):""));break;case"radio":if(elmnt.checked)
params.push(elmnt.name+"="
+encodeURIComponent(elmnt.value));break;case"select-one":params.push(elmnt.name+"="
+((elmnt.selectedIndex>=0)?encodeURIComponent(elmnt.options[elmnt.selectedIndex].value):""));break;case"select-multiple":var tmp=Array();for(var i=0;i<elmnt.options.length;++i){if(elmnt.options[i].selected)
tmp.push(elmnt.options[i].value);}
params.push(elmnt.name+"="+encodeURIComponent(tmp.join('|')));break;}}
if(frm.method.toUpperCase()=="GET")
return wuiAjaxGet(alturl||frm.action,params.join("&"),func,type);else
return wuiAjaxPost(alturl||frm.action,params.join("&"),func,type);}
function wuiAjaxFormChanged(frm,func,type,inc){var incar=inc.split(",");var params=Array();for(var idx=0;idx<frm.elements.length;++idx){var elmnt=frm.elements[idx];switch(elmnt.type){case"hidden":params.push(elmnt.name+"="+encodeURIComponent(elmnt.value));break;case"text":case"textarea":case"password":if(((elmnt.value!=elmnt.defaultValue)||wuiFormArrayContains(incar,elmnt.name))&&!elmnt.readOnly)
params.push(elmnt.name+"="
+encodeURIComponent(elmnt.value));break;case"checkbox":if((elmnt.checked!=elmnt.defaultChecked)||wuiFormArrayContains(incar,elmnt.name))
params.push(elmnt.name+"="
+((elmnt.checked)?encodeURIComponent(elmnt.value):""));break;case"radio":if(((elmnt.checked!=elmnt.defaultChecked)||wuiFormArrayContains(incar,elmnt.name))&&elmnt.checked)
params.push(elmnt.name+"="
+((elmnt.checked)?encodeURIComponent(elmnt.value):""));break;case"select-one":var i=elmnt.selectedIndex;if(i>=0){if((elmnt.options[i].selected!=elmnt.options[i].defaultSelected)||wuiFormArrayContains(incar,elmnt.name))
params.push(elmnt.name+"="
+encodeURIComponent(elmnt.options[i].value));}
break;case"select-multiple":var tmp=Array();for(var o in elmnt.options){if(elmnt.options[o].selected&&((elmnt.options[o].selected!=elmnt.options[o].defaultSelected)||wuiFormArrayContains(incar,elmnt.name)))
tmp.push(elmnt.options[o].value);}
if(tmp.length)
params.push(elmnt.name+"="
+encodeURIComponent(tmp.join('|')));break;}}
if(frm.method.toUpperCase()=="GET")
return wuiAjaxGet(frm.action,params.join("&"),func,type);else
return wuiAjaxPost(frm.action,params.join("&"),func,type);}
function wuiAjaxGet(url,params,func,type){var rqst=wuiAjaxRequest(func,type);if(rqst){rqst.open('GET',url+"?"+params,true);rqst.send(null);document.body.style.cursor="wait";}
return rqst;}
function wuiAjaxPost(url,params,func,type){var rqst=wuiAjaxRequest(func,type);if(rqst){rqst.open('POST',url,true);rqst.setRequestHeader("Content-type","application/x-www-form-urlencoded");rqst.setRequestHeader("Content-length",params.length);rqst.setRequestHeader("Connection","close");rqst.send(params);document.body.style.cursor="wait";}
return rqst;}
function wuiAjaxRequest(func,type){var httpRequest=false;if(window.XMLHttpRequest){httpRequest=new XMLHttpRequest();if(httpRequest.overrideMimeType){if(type=='XML')
httpRequest.overrideMimeType('text/xml');else
httpRequest.overrideMimeType('text/plain');}}
else if(window.ActiveXObject){var xmlVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];for(var i=0;i<xmlVersions.length;i++){try{httpRequest=new ActiveXObject(xmlVersions[i]);break;}
catch(e){}}}
if(!httpRequest){alert('Cannot create XMLHTTP instance.');return false;}
httpRequest.onreadystatechange=function(){if((httpRequest.readyState==3)&&(type=="STREAM")&&(navigator.appName!="Microsoft Internet Explorer")){if(httpRequest.status==200)
eval(func+'(httpRequest.responseText)');}
else if(httpRequest.readyState==4){document.body.style.cursor="auto";if(httpRequest.status==200){switch(type){case"JSON":var msg=eval('('+httpRequest.responseText+')');eval(func+'(msg)');break;case"XML":eval(func+'(httpRequest.responseXML)');break;default:eval(func+'(httpRequest.responseText)');break;}}
else{alert(httpRequest.statusText+' - '
+httpRequest.responseText);}}}
return httpRequest;}function wuiPopdownForm(popid){popid="#"+popid;if($(popid).attr("popupStatus")){$(popid).removeAttr("popupStatus");$(popid).popupStatus=false;$("#wuiPopupBackground").hide();$(popid).hide();}}
function wuiPopupForm(popid){popid="#"+popid;if(!$(popid).attr("popupStatus")){$('body').append($(popid));$(popid).attr("popupStatus",true);var windowWidth=document.documentElement.clientWidth;var windowHeight=document.documentElement.clientHeight;var popupHeight=$(popid).height();var popupWidth=$(popid).width();$(popid).css({"position":"absolute","top":windowHeight/2-popupHeight/2,"left":windowWidth/2-popupWidth/2});$("#wuiPopupBackground").css({"height":windowHeight});$("#wuiPopupBackground").css({"opacity":"0.6"});$("#wuiPopupBackground").show();$(popid).show();}}
$(document).ready(function(){$("#wuiPopupBackground").click(function(){var pps=$("div.wuiPopup");for(var i=0;i<pps.length;++i){wuiPopdownForm(pps[i].id);}});});function wuiFormValidate(frm,val){var elem=frm.elements;var ret=Array();for(var i=0;i<elem.length;++i){var fld=elem[i];if(val[fld.name]){switch(fld.type){case"checkbox":for(var j=1;j<val[fld.name].length;++j){var tmp=val[fld.name][j](fld.checked,fld);if(tmp==null)break;if(tmp==false){ret.push(val[fld.name][0]);break;}}
break;case"select-one":case"select-multiple":for(var j=1;j<val[fld.name].length;++j){var tmp=val[fld.name][j](fld.value,fld);if(tmp==null)break;if(tmp==false){ret.push(val[fld.name][0]);break;}}
break;case"text":fld.value=fld.value.replace(/\s\s+/g,' ');fld.value=fld.value.replace(/^\s+/g,'');fld.value=fld.value.replace(/\s+$/g,'');case"textarea":for(var j=1;j<val[fld.name].length;++j){var tmp=val[fld.name][j](fld.value,fld);if(tmp==null)break;if(tmp==false){ret.push(val[fld.name][0]);break;}}
break;}}}
if(ret.length==0)return false;return ret.join("\n");}
function canonicalIPV6(val){if(!val.match(new RegExp('::','')))return val;var type=val.match(new RegExp('^::',''))?1:val.match(new RegExp('::$',''))?2:val.match(new RegExp('^::$',''))?3:4;var lval='';switch(type){case 1:lval=val.replace(/::/,'{ZZ}:');break;case 2:lval=val.replace(/::/,':{ZZ}');break;case 3:lval=val.replace(/::/,'{ZZ}');break;default:lval=val.replace(/::/,':{ZZ}:');break;}
var tmp=lval.split(":");tmp=8-tmp.length+1;switch(tmp){case 1:return lval.replace(/{ZZ}/,'0');case 2:return lval.replace(/{ZZ}/,'0:0');case 3:return lval.replace(/{ZZ}/,'0:0:0');case 4:return lval.replace(/{ZZ}/,'0:0:0:0');case 5:return lval.replace(/{ZZ}/,'0:0:0:0:0');case 6:return lval.replace(/{ZZ}/,'0:0:0:0:0:0');case 7:return lval.replace(/{ZZ}/,'0:0:0:0:0:0:0');case 8:return lval.replace(/{ZZ}/,'0:0:0:0:0:0:0:0');}
return val;}
function isDate(val){var reg;reg=/^(\d{4})(\d\d)(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{4}).+?(\d{1,2}).+?(\d{1,2})$/;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{4})$/i;if(reg.exec(val))return true;reg=/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2}).+?(\d{4})$/i;if(reg.exec(val))return true;reg=/^(\d{4}).+?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2})$/i;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(\d{1,2}).+?(\d{4})$/;if(reg.exec(val))return true;return false;}
function isDateTime(val,shrt){var reg;reg=/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{4}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/;if(reg.exec(val))return true;reg=/^(\d{1,2}).(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{4}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/i;if(reg.exec(val))return true;reg=/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2}).+?(\d{4}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/i;if(reg.exec(val))return true;reg=/^(\d{4}).+?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/i;if(reg.exec(val))return true;if(shrt){reg=/^(\d{4})(\d\d)(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{4}).+?(\d{1,2}).+?(\d{1,2})$/;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{4})$/i;if(reg.exec(val))return true;reg=/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2}).+?(\d{4})$/i;if(reg.exec(val))return true;reg=/^(\d{4}).+?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).+?(\d{1,2})$/i;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(\d{1,2}).+?(\d{4})$/;if(reg.exec(val))return true;reg=/^(\d\d)(\d\d)(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/;if(reg.exec(val))return true;}
return false;}
function isEmail(val){var reg=/^[\w\.\+\-=]+@[\w\.\-]+\.[\w\-]+$/;return reg.exec(val)?true:false;}
function isIP(val){if(!isIPV4(val))
return isIPV6(val);return true;}
function isIPList(val){var lst=val.split(",");if(lst.length==0)return false;for(var i=0;i<lst.length;++i){if(!isIP(lst[i]))return false;}
return true;}
function isIpMask(val){var lst=val.split(".");if(lst.length==1){var reg=/^((1[0-9]?)|(2[0-9]?)|(3[0-2]?)|[4-9])$/;return reg.exec(val)?true:false;}
if(lst.length!=4)return false;for(var i=0;i<lst.length;++i){if(!isOctet(lst[i]))return false;}
return true;}
function isIPV4(val){var lst=val.split(".");if(lst.length!=4)return false;for(var i=0;i<lst.length;++i){if(!isOctet(lst[i]))return false;}
return true;}
function isIPV6(val){var reg=/^[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}$/;if(!reg.exec(val)){var cval=canonicalIPV6(val);if(!reg.exec(cval))
return false;}
return true;}
function isIpMaskList(val){var lst=val.split(",");if(lst.length==0)return false;for(var i=0;i<lst.length;++i){if(!isIpMask(lst[i]))return false;}
return true;}
function isNumber(val){var reg=/^\d+$/;return reg.exec(val)?true:false;}
function isNumberList(val){var reg=/^((\d+(,\d+)*)|(\d+(-|\.\.)\d+)|\*)$/;return reg.exec(val)?true:false;}
function isNumberListStrict(val){var reg=/^\d+(,\d+)*$/;return reg.exec(val)?true:false;}
function isOctet(val){var reg=/^(0|(1[0-9]{0,2})|(2(([0-4][0-9]?)|(5[0-5]?)|[6-9])?)|([3-9][0-9]?))$/;return reg.exec(val)?true:false;}
function isOptional(val){if(val=='')return null;return true;}
function isPort(val){var reg=/^\d+$/;return reg.exec(val)?(val&&(val<=65535)):false;}
function isRequired(val){if(val=='')return false;return true;}
function isSslUrl(val){var reg=/^https:\/\/[a-z0-9\-]*(\.[a-z0-9\-]*)*(:[0-9]+)?(\/.*)?$/i;return reg.exec(val)?true:false;}
function isSubnet(val){var prts=val.split("/");if(prts.length!=2)return false;return isIP(prts[0])&&isIpMask(prts[1]);}
function isSubnetList(val){var lst=val.split(",");if(lst.length==0)return false;for(var i=0;i<lst.length;++i){if(!isSubnet(lst[i]))return false;}
return true;}
function isTime(val){var reg;reg=/^(\d\d)(\d\d)(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{1,2}).+?(\d{1,2}).+?(\d{1,2})$/;if(reg.exec(val))return true;return false;}
function isTimestamp(val,fmt){if(!fmt)fmt='timestamp';switch(fmt){case'timestamp':var reg=/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (\d\d?), (\d{4}) (\d\d?):(\d\d):(\d\d) ([AP]M)$/i;if(reg.exec(val))return true;reg=/^(\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/;if(reg.exec(val))return true;break;case'date':var reg=/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) (\d\d?), (\d{4})$/i;if(reg.exec(val))return true;reg=/^(\d{4})-(\d\d)-(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d{4})(\d\d)(\d\d)$/;if(reg.exec(val))return true;break;case'time':var reg=/^(\d\d?):(\d\d):(\d\d) ([AP]M)$/i;if(reg.exec(val))return true;reg=/^(\d\d):(\d\d):(\d\d)$/;if(reg.exec(val))return true;reg=/^(\d\d)(\d\d)(\d\d)$/;if(reg.exec(val))return true;break;}
return false;}
function isUrl(val){var reg=/^https?:\/\/[a-z0-9\-]*(\.[a-z0-9\-]*)*(:[0-9]+)?(\/.*)?$/i;return reg.exec(val)?true:false;}