var Verify=Class.create({errorString:"",options:{regex:"",error_msg:"",convert_function:null,verify_function:null},initialize:function(a){this.errorString="";
Object.extend(this.options,a||{})},regex:function(b){this.errorString="";if(Object.isFunction(this.options.convert_function)){b.value=this.options.convert_function(b.value)
}var a=b.value;var c=new RegExp(this.options.regex);if(!c.test(a)||(Object.isFunction(this.options.verify_function)&&!this.options.verify_function(b.value))){if(this.options.error_msg==""){this.errorString="Ungültige Daten."
}else{this.errorString=this.options.error_msg}}return !this.isError()},dns_hostname:function(c){this.errorString="";
c.value=(c.value).toLowerCase();c.value=(c.value).replace(/^\s+/g,"");c.value=(c.value).replace(/\s+$/g,"");
var b=c.value;var a="^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z]|[a-z][a-z0-9\\-]*[a-z0-9])$";
var d=new RegExp(a);if(b!=""&&!d.test(b)){this.errorString="Hostname ist ungültig."
}return !this.isError()},dns_fqdn:function(b){this.errorString="";b.value=(b.value).toLowerCase();
b.value=(b.value).replace(/^\s+/g,"");b.value=(b.value).replace(/\s+$/g,"");var k=b.value;
var h="";var a="de";try{var d=k;var c=(d).match(/^(.+\.)?(.+)(\.)(.+)$/);if(c){d=c[2];
a=c[3];h=punycode.encode(d);if(h){var g="\\-?\\w+$";var j=new RegExp(g);if(j.test(h)&&h!=d){k=Object.isUndefined(c[1])?"xn--"+h+"."+a:c[1]+"xn--"+h+"."+a
}}}}catch(f){this.errorString=k+" ist kein gültiger Domainname (Fully Qualified Domain Name). Error: "+f.message
}if(!this.isError()){var g="^(?=^.{1,254}$)(^(?:(?!\\d+\\.|-)([a-z0-9]{1,63}|([a-z0-9\\-]{1,62}[a-z0-9]))\\.)+(?:[a-z]{2,})$)$";
if(a=="de"){g="^(?=^.{1,254}$)(^(?:(?!-)([a-z0-9]{1,63}|([a-z0-9\\-]{1,62}[a-z0-9]))\\.)+(?:[a-z]{2,})$)$"
}var j=new RegExp(g);if(!j.test(k)){this.errorString=k+" ist kein gültiger Domainname (Fully Qualified Domain Name)."
}try{}catch(f){console.debug(f)}}return !this.isError()},dns_ipv4:function(c){this.errorString="";
c.value=(c.value).replace(/^\s+/g,"");c.value=(c.value).replace(/\s+$/g,"");var b=c.value;
var a="^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
var d=new RegExp(a);if(!d.test(b)){this.errorString=b+" ist keine gülte IPv4 Adresse. Beispiel 192.168.1.20"
}return !this.isError()},dns_ipv6:function(g){this.errorString="";g.value=(g.value).replace(/^\s+/g,"");
g.value=(g.value).replace(/\s+$/g,"");var k=g.value;var h="^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$";
var j="^((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$";
var b="^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$";
var a="^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$";var f=new RegExp(h);var e=new RegExp(j);
var d=new RegExp(b);var c=new RegExp(a);if(!(f.test(k)||e.test(k)||d.test(k)||c.test(k))){this.errorString=k+" ist keine gülte IPv6 Adresse."
}return !this.isError()},ip:function(c){var a=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var b=c.match(a);this.errorString="";if(b==null){this.errorString+="IP Adresse: "+c+" ist keine gültige IP-Adresse (Bsp. IP Adresse: 192.168.1.12) ."
}else{for(i=1;i<=4;i++){var d=b[i];if(d>255){this.errorString+="IP Adresse: "+c+" ist keine gültige IP-Adresse.";
i=4}}}return !this.isError()},ipRange:function(d,b){var a=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var e=d.match(a);var c=b.match(a);this.errorString="";for(i=1;i<4;i++){if(e[i]!=c[i]){this.errorString+="IP Adressen müssen im gleichen Class C Netz sein ("+e[i]+" != "+c[i]+"). "
}}if(e[4]>c[4]){this.errorString+="Die IP Adressen "+d+" muss kleiner oder gleich "+b+" sein. "
}return !this.isError()},ipPart1_3:function(c){var a=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var b=c.match(a);this.errorString="";if(b==null){this.errorString+="Die IP-Adresse: "+c+" ist keine gültige Class-C Teil Adresse (Bsp. IP Adresse: 192.168.12) ."
}else{for(i=1;i<=3;i++){var d=b[i];if(d>255){this.errorString+="Segament "+i+" mit dem Wert "+d+" ist zu groß. Deshlab ist "+c+" keine gültige Adresse IP Adresse.";
i=4}}}return !this.isError()},ipPart:function(c){var a=/^(\d{1,3})$/;var b=c.match(a);
this.errorString="";if(b==null||b[1]<0||b[1]>255){this.errorString+="Der IP-Adress-Teil: "+c+" ist gültige (Werte von 0-255)."
}return !this.isError()},sld:function(c){this.errorString="";var a="[\\._\\*\\#\\@,\\:\\!\\^\\$\\+\\~\\/\\\\\\s]";
var b=new RegExp(a);c=c.replace(/^\s+/,"");c=c.replace(/\s+$/,"");if(b.test(c)){return false
}else{return true}},text:function(a){this.errorString="";if(a.length<1){this.errorString+="Die Angaben sind nicht ausreichend."
}return !this.isError()},config_text:function(a){this.errorString="";if(a.length<1){this.errorString+='Es muss ein Wert angegben werden. Für keinen Wert muss das Wort "null" verwendet werden.'
}return !this.isError()},name:function(a){this.errorString="";if(a.length<2){this.errorString+="Es muss eine Name angeben werden."
}return !this.isError()},number:function(a){this.errorString="";var b=new RegExp("^\\d+$");
if(!b.test(a)){if(a==""){this.errorString+="Es muss eine ganze Zahl angeben werden."
}else{this.errorString+=a+" ist keine Zahl."}}return !this.isError()},currency:function(a){this.errorString="";
var b=new RegExp("^\\d+(\\.\\d+)?$");if(!b.test(a)){if(a==""){this.errorString+="Es muss eine Reale Zahl angeben werden."
}else{this.errorString+=a+" ist keine Reale Zahl."}}return !this.isError()},cert_text:function(a){this.errorString="";
var b=new RegExp("^[a-zA-Z0-9_:,;\\(\\)\\-\\.\\& ]+$");if(!b.test(a)){this.errorString+="Es dürfen nur Buchstaben Zahlen und die Zeichen .,;:-_() verwendet werden."
}return !this.isError()},plain_text:function(a){this.errorString="";var b=new RegExp("^[a-zA-Z0-9_\\- ]+$");
if(!b.test(a)){this.errorString+="Es dürfen keine Sonderzeichen oder Umlaute verwendet werden."
}return !this.isError()},strict_text:function(a){this.errorString="";var b=new RegExp("^[a-zA-Z0-9_\\-]+$");
if(!b.test(a)){this.errorString+="Es dürfen keine Sonderzeichen, Umlaute oder Leerzeichen verwendet werden."
}return !this.isError()},checkbox:function(a){this.errorString="";if(a!=true){this.errorString+="Das Ankreuzfeld mus ausgewählt sein."
}return !this.isError()},fqdn:function(a){return this.hostname(a)},hostname:function(b){this.errorString="";
var a="^(([a-zA-Z0-9\\-])+\\.)+([a-z]{2,4})+$";var c=new RegExp(a);if(!c.test(b)){this.errorString+=b+" ist keine gültige FQDN. Es sind keine IP Adressen erlaubt (Beispiele: foo.de oder mail.foo.de oder boo.fii.foo.de)"
}return !this.isError()},email:function(b){this.errorString="";var a="^([a-zA-Z0-9_\\.\\-])+@(([a-zA-Z0-9\\-])+.)+([a-zA-Z0-9]{2,4})+$";
var c=new RegExp(a);if(!c.test(b)){if(b==""){this.errorString+="Es muss eine E-Mail Adresse angeben werden."
}else{this.errorString+=b+" ist keine gültige E-Mail Adresse."}}return !this.isError()
},datum:function(c){this.errorString="";var a="^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d\\d+$";
var b=new RegExp(a);return(b.test(c))},qutocorrectPhone:function(d,b){this.errorString="";
var a="^\\+\\d\\d+(( \\d+)+|\\d+)$";var c=new RegExp(a);return(c.test(d))},phone:function(c){this.errorString="";
var a="^\\+\\d\\d+(( \\d+)+|\\d+)$";var b=new RegExp(a);return(b.test(c))},stdName:function(c){this.errorString="";
var a="^[a-zA-Z0-9\\&\\,\\.\\+\\- ]+$";var b=new RegExp(a);return(b.test(c))},plz:function(d,b){this.errorString="";
if(b=="DE"||b=="de"){var a="^[0-9][0-9][0-9][0-9][0-9]$"}else{var a="^.+"}var c=new RegExp(a);
return(c.test(d))},isError:function(){return(this.errorString!="")?true:false},getError:function(){return this.errorString
}});var utf16={decode:function(d){var c=[],e=0,b=d.length,f,a;while(e<b){f=d.charCodeAt(e++);
if((f&63488)===55296){a=d.charCodeAt(e++);if(((f&64512)!==55296)||((a&64512)!==56320)){throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence")
}f=((f&1023)<<10)+(a&1023)+65536}c.push(f)}return c},encode:function(c){var b=[],d=0,a=c.length,e;
while(d<a){e=c[d++];if((e&63488)===55296){throw new RangeError("UTF-16(encode): Illegal UTF-16 value")
}if(e>65535){e-=65536;b.push(String.fromCharCode(((e>>>10)&1023)|55296));e=56320|(e&1023)
}b.push(String.fromCharCode(e))}return b.join("")}};var punycode=new function Punycode(){var f=128;
var l=72;var a="\x2D";var c=36;var e=700;var b=1;var g=26;var n=38;var d=2147483647;
function k(o){return o-48<10?o-22:o-65<26?o-65:o-97<26?o-97:c}function m(p,o){return p+22+75*(p<26)-((o!=0)<<5)
}function j(r,q,p){var o;r=p?Math.floor(r/e):(r>>1);r+=Math.floor(r/q);for(o=0;r>(((c-b)*g)>>1);
o+=c){r=Math.floor(r/(c-b))}return Math.floor(o+(c-b+1)*r/(r+n))}function h(p,o){p-=(p-97<26)<<5;
return p+((!o&&(p-65<26))<<5)}this.decode=function(v,q){var s=[];var H=[];var B=v.length;
var A,F,E,r,p,D,z,o,u,C,y,x,G;A=f;E=0;r=l;p=v.lastIndexOf(a);if(p<0){p=0}for(D=0;
D<p;++D){if(q){H[s.length]=(v.charCodeAt(D)-65<26)}if(v.charCodeAt(D)>=128){throw new RangeError("Illegal input >= 0x80")
}s.push(v.charCodeAt(D))}for(z=p>0?p+1:0;z<B;){for(o=E,u=1,C=c;;C+=c){if(z>=B){throw RangeError("punycode_bad_input(1)")
}y=k(v.charCodeAt(z++));if(y>=c){throw RangeError("punycode_bad_input(2)")}if(y>Math.floor((d-E)/u)){throw RangeError("punycode_overflow(1)")
}E+=y*u;x=C<=r?b:C>=r+g?g:C-r;if(y<x){break}if(u>Math.floor(d/(c-x))){throw RangeError("punycode_overflow(2)")
}u*=(c-x)}F=s.length+1;r=j(E-o,F,o===0);if(Math.floor(E/F)>d-A){throw RangeError("punycode_overflow(3)")
}A+=Math.floor(E/F);E%=F;if(q){H.splice(E,0,v.charCodeAt(z-1)-65<26)}s.splice(E,0,A);
E++}if(q){for(E=0,G=s.length;E<G;E++){if(H[E]){s[E]=(String.fromCharCode(s[E]).toUpperCase()).charCodeAt(0)
}}}return utf16.encode(s)};this.encode=function(C,o){var u,E,y,B,z,x,v,r,w,F,D,p;
if(o){p=utf16.decode(C)}C=utf16.decode(C.toLowerCase());var A=C.length;if(o){for(x=0;
x<A;x++){p[x]=C[x]!=p[x]}}var s=[];u=f;E=0;z=l;for(x=0;x<A;++x){if(C[x]<128){s.push(String.fromCharCode(p?h(C[x],p[x]):C[x]))
}}y=B=s.length;if(B>0){s.push(a)}while(y<A){for(v=d,x=0;x<A;++x){D=C[x];if(D>=u&&D<v){v=D
}}if(v-u>Math.floor((d-E)/(y+1))){throw RangeError("punycode_overflow (1)")}E+=(v-u)*(y+1);
u=v;for(x=0;x<A;++x){D=C[x];if(D<u){if(++E>d){return Error("punycode_overflow(2)")
}}if(D==u){for(r=E,w=c;;w+=c){F=w<=z?b:w>=z+g?g:w-z;if(r<F){break}s.push(String.fromCharCode(m(F+(r-F)%(c-F),0)));
r=Math.floor((r-F)/(c-F))}s.push(String.fromCharCode(m(r,o&&p[x]?1:0)));z=j(E,y+1,y==B);
E=0;++y}}++E,++u}return s.join("")}}();var utf16={decode:function(d){var c=[],e=0,b=d.length,f,a;
while(e<b){f=d.charCodeAt(e++);if((f&63488)===55296){a=d.charCodeAt(e++);if(((f&64512)!==55296)||((a&64512)!==56320)){throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence")
}f=((f&1023)<<10)+(a&1023)+65536}c.push(f)}return c},encode:function(c){var b=[],d=0,a=c.length,e;
while(d<a){e=c[d++];if((e&63488)===55296){throw new RangeError("UTF-16(encode): Illegal UTF-16 value")
}if(e>65535){e-=65536;b.push(String.fromCharCode(((e>>>10)&1023)|55296));e=56320|(e&1023)
}b.push(String.fromCharCode(e))}return b.join("")}};var punycode=new function Punycode(){var f=128;
var l=72;var a="\x2D";var c=36;var e=700;var b=1;var g=26;var n=38;var d=2147483647;
function k(o){return o-48<10?o-22:o-65<26?o-65:o-97<26?o-97:c}function m(p,o){return p+22+75*(p<26)-((o!=0)<<5)
}function j(r,q,p){var o;r=p?Math.floor(r/e):(r>>1);r+=Math.floor(r/q);for(o=0;r>(((c-b)*g)>>1);
o+=c){r=Math.floor(r/(c-b))}return Math.floor(o+(c-b+1)*r/(r+n))}function h(p,o){p-=(p-97<26)<<5;
return p+((!o&&(p-65<26))<<5)}this.decode=function(v,q){var s=[];var H=[];var B=v.length;
var A,F,E,r,p,D,z,o,u,C,y,x,G;A=f;E=0;r=l;p=v.lastIndexOf(a);if(p<0){p=0}for(D=0;
D<p;++D){if(q){H[s.length]=(v.charCodeAt(D)-65<26)}if(v.charCodeAt(D)>=128){throw new RangeError("Illegal input >= 0x80")
}s.push(v.charCodeAt(D))}for(z=p>0?p+1:0;z<B;){for(o=E,u=1,C=c;;C+=c){if(z>=B){throw RangeError("punycode_bad_input(1)")
}y=k(v.charCodeAt(z++));if(y>=c){throw RangeError("punycode_bad_input(2)")}if(y>Math.floor((d-E)/u)){throw RangeError("punycode_overflow(1)")
}E+=y*u;x=C<=r?b:C>=r+g?g:C-r;if(y<x){break}if(u>Math.floor(d/(c-x))){throw RangeError("punycode_overflow(2)")
}u*=(c-x)}F=s.length+1;r=j(E-o,F,o===0);if(Math.floor(E/F)>d-A){throw RangeError("punycode_overflow(3)")
}A+=Math.floor(E/F);E%=F;if(q){H.splice(E,0,v.charCodeAt(z-1)-65<26)}s.splice(E,0,A);
E++}if(q){for(E=0,G=s.length;E<G;E++){if(H[E]){s[E]=(String.fromCharCode(s[E]).toUpperCase()).charCodeAt(0)
}}}return utf16.encode(s)};this.encode=function(C,o){var u,E,y,B,z,x,v,r,w,F,D,p;
if(o){p=utf16.decode(C)}C=utf16.decode(C.toLowerCase());var A=C.length;if(o){for(x=0;
x<A;x++){p[x]=C[x]!=p[x]}}var s=[];u=f;E=0;z=l;for(x=0;x<A;++x){if(C[x]<128){s.push(String.fromCharCode(p?h(C[x],p[x]):C[x]))
}}y=B=s.length;if(B>0){s.push(a)}while(y<A){for(v=d,x=0;x<A;++x){D=C[x];if(D>=u&&D<v){v=D
}}if(v-u>Math.floor((d-E)/(y+1))){throw RangeError("punycode_overflow (1)")}E+=(v-u)*(y+1);
u=v;for(x=0;x<A;++x){D=C[x];if(D<u){if(++E>d){return Error("punycode_overflow(2)")
}}if(D==u){for(r=E,w=c;;w+=c){F=w<=z?b:w>=z+g?g:w-z;if(r<F){break}s.push(String.fromCharCode(m(F+(r-F)%(c-F),0)));
r=Math.floor((r-F)/(c-F))}s.push(String.fromCharCode(m(r,o&&p[x]?1:0)));z=j(E,y+1,y==B);
E=0;++y}}++E,++u}return s.join("")}}();