// vars.js

goVars = {
	txtFld: {
		whatSimple: "Partner, Sponsoren, Name...",
		whereSimple: "PLZ oder Ort",
		firstName: "Max",
		lastName: "Mustermann",
		street: "Musterstraße 1a",
		houseNumber: "",
		postalCode: "12345",
		whatComplex: "z.B. Mode",
		city: "Musterstadt",
		phone: "z.B. 0891234567",
		whatWeb: "z.B. iPod, Armbanduhr",
		whatDetails: "@whatDetails.text.default@",
		cityMap: "PLZ, Ort",
		streetMap: "Straße, Hausnummer",
		branch: "z.B. Mode"
	}
}

var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);

function compareVersions(sVersion1, sVersion2) {

    var aVersion1 = sVersion1.split(".");
    var aVersion2 = sVersion2.split(".");

    if (aVersion1.length > aVersion2.length) {
        for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
            aVersion2.push("0");
        }
    } else if (aVersion1.length < aVersion2.length) {
        for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
            aVersion1.push("0");
        }
    }

    for (var i=0; i < aVersion1.length; i++) {

        if (aVersion1[i] < aVersion2[i]) {
            return -1;
        } else if (aVersion1[i] > aVersion2[i]) {
            return 1;
        }
    }

    return 0;

}

var isOpera = sUserAgent.indexOf("Opera") > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = isMinOpera8 = false;

if (isOpera) {
    var fOperaVersion;
    if(navigator.appName == "Opera") {
        fOperaVersion = fAppVersion;
    } else {
        var reOperaVersion = new RegExp("Opera (\\d+\\.\\d+)");
        reOperaVersion.test(sUserAgent);
        fOperaVersion = parseFloat(RegExp["$1"]);
    }

    isMinOpera4 = fOperaVersion >= 4;
    isMinOpera5 = fOperaVersion >= 5;
    isMinOpera6 = fOperaVersion >= 6;
    isMinOpera7 = fOperaVersion >= 7;
    isMinOpera7_5 = fOperaVersion >= 7.5;
    isMinOpera8 = fOperaVersion >= 8;
	isMinOpera9 = fOperaVersion >= 9;
}

var isKHTML = sUserAgent.indexOf("KHTML") > -1
              || sUserAgent.indexOf("Konqueror") > -1
              || sUserAgent.indexOf("AppleWebKit") > -1;

var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;

if (isKHTML) {
    isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
    isKonq = sUserAgent.indexOf("Konqueror") > -1;

    if (isSafari) {
        var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)");
        reAppleWebKit.test(sUserAgent);
        var fAppleWebKitVersion = parseFloat(RegExp["$1"]);

        isMinSafari1 = fAppleWebKitVersion >= 85;
        isMinSafari1_2 = fAppleWebKitVersion >= 124;
    } else if (isKonq) {

        var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)");
        reKonq.test(sUserAgent);
        isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
        isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
        isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
        isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
    }

}

var isIE = sUserAgent.indexOf("compatible") > -1
           && sUserAgent.indexOf("MSIE") > -1
           && !isOpera;

var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;

if (isIE) {
    var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
    reIE.test(sUserAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);

    isMinIE4 = fIEVersion >= 4;
    isMinIE5 = fIEVersion >= 5;
    isMinIE5_5 = fIEVersion >= 5.5;
    isMinIE6 = fIEVersion >= 6.0;
	isMinIE7 = fIEVersion >= 7.0;
}

var isMoz = sUserAgent.indexOf("Gecko") > -1
            && !isKHTML;

var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;

if (isMoz) {
    var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
    reMoz.test(sUserAgent);
    isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
    isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
    isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
}

var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML
            && (sUserAgent.indexOf("Mozilla") == 0)
            && (navigator.appName == "Netscape")
            && (fAppVersion >= 4.0 && fAppVersion < 5.0);

var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;

if (isNS4) {
    isMinNS4 = true;
    isMinNS4_5 = fAppVersion >= 4.5;
    isMinNS4_7 = fAppVersion >= 4.7;
    isMinNS4_8 = fAppVersion >= 4.8;
}

var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC")
            || (navigator.platform == "Macintosh");

var isUnix = (navigator.platform == "X11") && !isWin && !isMac;

var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
var isMac68K = isMacPPC = false;
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;

if (isWin) {
    isWin95 = sUserAgent.indexOf("Win95") > -1
              || sUserAgent.indexOf("Windows 95") > -1;
    isWin98 = sUserAgent.indexOf("Win98") > -1
              || sUserAgent.indexOf("Windows 98") > -1;
    isWinME = sUserAgent.indexOf("Win 9x 4.90") > -1
              || sUserAgent.indexOf("Windows ME") > -1;
    isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1
              || sUserAgent.indexOf("Windows 2000") > -1;
    isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1
              || sUserAgent.indexOf("Windows XP") > -1;
    isWinNT4 = sUserAgent.indexOf("WinNT") > -1
              || sUserAgent.indexOf("Windows NT") > -1
              || sUserAgent.indexOf("WinNT4.0") > -1
              || sUserAgent.indexOf("Windows NT 4.0") > -1
              && (!isWinME && !isWin2K && !isWinXP);
}

if (isMac) {
    isMac68K = sUserAgent.indexOf("Mac_68000") > -1
               || sUserAgent.indexOf("68K") > -1;
    isMacPPC = sUserAgent.indexOf("Mac_PowerPC") > -1
               || sUserAgent.indexOf("PPC") > -1;
}

if (isUnix) {
    isSunOS = sUserAgent.indexOf("SunOS") > -1;

    if (isSunOS) {
        var reSunOS = new RegExp("SunOS (\\d+\\.\\d+(?:\\.\\d+)?)");
        reSunOS.test(sUserAgent);
        isMinSunOS4 = compareVersions(RegExp["$1"], "4.0") >= 0;
        isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0;
        isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0;
    }
}
eval(function(p,a,c,k,e,d){e = function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('7(1D 1u.6=="R"){1u.R=1u.R;v 6=q(a,c){7(1u==l)u 1q 6(a,c);a=a||12;7(6.1p(a))u 1q 6(12)[6.D.27?"27":"2P"](a);7(1D a=="20"){v m=/^[^<]*(<(.|\\s)+>)[^>]*$/.2M(a);7(m)a=6.41([m[1]]);I u 1q 6(c).2p(a)}u l.6p(a.1l==2A&&a||(a.3W||a.H&&a!=1u&&!a.1W&&a[0]!=R&&a[0].1W)&&6.3N(a)||[a])};7(1D $!="R")6.30$=$;v $=6;6.D=6.8n={3W:"1.1.2",8K:q(){u l.H},H:0,2b:q(1P){u 1P==R?6.3N(l):l[1P]},2j:q(a){v K=6(a);K.6n=l;u K},6p:q(a){l.H=0;[].1m.15(l,a);u l},J:q(D,1A){u 6.J(l,D,1A)},2g:q(1b){v 4W=-1;l.J(q(i){7(l==1b)4W=i});u 4W},1G:q(23,O,B){v 1b=23;7(23.1l==3t)7(O==R)u l.H&&6[B||"1G"](l[0],23)||R;I{1b={};1b[23]=O}u l.J(q(2g){P(v G 1B 1b)6.1G(B?l.1o:l,G,6.G(l,1b[G],B,2g,G))})},1n:q(23,O){u l.1G(23,O,"3g")},2I:q(e){7(1D e=="20")u l.3u().3s(12.8q(e));v t="";6.J(e||l,q(){6.J(l.3b,q(){7(l.1W!=8)t+=l.1W!=1?l.6u:6.D.2I([l])})});u t},2H:q(){v a=6.41(1v);u l.J(q(){v b=a[0].3j(U);l.Y.2T(b,l);1Y(b.1a)b=b.1a;b.4A(l)})},3s:q(){u l.3d(1v,U,1,q(a){l.4A(a)})},5j:q(){u l.3d(1v,U,-1,q(a){l.2T(a,l.1a)})},5k:q(){u l.3d(1v,11,1,q(a){l.Y.2T(a,l)})},5u:q(){u l.3d(1v,11,-1,q(a){l.Y.2T(a,l.2c)})},4f:q(){u l.6n||6([])},2p:q(t){u l.2j(6.2Y(l,q(a){u 6.2p(t,a)}),t)},4Y:q(4M){u l.2j(6.2Y(l,q(a){v a=a.3j(4M!=R?4M:U);a.$1E=14;u a}))},1C:q(t){u l.2j(6.1p(t)&&6.2n(l,q(2u,2g){u t.15(2u,[2g])})||6.3z(t,l))},2e:q(t){u l.2j(t.1l==3t&&6.3z(t,l,U)||6.2n(l,q(a){u(t.1l==2A||t.3W)?6.3y(a,t)<0:a!=t}))},1K:q(t){u l.2j(6.2m(l.2b(),t.1l==3t?6(t).2b():t.H!=R&&(!t.1e||t.1e=="8s")?t:[t]))},4k:q(1s){u 1s?6.1C(1s,l).r.H>0:11},19:q(19){u 19==R?(l.H?l[0].O:14):l.1G("O",19)},4T:q(19){u 19==R?(l.H?l[0].2G:14):l.3u().3s(19)},3d:q(1A,1N,3Y,D){v 4Y=l.H>1;v a=6.41(1A);7(3Y<0)a.8t();u l.J(q(){v 1b=l;7(1N&&6.1e(l,"1N")&&6.1e(a[0],"3m"))1b=l.5K("1X")[0]||l.4A(12.56("1X"));6.J(a,q(){D.15(1b,[4Y?l.3j(U):l])})})}};6.1w=6.D.1w=q(){v 1T=1v[0],a=1;7(1v.H==1){1T=l;a=0}v G;1Y(G=1v[a++])P(v i 1B G)1T[i]=G[i];u 1T};6.1w({8u:q(){7(6.30$)$=6.30$;u 6},1p:q(D){u!!D&&1D D!="20"&&!D.1e&&1D D[0]=="R"&&/q/i.1j(D+"")},4C:q(C){u C.60&&C.5J&&!C.5J.63},1e:q(C,W){u C.1e&&C.1e.3K()==W.3K()},J:q(1b,D,1A){7(1b.H==R)P(v i 1B 1b)D.15(1b[i],1A||[i,1b[i]]);I P(v i=0,6q=1b.H;i<6q;i++)7(D.15(1b[i],1A||[i,1b[i]])===11)3M;u 1b},G:q(C,O,B,2g,G){7(6.1p(O))O=O.3n(C,[2g]);v 5G=/z-?2g|8x-?8y|1c|58|8z-?26/i;u O&&O.1l==3J&&B=="3g"&&!5G.1j(G)?O+"4R":O},18:{1K:q(C,c){6.J(c.3o(/\\s+/),q(i,N){7(!6.18.2Q(C.18,N))C.18+=(C.18?" ":"")+N})},2d:q(C,c){C.18=c?6.2n(C.18.3o(/\\s+/),q(N){u!6.18.2Q(c,N)}).6r(" "):""},2Q:q(t,c){t=t.18||t;c=c.1S(/([\\.\\\\\\+\\*\\?\\[\\^\\]\\$\\(\\)\\{\\}\\=\\!\\<\\>\\|\\:])/g,"\\\\$1");u t&&1q 4u("(^|\\\\s)"+c+"(\\\\s|$)").1j(t)}},4c:q(e,o,f){P(v i 1B o){e.1o["1L"+i]=e.1o[i];e.1o[i]=o[i]}f.15(e,[]);P(v i 1B o)e.1o[i]=e.1o["1L"+i]},1n:q(e,p){7(p=="26"||p=="3Q"){v 1L={},44,3I,d=["8A","8B","8C","8D"];6.J(d,q(){1L["8E"+l]=0;1L["8F"+l+"8G"]=0});6.4c(e,1L,q(){7(6.1n(e,"1h")!="1V"){44=e.8H;3I=e.8I}I{e=6(e.3j(U)).2p(":4i").5m("2W").4f().1n({4m:"1F",3k:"7H",1h:"2z",8L:"0",6w:"0"}).5A(e.Y)[0];v 3i=6.1n(e.Y,"3k");7(3i==""||3i=="4a")e.Y.1o.3k="6x";44=e.6y;3I=e.6z;7(3i==""||3i=="4a")e.Y.1o.3k="4a";e.Y.36(e)}});u p=="26"?44:3I}u 6.3g(e,p)},3g:q(C,G,53){v K;7(G=="1c"&&6.V.1g)u 6.1G(C.1o,"1c");7(G=="4g"||G=="2s")G=6.V.1g?"3X":"2s";7(!53&&C.1o[G])K=C.1o[G];I 7(12.42&&12.42.4V){7(G=="2s"||G=="3X")G="4g";G=G.1S(/([A-Z])/g,"-$1").4l();v N=12.42.4V(C,14);7(N)K=N.54(G);I 7(G=="1h")K="1V";I 6.4c(C,{1h:"2z"},q(){v c=12.42.4V(l,"");K=c&&c.54(G)||""})}I 7(C.4e){v 55=G.1S(/\\-(\\w)/g,q(m,c){u c.3K()});K=C.4e[G]||C.4e[55]}u K},41:q(a){v r=[];6.J(a,q(i,1z){7(!1z)u;7(1z.1l==3J)1z=1z.6C();7(1D 1z=="20"){v s=6.32(1z),22=12.56("22"),2h=[];v 2H=!s.17("<1t")&&[1,"<40>","</40>"]||(!s.17("<6D")||!s.17("<1X")||!s.17("<6E"))&&[1,"<1N>","</1N>"]||!s.17("<3m")&&[2,"<1N><1X>","</1X></1N>"]||(!s.17("<6F")||!s.17("<6G"))&&[3,"<1N><1X><3m>","</3m></1X></1N>"]||[0,"",""];22.2G=2H[1]+s+2H[2];1Y(2H[0]--)22=22.1a;7(6.V.1g){7(!s.17("<1N")&&s.17("<1X")<0)2h=22.1a&&22.1a.3b;I 7(2H[1]=="<1N>"&&s.17("<1X")<0)2h=22.3b;P(v n=2h.H-1;n>=0;--n)7(6.1e(2h[n],"1X")&&!2h[n].3b.H)2h[n].Y.36(2h[n])}1z=22.3b}7(1z.H===0&&!6.1e(1z,"3w"))u;7(1z[0]==R||6.1e(1z,"3w"))r.1m(1z);I r=6.2m(r,1z)});u r},1G:q(C,W,O){v 2l=6.4C(C)?{}:{"P":"6J","6L":"18","4g":6.V.1g?"3X":"2s",2s:6.V.1g?"3X":"2s",2G:"2G",18:"18",O:"O",2U:"2U",2W:"2W",88:"6N",2R:"2R"};7(W=="1c"&&6.V.1g&&O!=R){C.58=1;u C.1C=C.1C.1S(/4h\\([^\\)]*\\)/6O,"")+(O==1?"":"4h(1c="+O*6c+")")}I 7(W=="1c"&&6.V.1g)u C.1C?4S(C.1C.6P(/4h\\(1c=(.*)\\)/)[1])/6c:1;7(W=="1c"&&6.V.3h&&O==1)O=0.6R;7(2l[W]){7(O!=R)C[2l[W]]=O;u C[2l[W]]}I 7(O==R&&6.V.1g&&6.1e(C,"3w")&&(W=="80"||W=="7Z"))u C.6T(W).6u;I 7(C.60){7(O!=R)C.6V(W,O);7(6.V.1g&&/5E|3f/.1j(W)&&!6.4C(C))u C.33(W,2);u C.33(W)}I{W=W.1S(/-([a-z])/6W,q(z,b){u b.3K()});7(O!=R)C[W]=O;u C[W]}},32:q(t){u t.1S(/^\\s+|\\s+$/g,"")},3N:q(a){v r=[];7(a.1l!=2A)P(v i=0,2L=a.H;i<2L;i++)r.1m(a[i]);I r=a.3O(0);u r},3y:q(b,a){P(v i=0,2L=a.H;i<2L;i++)7(a[i]==b)u i;u-1},2m:q(2r,3P){v r=[].3O.3n(2r,0);P(v i=0,5c=3P.H;i<5c;i++)7(6.3y(3P[i],r)==-1)2r.1m(3P[i]);u 2r},2n:q(1O,D,4j){7(1D D=="20")D=1q 4v("a","i","u "+D);v 1f=[];P(v i=0,2u=1O.H;i<2u;i++)7(!4j&&D(1O[i],i)||4j&&!D(1O[i],i))1f.1m(1O[i]);u 1f},2Y:q(1O,D){7(1D D=="20")D=1q 4v("a","u "+D);v 1f=[],r=[];P(v i=0,2u=1O.H;i<2u;i++){v 19=D(1O[i],i);7(19!==14&&19!=R){7(19.1l!=2A)19=[19];1f=1f.6Z(19)}}v r=1f.H?[1f[0]]:[];5g:P(v i=1,5f=1f.H;i<5f;i++){P(v j=0;j<i;j++)7(1f[i]==r[j])5F 5g;r.1m(1f[i])}u r}});1q q(){v b=7K.71.4l();6.V={2F:/5D/.1j(b),3e:/3e/.1j(b),1g:/1g/.1j(b)&&!/3e/.1j(b),3h:/3h/.1j(b)&&!/(72|5D)/.1j(b)};6.7G=!6.V.1g||12.74=="75"};6.J({5v:"a.Y",4y:"6.4y(a)",76:"6.29(a,2,\'2c\')",7C:"6.29(a,2,\'5t\')",78:"6.2w(a.Y.1a,a)",79:"6.2w(a.1a)"},q(i,n){6.D[i]=q(a){v K=6.2Y(l,n);7(a&&1D a=="20")K=6.3z(a,K);u l.2j(K)}});6.J({5A:"3s",7b:"5j",2T:"5k",7d:"5u"},q(i,n){6.D[i]=q(){v a=1v;u l.J(q(){P(v j=0,2L=a.H;j<2L;j++)6(a[j])[n](l)})}});6.J({5m:q(23){6.1G(l,23,"");l.7f(23)},7g:q(c){6.18.1K(l,c)},7h:q(c){6.18.2d(l,c)},7j:q(c){6.18[6.18.2Q(l,c)?"2d":"1K"](l,c)},2d:q(a){7(!a||6.1C(a,[l]).r.H)l.Y.36(l)},3u:q(){1Y(l.1a)l.36(l.1a)}},q(i,n){6.D[i]=q(){u l.J(n,1v)}});6.J(["5r","5o","5q","5w"],q(i,n){6.D[n]=q(1P,D){u l.1C(":"+n+"("+1P+")",D)}});6.J(["26","3Q"],q(i,n){6.D[n]=q(h){u h==R?(l.H?6.1n(l[0],n):14):l.1n(n,h.1l==3t?h:h+"4R")}});6.1w({1s:{"":"m[2]==\'*\'||6.1e(a,m[2])","#":"a.33(\'2D\')==m[2]",":":{5o:"i<m[3]-0",5q:"i>m[3]-0",29:"m[3]-0==i",5r:"m[3]-0==i",2r:"i==0",2X:"i==r.H-1",5S:"i%2==0",5T:"i%2","29-3r":"6.29(a.Y.1a,m[3],\'2c\',a)==a","2r-3r":"6.29(a.Y.1a,1,\'2c\')==a","2X-3r":"6.29(a.Y.7m,1,\'5t\')==a","7o-3r":"6.2w(a.Y.1a).H==1",5v:"a.1a",3u:"!a.1a",5w:"6.D.2I.15([a]).17(m[3])>=0",38:\'a.B!="1F"&&6.1n(a,"1h")!="1V"&&6.1n(a,"4m")!="1F"\',1F:\'a.B=="1F"||6.1n(a,"1h")=="1V"||6.1n(a,"4m")=="1F"\',7u:"!a.2U",2U:"a.2U",2W:"a.2W",2R:"a.2R||6.1G(a,\'2R\')",2I:"a.B==\'2I\'",4i:"a.B==\'4i\'",5y:"a.B==\'5y\'",4F:"a.B==\'4F\'",5z:"a.B==\'5z\'",4Q:"a.B==\'4Q\'",5a:"a.B==\'5a\'",5B:"a.B==\'5B\'",3x:\'a.B=="3x"||6.1e(a,"3x")\',5C:"/5C|40|7z|3x/i.1j(a.1e)"},".":"6.18.2Q(a,m[2])","@":{"=":"z==m[4]","!=":"z!=m[4]","^=":"z&&!z.17(m[4])","$=":"z&&z.2S(z.H - m[4].H,m[4].H)==m[4]","*=":"z&&z.17(m[4])>=0","":"z",4t:q(m){u["",m[1],m[3],m[2],m[5]]},5Q:"z=a[m[3]];7(!z||/5E|3f/.1j(m[3]))z=6.1G(a,m[3]);"},"[":"6.2p(m[2],a).H"},5N:[/^\\[ *(@)([a-2o-3C-]*) *([!*$^=]*) *(\'?"?)(.*?)\\4 *\\]/i,/^(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]/,/^(:)([a-2o-3C-]*)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/i,/^([:.#]*)([a-2o-3C*-]*)/i],1R:[/^(\\/?\\.\\.)/,"a.Y",/^(>|\\/)/,"6.2w(a.1a)",/^(\\+)/,"6.29(a,2,\'2c\')",/^(~)/,q(a){v s=6.2w(a.Y.1a);u s.3O(6.3y(a,s)+1)}],3z:q(1s,1O,2e){v 1L,N=[];1Y(1s&&1s!=1L){1L=1s;v f=6.1C(1s,1O,2e);1s=f.t.1S(/^\\s*,\\s*/,"");N=2e?1O=f.r:6.2m(N,f.r)}u N},2p:q(t,1y){7(1D t!="20")u[t];7(1y&&!1y.1W)1y=14;1y=1y||12;7(!t.17("//")){1y=1y.4G;t=t.2S(2,t.H)}I 7(!t.17("/")){1y=1y.4G;t=t.2S(1,t.H);7(t.17("/")>=1)t=t.2S(t.17("/"),t.H)}v K=[1y],2a=[],2X=14;1Y(t&&2X!=t){v r=[];2X=t;t=6.32(t).1S(/^\\/\\//i,"");v 3B=11;v 1H=/^[\\/>]\\s*([a-2o-9*-]+)/i;v m=1H.2M(t);7(m){6.J(K,q(){P(v c=l.1a;c;c=c.2c)7(c.1W==1&&(6.1e(c,m[1])||m[1]=="*"))r.1m(c)});K=r;t=t.1S(1H,"");7(t.17(" ")==0)5F;3B=U}I{P(v i=0;i<6.1R.H;i+=2){v 1H=6.1R[i];v m=1H.2M(t);7(m){r=K=6.2Y(K,6.1p(6.1R[i+1])?6.1R[i+1]:q(a){u 3l(6.1R[i+1])});t=6.32(t.1S(1H,""));3B=U;3M}}}7(t&&!3B){7(!t.17(",")){7(K[0]==1y)K.4K();6.2m(2a,K);r=K=[1y];t=" "+t.2S(1,t.H)}I{v 31=/^([a-2o-3C-]+)(#)([a-2o-9\\\\*30-]*)/i;v m=31.2M(t);7(m){m=[0,m[2],m[3],m[1]]}I{31=/^([#.]?)([a-2o-9\\\\*30-]*)/i;m=31.2M(t)}7(m[1]=="#"&&K[K.H-1].4X){v 2i=K[K.H-1].4X(m[2]);7(6.V.1g&&2i&&2i.2D!=m[2])2i=6(\'[@2D="\'+m[2]+\'"]\',K[K.H-1])[0];K=r=2i&&(!m[3]||6.1e(2i,m[3]))?[2i]:[]}I{7(m[1]==".")v 4q=1q 4u("(^|\\\\s)"+m[2]+"(\\\\s|$)");6.J(K,q(){v 3E=m[1]!=""||m[0]==""?"*":m[2];7(6.1e(l,"7I")&&3E=="*")3E="3c";6.2m(r,m[1]!=""&&K.H!=1?6.4w(l,[],m[1],m[2],4q):l.5K(3E))});7(m[1]=="."&&K.H==1)r=6.2n(r,q(e){u 4q.1j(e.18)});7(m[1]=="#"&&K.H==1){v 5L=r;r=[];6.J(5L,q(){7(l.33("2D")==m[2]){r=[l];u 11}})}K=r}t=t.1S(31,"")}}7(t){v 19=6.1C(t,r);K=r=19.r;t=6.32(19.t)}}7(K&&K[0]==1y)K.4K();6.2m(2a,K);u 2a},1C:q(t,r,2e){1Y(t&&/^[a-z[({<*:.#]/i.1j(t)){v p=6.5N,m;6.J(p,q(i,1H){m=1H.2M(t);7(m){t=t.7L(m[0].H);7(6.1s[m[1]].4t)m=6.1s[m[1]].4t(m);u 11}});7(m[1]==":"&&m[2]=="2e")r=6.1C(m[3],r,U).r;I 7(m[1]=="."){v 1H=1q 4u("(^|\\\\s)"+m[2]+"(\\\\s|$)");r=6.2n(r,q(e){u 1H.1j(e.18||"")},2e)}I{v f=6.1s[m[1]];7(1D f!="20")f=6.1s[m[1]][m[2]];3l("f = q(a,i){"+(6.1s[m[1]].5Q||"")+"u "+f+"}");r=6.2n(r,f,2e)}}u{r:r,t:t}},4w:q(o,r,1R,W,1H){P(v s=o.1a;s;s=s.2c)7(s.1W==1){v 1K=U;7(1R==".")1K=s.18&&1H.1j(s.18);I 7(1R=="#")1K=s.33("2D")==W;7(1K)r.1m(s);7(1R=="#"&&r.H)3M;7(s.1a)6.4w(s,r,1R,W,1H)}u r},4y:q(C){v 4z=[];v N=C.Y;1Y(N&&N!=12){4z.1m(N);N=N.Y}u 4z},29:q(N,1f,3Y,C){1f=1f||1;v 1P=0;P(;N;N=N[3Y]){7(N.1W==1)1P++;7(1P==1f||1f=="5S"&&1P%2==0&&1P>1&&N==C||1f=="5T"&&1P%2==1&&N==C)u N}},2w:q(n,C){v r=[];P(;n;n=n.2c){7(n.1W==1&&(!C||n!=C))r.1m(n)}u r}});6.F={1K:q(S,B,1k,E){7(6.V.1g&&S.45!=R)S=1u;7(E)1k.E=E;7(!1k.2y)1k.2y=l.2y++;7(!S.$1E)S.$1E={};v 34=S.$1E[B];7(!34){34=S.$1E[B]={};7(S["35"+B])34[0]=S["35"+B]}34[1k.2y]=1k;S["35"+B]=l.5Y;7(!l.1i[B])l.1i[B]=[];l.1i[B].1m(S)},2y:1,1i:{},2d:q(S,B,1k){7(S.$1E){v i,j,k;7(B&&B.B){1k=B.1k;B=B.B}7(B&&S.$1E[B])7(1k)5V S.$1E[B][1k.2y];I P(i 1B S.$1E[B])5V S.$1E[B][i];I P(j 1B S.$1E)l.2d(S,j);P(k 1B S.$1E[B])7(k){k=U;3M}7(!k)S["35"+B]=14}},1Q:q(B,E,S){E=6.3N(E||[]);7(!S)6.J(l.1i[B]||[],q(){6.F.1Q(B,E,l)});I{v 1k=S["35"+B],19,D=6.1p(S[B]);7(1k){E.61(l.2l({B:B,1T:S}));7((19=1k.15(S,E))!==11)l.4E=U}7(D&&19!==11)S[B]();l.4E=11}},5Y:q(F){7(1D 6=="R"||6.F.4E)u;F=6.F.2l(F||1u.F||{});v 3R;v c=l.$1E[F.B];v 1A=[].3O.3n(1v,1);1A.61(F);P(v j 1B c){1A[0].1k=c[j];1A[0].E=c[j].E;7(c[j].15(l,1A)===11){F.2q();F.2E();3R=11}}7(6.V.1g)F.1T=F.2q=F.2E=F.1k=F.E=14;u 3R},2l:q(F){7(!F.1T&&F.62)F.1T=F.62;7(F.64==R&&F.66!=R){v e=12.4G,b=12.63;F.64=F.66+(e.67||b.67);F.7W=F.7X+(e.6b||b.6b)}7(6.V.2F&&F.1T.1W==3){v 2V=F;F=6.1w({},2V);F.1T=2V.1T.Y;F.2q=q(){u 2V.2q()};F.2E=q(){u 2V.2E()}}7(!F.2q)F.2q=q(){l.3R=11};7(!F.2E)F.2E=q(){l.7Y=U};u F}};6.D.1w({3T:q(B,E,D){u l.J(q(){6.F.1K(l,B,D||E,E)})},6s:q(B,E,D){u l.J(q(){6.F.1K(l,B,q(F){6(l).6f(F);u(D||E).15(l,1v)},E)})},6f:q(B,D){u l.J(q(){6.F.2d(l,B,D)})},1Q:q(B,E){u l.J(q(){6.F.1Q(B,E,l)})},3V:q(){v a=1v;u l.6i(q(e){l.4L=l.4L==0?1:0;e.2q();u a[l.4L].15(l,[e])||11})},81:q(f,g){q 4N(e){v p=(e.B=="3Z"?e.82:e.83)||e.84;1Y(p&&p!=l)2B{p=p.Y}2J(e){p=l};7(p==l)u 11;u(e.B=="3Z"?f:g).15(l,[e])}u l.3Z(4N).6j(4N)},27:q(f){7(6.3U)f.15(12,[6]);I{6.3a.1m(q(){u f.15(l,[6])})}u l}});6.1w({3U:11,3a:[],27:q(){7(!6.3U){6.3U=U;7(6.3a){6.J(6.3a,q(){l.15(12)});6.3a=14}7(6.V.3h||6.V.3e)12.85("6m",6.27,11)}}});1q q(){6.J(("86,87,2P,89,8b,51,6i,8c,"+"8d,8e,8f,3Z,6j,8h,40,"+"4Q,8i,8j,8k,2x").3o(","),q(i,o){6.D[o]=q(f){u f?l.3T(o,f):l.1Q(o)}});7(6.V.3h||6.V.3e)12.8l("6m",6.27,11);I 7(6.V.1g){12.8m("<8o"+"8p 2D=6o 8r=U "+"3f=//:><\\/2f>");v 2f=12.4X("6o");7(2f)2f.37=q(){7(l.3D!="1Z")u;l.Y.36(l);6.27()};2f=14}I 7(6.V.2F)6.4Z=45(q(){7(12.3D=="8v"||12.3D=="1Z"){4o(6.4Z);6.4Z=14;6.27()}},10);6.F.1K(1u,"2P",6.27)};7(6.V.1g)6(1u).6s("51",q(){v 1i=6.F.1i;P(v B 1B 1i){v 49=1i[B],i=49.H;7(i&&B!=\'51\')6v 6.F.2d(49[i-1],B);1Y(--i)}});6.D.1w({6A:q(T,21,L){l.2P(T,21,L,1)},2P:q(T,21,L,1U){7(6.1p(T))u l.3T("2P",T);L=L||q(){};v B="5e";7(21)7(6.1p(21)){L=21;21=14}I{21=6.3c(21);B="65"}v 4d=l;6.3v({T:T,B:B,E:21,1U:1U,1Z:q(2K,16){7(16=="2O"||!1U&&16=="5M")4d.1G("2G",2K.3G).4U().J(L,[2K.3G,16,2K]);I L.15(4d,[2K.3G,16,2K])}});u l},6B:q(){u 6.3c(l)},4U:q(){u l.2p("2f").J(q(){7(l.3f)6.59(l.3f);I 6.50(l.2I||l.6H||l.2G||"")}).4f()}});7(!1u.3p)3p=q(){u 1q 6I("6K.6M")};6.J("5n,5R,5P,5W,5O,5I".3o(","),q(i,o){6.D[o]=q(f){u l.3T(o,f)}});6.1w({2b:q(T,E,L,B,1U){7(6.1p(E)){L=E;E=14}u 6.3v({T:T,E:E,2O:L,4s:B,1U:1U})},6Q:q(T,E,L,B){u 6.2b(T,E,L,B,1)},59:q(T,L){u 6.2b(T,14,L,"2f")},6S:q(T,E,L){u 6.2b(T,E,L,"6l")},6U:q(T,E,L,B){7(6.1p(E)){L=E;E={}}u 6.3v({B:"65",T:T,E:E,2O:L,4s:B})},6X:q(28){6.3q.28=28},6Y:q(5d){6.1w(6.3q,5d)},3q:{1i:U,B:"5e",28:0,5s:"70/x-73-3w-77",5i:U,48:U,E:14},3S:{},3v:q(s){s=6.1w({},6.3q,s);7(s.E){7(s.5i&&1D s.E!="20")s.E=6.3c(s.E);7(s.B.4l()=="2b"){s.T+=((s.T.17("?")>-1)?"&":"?")+s.E;s.E=14}}7(s.1i&&!6.4D++)6.F.1Q("5n");v 4x=11;v M=1q 3p();M.7i(s.B,s.T,s.48);7(s.E)M.3A("7k-7l",s.5s);7(s.1U)M.3A("7n-4J-7p",6.3S[s.T]||"7r, 7s 7v 7w 4n:4n:4n 7y");M.3A("X-7A-7B","3p");7(M.7D)M.3A("7E","7F");7(s.5H)s.5H(M);7(s.1i)6.F.1Q("5I",[M,s]);v 37=q(4r){7(M&&(M.3D==4||4r=="28")){4x=U;7(3H){4o(3H);3H=14}v 16;2B{16=6.5Z(M)&&4r!="28"?s.1U&&6.68(M,s.T)?"5M":"2O":"2x";7(16!="2x"){v 3F;2B{3F=M.4O("6a-4J")}2J(e){}7(s.1U&&3F)6.3S[s.T]=3F;v E=6.6h(M,s.4s);7(s.2O)s.2O(E,16);7(s.1i)6.F.1Q("5O",[M,s])}I 6.3L(s,M,16)}2J(e){16="2x";6.3L(s,M,16,e)}7(s.1i)6.F.1Q("5P",[M,s]);7(s.1i&&!--6.4D)6.F.1Q("5R");7(s.1Z)s.1Z(M,16);7(s.48)M=14}};v 3H=45(37,13);7(s.28>0)57(q(){7(M){M.7M();7(!4x)37("28")}},s.28);2B{M.7O(s.E)}2J(e){6.3L(s,M,14,e)}7(!s.48)37();u M},3L:q(s,M,16,e){7(s.2x)s.2x(M,16,e);7(s.1i)6.F.1Q("5W",[M,s,e])},4D:0,5Z:q(r){2B{u!r.16&&7T.7U=="4F:"||(r.16>=5X&&r.16<7V)||r.16==6d||6.V.2F&&r.16==R}2J(e){}u 11},68:q(M,T){2B{v 6e=M.4O("6a-4J");u M.16==6d||6e==6.3S[T]||6.V.2F&&M.16==R}2J(e){}u 11},6h:q(r,B){v 4P=r.4O("8a-B");v E=!B&&4P&&4P.17("M")>=0;E=B=="M"||E?r.8g:r.3G;7(B=="2f")6.50(E);7(B=="6l")3l("E = "+E);7(B=="4T")6("<22>").4T(E).4U();u E},3c:q(a){v s=[];7(a.1l==2A||a.3W)6.J(a,q(){s.1m(2N(l.W)+"="+2N(l.O))});I P(v j 1B a)7(a[j]&&a[j].1l==2A)6.J(a[j],q(){s.1m(2N(j)+"="+2N(l))});I s.1m(2N(j)+"="+2N(a[j]));u s.6r("&")},50:q(E){7(1u.52)1u.52(E);I 7(6.V.2F)1u.57(E,0);I 3l.3n(1u,E)}});6.D.1w({1M:q(Q,L){v 1F=l.1C(":1F");Q?1F.25({26:"1M",3Q:"1M",1c:"1M"},Q,L):1F.J(q(){l.1o.1h=l.2C?l.2C:"";7(6.1n(l,"1h")=="1V")l.1o.1h="2z"});u l},1I:q(Q,L){v 38=l.1C(":38");Q?38.25({26:"1I",3Q:"1I",1c:"1I"},Q,L):38.J(q(){l.2C=l.2C||6.1n(l,"1h");7(l.2C=="1V")l.2C="2z";l.1o.1h="1V"});u l},5h:6.D.3V,3V:q(D,4H){v 1A=1v;u 6.1p(D)&&6.1p(4H)?l.5h(D,4H):l.J(q(){6(l)[6(l).4k(":1F")?"1M":"1I"].15(6(l),1A)})},7a:q(Q,L){u l.25({26:"1M"},Q,L)},7c:q(Q,L){u l.25({26:"1I"},Q,L)},7e:q(Q,L){u l.J(q(){v 5l=6(l).4k(":1F")?"1M":"1I";6(l).25({26:5l},Q,L)})},7q:q(Q,L){u l.25({1c:"1M"},Q,L)},7t:q(Q,L){u l.25({1c:"1I"},Q,L)},7x:q(Q,43,L){u l.25({1c:43},Q,L)},25:q(G,Q,1r,L){u l.1J(q(){l.2t=6.1w({},G);v 1t=6.Q(Q,1r,L);P(v p 1B G){v e=1q 6.39(l,1t,p);7(G[p].1l==3J)e.2v(e.N(),G[p]);I e[G[p]](G)}})},1J:q(B,D){7(!D){D=B;B="39"}u l.J(q(){7(!l.1J)l.1J={};7(!l.1J[B])l.1J[B]=[];l.1J[B].1m(D);7(l.1J[B].H==1)D.15(l)})}});6.1w({Q:q(Q,1r,D){v 1t=Q&&Q.1l==7J?Q:{1Z:D||!D&&1r||6.1p(Q)&&Q,24:Q,1r:D&&1r||1r&&1r.1l!=4v&&1r};1t.24=(1t.24&&1t.24.1l==3J?1t.24:{7P:7Q,7R:5X}[1t.24])||7S;1t.1L=1t.1Z;1t.1Z=q(){6.69(l,"39");7(6.1p(1t.1L))1t.1L.15(l)};u 1t},1r:{},1J:{},69:q(C,B){B=B||"39";7(C.1J&&C.1J[B]){C.1J[B].4K();v f=C.1J[B][0];7(f)f.15(C)}},39:q(C,1d,G){v z=l;v y=C.1o;v 4B=6.1n(C,"1h");y.5U="1F";z.a=q(){7(1d.47)1d.47.15(C,[z.2k]);7(G=="1c")6.1G(y,"1c",z.2k);I 7(6k(z.2k))y[G]=6k(z.2k)+"4R";y.1h="2z"};z.6t=q(){u 4S(6.1n(C,G))};z.N=q(){v r=4S(6.3g(C,G));u r&&r>-8w?r:z.6t()};z.2v=q(4b,43){z.4I=(1q 5p()).5x();z.2k=4b;z.a();z.4p=45(q(){z.47(4b,43)},13)};z.1M=q(){7(!C.1x)C.1x={};C.1x[G]=l.N();1d.1M=U;z.2v(0,C.1x[G]);7(G!="1c")y[G]="5b"};z.1I=q(){7(!C.1x)C.1x={};C.1x[G]=l.N();1d.1I=U;z.2v(C.1x[G],0)};z.3V=q(){7(!C.1x)C.1x={};C.1x[G]=l.N();7(4B=="1V"){1d.1M=U;7(G!="1c")y[G]="5b";z.2v(0,C.1x[G])}I{1d.1I=U;z.2v(C.1x[G],0)}};z.47=q(2Z,46){v t=(1q 5p()).5x();7(t>1d.24+z.4I){4o(z.4p);z.4p=14;z.2k=46;z.a();7(C.2t)C.2t[G]=U;v 2a=U;P(v i 1B C.2t)7(C.2t[i]!==U)2a=11;7(2a){y.5U="";y.1h=4B;7(6.1n(C,"1h")=="1V")y.1h="2z";7(1d.1I)y.1h="1V";7(1d.1I||1d.1M)P(v p 1B C.2t)7(p=="1c")6.1G(y,p,C.1x[p]);I y[p]=""}7(2a&&6.1p(1d.1Z))1d.1Z.15(C)}I{v n=t-l.4I;v p=n/1d.24;z.2k=1d.1r&&6.1r[1d.1r]?6.1r[1d.1r](p,n,2Z,(46-2Z),1d.24):((-6g.7N(p*6g.8J)/2)+0.5)*(46-2Z)+2Z;z.a()}}}})}',62,544,'||||||jQuery|if||||||||||||||this|||||function||||return|var||||||type|elem|fn|data|event|prop|length|else|each|ret|callback|xml|cur|value|for|speed|undefined|element|url|true|browser|name||parentNode|||false|document||null|apply|status|indexOf|className|val|firstChild|obj|opacity|options|nodeName|result|msie|display|global|test|handler|constructor|push|css|style|isFunction|new|easing|expr|opt|window|arguments|extend|orig|context|arg|args|in|filter|typeof|events|hidden|attr|re|hide|queue|add|old|show|table|elems|num|trigger|token|replace|target|ifModified|none|nodeType|tbody|while|complete|string|params|div|key|duration|animate|height|ready|timeout|nth|done|get|nextSibling|remove|not|script|index|tb|oid|pushStack|now|fix|merge|grep|z0|find|preventDefault|first|cssFloat|curAnim|el|custom|sibling|error|guid|block|Array|try|oldblock|id|stopPropagation|safari|innerHTML|wrap|text|catch|res|al|exec|encodeURIComponent|success|load|has|selected|substr|insertBefore|disabled|originalEvent|checked|last|map|firstNum|_|re2|trim|getAttribute|handlers|on|removeChild|onreadystatechange|visible|fx|readyList|childNodes|param|domManip|opera|src|curCSS|mozilla|parPos|cloneNode|position|eval|tr|call|split|XMLHttpRequest|ajaxSettings|child|append|String|empty|ajax|form|button|inArray|multiFilter|setRequestHeader|foundToken|9_|readyState|tag|modRes|responseText|ival|oWidth|Number|toUpperCase|handleError|break|makeArray|slice|second|width|returnValue|lastModified|bind|isReady|toggle|jquery|styleFloat|dir|mouseover|select|clean|defaultView|to|oHeight|setInterval|lastNum|step|async|els|static|from|swap|self|currentStyle|end|float|alpha|radio|inv|is|toLowerCase|visibility|00|clearInterval|timer|rec|isTimeout|dataType|_resort|RegExp|Function|getAll|requestDone|parents|matched|appendChild|oldDisplay|isXMLDoc|active|triggered|file|documentElement|fn2|startTime|Modified|shift|lastToggle|deep|handleHover|getResponseHeader|ct|submit|px|parseFloat|html|evalScripts|getComputedStyle|pos|getElementById|clone|safariTimer|globalEval|unload|execScript|force|getPropertyValue|newProp|createElement|setTimeout|zoom|getScript|image|1px|sl|settings|GET|rl|check|_toggle|processData|prepend|before|state|removeAttr|ajaxStart|lt|Date|gt|eq|contentType|previousSibling|after|parent|contains|getTime|checkbox|password|appendTo|reset|input|webkit|href|continue|exclude|beforeSend|ajaxSend|ownerDocument|getElementsByTagName|tmp|notmodified|parse|ajaxSuccess|ajaxComplete|_prefix|ajaxStop|even|odd|overflow|delete|ajaxError|200|handle|httpSuccess|tagName|unshift|srcElement|body|pageX|POST|clientX|scrollLeft|httpNotModified|dequeue|Last|scrollTop|100|304|xmlRes|unbind|Math|httpData|click|mouseout|parseInt|json|DOMContentLoaded|prevObject|__ie_init|setArray|ol|join|one|max|nodeValue|do|left|relative|clientHeight|clientWidth|loadIfModified|serialize|toString|thead|tfoot|td|th|textContent|ActiveXObject|htmlFor|Microsoft|class|XMLHTTP|readOnly|gi|match|getIfModified|9999|getJSON|getAttributeNode|post|setAttribute|ig|ajaxTimeout|ajaxSetup|concat|application|userAgent|compatible|www|compatMode|CSS1Compat|next|urlencoded|siblings|children|slideDown|prependTo|slideUp|insertAfter|slideToggle|removeAttribute|addClass|removeClass|open|toggleClass|Content|Type|lastChild|If|only|Since|fadeIn|Thu|01|fadeOut|enabled|Jan|1970|fadeTo|GMT|textarea|Requested|With|prev|overrideMimeType|Connection|close|boxModel|absolute|object|Object|navigator|substring|abort|cos|send|slow|600|fast|400|location|protocol|300|pageY|clientY|cancelBubble|method|action|hover|fromElement|toElement|relatedTarget|removeEventListener|blur|focus|readonly|resize|content|scroll|dblclick|mousedown|mouseup|mousemove|responseXML|change|keydown|keypress|keyup|addEventListener|write|prototype|scr|ipt|createTextNode|defer|FORM|reverse|noConflict|loaded|10000|font|weight|line|Top|Bottom|Right|Left|padding|border|Width|offsetHeight|offsetWidth|PI|size|right'.split('|'),0,{}))

jQuery.fn._height = jQuery.fn.height;
jQuery.fn._width  = jQuery.fn.width;

jQuery.fn.height = function() {
	if ( this.get(0) == window )
		return self.innerHeight ||
			jQuery.boxModel && document.documentElement.clientHeight ||
			document.body.clientHeight;

	if ( this.get(0) == document )
		return Math.max( document.body.scrollHeight, document.body.offsetHeight );

	return this._height(arguments[0]);
};

jQuery.fn.width = function() {
	if ( this.get(0) == window )
		return self.innerWidth ||
			jQuery.boxModel && document.documentElement.clientWidth ||
			document.body.clientWidth;

	if ( this.get(0) == document )
		return Math.max( document.body.scrollWidth, document.body.offsetWidth );

	return this._width(arguments[0]);
};

jQuery.fn.innerHeight = function() {
	return this.get(0) == window || this.get(0) == document ?
		this.height() :
		this.get(0).offsetHeight - (parseInt(this.css("borderTopWidth")) || 0) - (parseInt(this.css("borderBottomWidth")) || 0);
};

jQuery.fn.innerWidth = function() {
	return this.get(0) == window || this.get(0) == document ?
		this.width() :
		this.get(0).offsetWidth - (parseInt(this.css("borderLeftWidth")) || 0) - (parseInt(this.css("borderRightWidth")) || 0);
};

jQuery.fn.outerHeight = function() {
	return this.get(0) == window || this.get(0) == document ?
		this.height() :
		this.get(0).offsetHeight;
};

jQuery.fn.outerWidth = function() {
	return this.get(0) == window || this.get(0) == document ?
		this.width() :
		this.get(0).offsetWidth;
};

jQuery.fn.scrollLeft = function() {
	if ( this.get(0) == window || this.get(0) == document )
		return self.pageXOffset ||
			jQuery.boxModel && document.documentElement.scrollLeft ||
			document.body.scrollLeft;

	return this.get(0).scrollLeft;
};

jQuery.fn.scrollTop = function() {
	if ( this.get(0) == window || this.get(0) == document )
		return self.pageYOffset ||
			jQuery.boxModel && document.documentElement.scrollTop ||
			document.body.scrollTop;

	return this.get(0).scrollTop;
};

jQuery.fn.offset = function(options, returnObject) {
	var x = 0, y = 0, elem = this[0], parent = this[0], sl = 0, st = 0, options = jQuery.extend({ margin: true, border: true, padding: false, scroll: true }, options || {});
	do {
		x += parent.offsetLeft || 0;
		y += parent.offsetTop  || 0;
		if (jQuery.browser.mozilla || jQuery.browser.msie) {
			var bt = parseInt(jQuery.css(parent, 'borderTopWidth')) || 0;
			var bl = parseInt(jQuery.css(parent, 'borderLeftWidth')) || 0;

			x += bl;
			y += bt;

			if (jQuery.browser.mozilla && jQuery.css(parent, 'overflow') != 'visible' && parent != elem) {
				x += bl;
				y += bt;
			}
		}

		var op = parent.offsetParent;
		if (op && (op.tagName == 'BODY' || op.tagName == 'HTML')) {			if ((jQuery.browser.safari || jQuery.browser.msie) && jQuery.css(parent, 'position') != 'absolute') {
				x += parseInt(jQuery.css(op, 'marginLeft')) || 0;
				y += parseInt(jQuery.css(op, 'marginTop'))  || 0;
			}
			break;
		}

		if (options.scroll) {
			var op = parent.offsetParent;
			do {
				sl += parent.scrollLeft || 0;
				st += parent.scrollTop  || 0;
				parent = parent.parentNode;
			} while (parent != op);
		} else {
			parent = parent.offsetParent;
		}
	} while (parent);

	if ( !options.margin) {
		x -= parseInt(jQuery.css(elem, 'marginLeft')) || 0;
		y -= parseInt(jQuery.css(elem, 'marginTop'))  || 0;
	}

	if ( options.border && (jQuery.browser.safari || jQuery.browser.opera) ) {
		x += parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0;
		y += parseInt(jQuery.css(elem, 'borderTopWidth'))  || 0;
	} else if ( !options.border && !(jQuery.browser.safari || jQuery.browser.opera) ) {
		x -= parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0;
		y -= parseInt(jQuery.css(elem, 'borderTopWidth'))  || 0;
	}

	if ( options.padding ) {
		x += parseInt(jQuery.css(elem, 'paddingLeft')) || 0;
		y += parseInt(jQuery.css(elem, 'paddingTop'))  || 0;
	}

	var returnValue = options.scroll ? { top: y - st, left: x - sl, scrollTop:  st, scrollLeft: sl }
									: { top: y, left: x };

	if (returnObject) { jQuery.extend(returnObject, returnValue); return this; }
	else              { return returnValue; }
};
var EventUtil = new Object;
EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
        oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = fnHandler;
    }
};

EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = null;
    }
};

EventUtil.formatEvent = function (oEvent) {
    if (isIE && isWin) {
        oEvent.charCode = (oEvent.type == "keypress") ? oEvent.keyCode : 0;
        oEvent.eventPhase = 2;
        oEvent.isChar = (oEvent.charCode > 0);
        oEvent.pageX = oEvent.clientX + document.body.scrollLeft;
        oEvent.pageY = oEvent.clientY + document.body.scrollTop;
        oEvent.preventDefault = function () {
            this.returnValue = false;
        };

        if (oEvent.type == "mouseout") {
            oEvent.relatedTarget = oEvent.toElement;
        } else if (oEvent.type == "mouseover") {
            oEvent.relatedTarget = oEvent.fromElement;
        }

        oEvent.stopPropagation = function () {
            this.cancelBubble = true;
        };

        oEvent.target = oEvent.srcElement;
        oEvent.time = (new Date).getTime();
    }
    return oEvent;
};

EventUtil.getEvent = function() {
    if (window.event) {
        return this.formatEvent(window.event);
    } else {
        return EventUtil.getEvent.caller.arguments[0];
    }
};
// Utilities

// take care of firebug console logging for other browsers
var console = window.console || {};
console.log = console.log || function(t) { };

// Utilities Class
function Utilities(){
	//this.lastIvwMessage = new Date().getTime() / 1000;
	this.trace = function(sString, oLayer){
		if(this.isObject(this.getDom(oLayer))){
			this.getDom(oLayer).innerHTML += "<br>--------------------------------------------<br>" + sString;
		} else if(this.isObject(this.getDom("debugWrapper"))){
			this.getDom("debugWrapper").innerHTML += "<br>--------------------------------------------<br>" + sString;
		} else {
			var oDebug = document.createElement("div");
			oDebug.id = "debugWrapper";
			oDebug.className = "debugWrapper";
			oDebug.innerHTML = "<br>--------------------------------------------<br>" + sString;
			document.body.appendChild(oDebug);
		}
	};
	this.clip = function (obj, nTop, nRight, nBottom, nLeft) {
		var oStyle = this.getReference(obj);
		oStyle.clip = "rect("+nTop+"px " + nRight + "px "+nBottom+"px "+nLeft+"px)";
	};
	this.getReference = function(sElementName){
		var oRef;
		if(document.getElementById && document.getElementById(sElementName)) oRef = document.getElementById(sElementName).style;
		else if(document.all && document.all[sElementName]) oRef = document.all[sElementName].style;
		else if(document.layers) oRef = document[sElementName];
		return (oRef) ? oRef : 0;
	};
	this.getDom = function(sElementName){
		var oRef;
		if(document.all) oRef = document.all[sElementName];
		else if(document.layers) oRef = document[sElementName];
		else if(document.getElementById) oRef = document.getElementById(sElementName);

		return oRef;
	};
	this.setLyr = function(obj,lyr, dx, dy){
		var newX = this.findPosX(obj);
		var newY = this.findPosY(obj);
		var x = this.getReference(lyr);
		x.top = (newY+dy) + 'px';
		x.left = (newX+dx) + 'px';
	};
	this.setLyrWithOffset = function(obj,lyr, dx, dy, offset){
		//alert ( "offset = " + offset);
		var newX = this.findPosX(obj);
		var newY = this.findPosY(obj);
		var x = this.getReference(lyr);
		x.top = (newY+dy) + 'px';
		x.left = (newX+dx+offset) + 'px';
	};
	// Switch display-property. Hide if visible - show if not.
	this.toggleDisplay = function(strElement){
		var objRef = this.getReference(strElement);
		(objRef.display == "none" || objRef.display == "") ? this.showElement(strElement) : this.hideElement(strElement);
	};
	// Show Element (visibility)
	this.showElement = function(strElementName){
		var objRef = this.getReference(strElementName);
		if(objRef) {
			objRef.display = "block";
			objRef.visibility = "visible";
		}
	};
	// Hide Element (visibility)
	this.hideElement = function(strElementName){
		var objRef = this.getReference(strElementName);
		if(objRef) {
			objRef.display = "none";
			objRef.visibility = "hidden";
		}
	};

	this.MOZALPHAMAX = 255./256.;

	this.getAlphaLevel = function (elem) {
		var oElem = this.getDom(elem);
		var ret;

		if (oElem) {
			var style = oElem.style;

			if (oElem.filters && oElem.filters.alpha) {
				ret = oElem.filters.alpha.opacity;
			} else if (style) {
				if (this.isDefined(style.MozOpacity)) {
					var strOpacity = style.MozOpacity;

					if (strOpacity.length > 0) {
						ret = parseFloat(style.MozOpacity);

						if (ret >= this.MOZALPHAMAX && this.isDefined(style.azdMozOpacity)) {
							var saved = parseFloat(style.azdMozOpacity);

							if (saved >= this.MOZALPHAMAX) {
								ret = saved;
							}
						}
						ret = ret * 100;
					}
				} else if (this.isDefined(style.opacity)) {
					ret = (style.opacity.length==0 ? 1 : parseFloat(style.opacity)) * 100;
				} else if (this.isDefined(style.KHTMLOpacity)) {
					ret = (style.KHTMLOpacity.length==0 ? 1 : parseFloat(style.KHTMLOpacity)) * 100;
				}
			}
		}
		if (this.isUndefined(ret)) {
			// presume that no set opacity means opaque
			ret = 100;
		}
		return ret;
	};

	this.setAlphaLevel = function (elem, level) {
		level = (level <= 0 ? 0 : (level >= 100 ? 100 : level));

		var oElem = this.getDom(elem);

		if (oElem) {
			var style = oElem.style
			if (oElem.filters) {
				var filters = oElem.filters;

				if (!filters.alpha) {
					this.addClass(oElem, "n2Fadable");
					// object changed by adding a filter
					filters = oElem.filters;
				}
				if (filters.alpha) {
					filters.alpha.opacity = level;
				}
			} else  if (style && this.isDefined(style.MozOpacity)) {
				var reqLevel = level * 0.01;

				var mozLevel = (reqLevel > this.MOZALPHAMAX ? this.MOZALPHAMAX : reqLevel);

				if (mozLevel != reqLevel) {
					;
				}
				style.MozOpacity = mozLevel;

				style.azdMozOpacity = "" + reqLevel; // store as string (just as MozOpacity is) to get same rounding
			} else {
				;
				// (See FIXME comment above)
			}
		}
	};
	// Set and get Color
	this.setColor = function(strElementName, strColor){
		var objRef = this.getReference(strElementName);
		objRef.color = strColor;
	};
	this.getColor = function(strElementName){
		var objRef = this.getReference(strElementName);
		return objRef.color;
	};

	// Set and get BackgroundColor
	this.setBackgroundColor = function(strElementName, strColor){
		var objRef = this.getReference(strElementName);
		objRef.backgroundColor  = strColor;
	};
		this.getBackgroundColor = function(strElementName){
		var objRef = this.getReference(strElementName);
		return objRef.backgroundColor;
	};

	this.focusField = function(sId){
		var obj = this.isObject(sId) ? sId : this.getDom(sId);
		if (obj != "undefined") {
			obj.focus();
			// To take care of setting focus at the end of string
			obj.value = obj.value;
			obj.focus();
		}
	};

	this.selectTextAreaValue = function(oObj, sValue){
		if(typeof oObj != "object") return;
		for (var i=0; i < oObj.length; i++) {
			if (oObj.options[i].value == sValue) {
				oObj.selectedIndex = i;
			}
		}
	};

	// Disable and enable elements
	this.disableElement = function(strElementID){
		// if strElementID is already a dom-object, take this
		var objElement = (this.isObject(strElementID)) ? strElementID : this.getDom(strElementID);
		// set disabled-properties of element
		// store current element-properties
		objElement.strCurrTextfieldColor = this.getColor(strElementID);
		objElement.strCurrentTextfieldBG = this.getBackgroundColor(strElementID);

		if(typeof objElement != "undefined"){
			this.setColor(strElementID, "#666666");
			switch(objElement.type){
				case "text":
					this.setBackgroundColor(strElementID, "#cccccc");
					objElement.disabled = true;
					break;
				case "select-one":
					this.setBackgroundColor(strElementID, "#cccccc");
					objElement.disabled = true;
					break;
			}
		}
	};
	this.enableElement = function(strElementID){
		// if strElementID is already a dom-object, take this
		var objElement = (this.isObject(strElementID)) ? strElementID : this.getDom(strElementID);
		// set enabled-properties of element
		// use default-properties for element (e.g. textfield) if nothing available
		if(!objElement.strCurrTextfieldColor) objElement.strCurrTextfieldColor = "#555555";
		if(!objElement.strCurrentTextfieldBG) objElement.strCurrentTextfieldBG = "#ffffff";

		if(typeof objElement != "undefined"){
			this.setColor(strElementID, objElement.strCurrTextfieldColor);
			switch(objElement.type){
				case "text":
					this.setBackgroundColor(strElementID, objElement.strCurrentTextfieldBG);
					objElement.disabled = false;
					break;
				case "select-one":
					this.setBackgroundColor(strElementID, objElement.strCurrentTextfieldBG);
					objElement.disabled = false;
					break;
			}
		}
	};

	// Get x-positon of object
	this.findPosX = function(obj){
		var curleft = 0;
		if (obj.offsetParent){
			while (obj.offsetParent){
				curleft += obj.offsetLeft;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)	curleft += obj.x;
		return curleft;
	};
	// Get y-position of object
	this.findPosY = function(obj){
		var curtop = 0;
		if (obj.offsetParent)	{
			while (obj.offsetParent){
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)	curtop += obj.y;
		return curtop;
	};

	// Get available Browser Window Width
	this.getWindowWidth = function() {
		return (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : ((window.innerWidth) ? window.innerWidth : document.body.clientWidth);
	};
	// Get available Browser Window Height
	this.getWindowHeight = function() {
		return (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : ((window.innerHeight) ? window.innerHeight : document.body.clientHeight);
	};

	// Retrieve the rendered height of an element
	this.getObjectHeight = function(obj){
		var elem = (this.isObject(obj)) ? obj : this.getDom(obj);
		var result = 0;
		if (elem.offsetHeight){
			result = elem.offsetHeight;
		} else if (elem.clip && elem.clip.height){
			result = elem.clip.height;
		} else if (elem.style && elem.style.pixelHeight){
			result = elem.style.pixelHeight;
		}
		return parseInt(result);
	};

	// Retrieve the rendered width of an element
	this.getObjectWidth = function(obj)  {
		var elem = (this.isObject(obj)) ? obj : this.getDom(obj);
		var result = 0;
		if (elem.offsetWidth) {
	//        if (elem.scrollWidth && (elem.offsetWidth != elem.scrollWidth)) {
	//            result = elem.scrollWidth;
	//        } else {
				result = elem.offsetWidth;
	//        }
		} else if (elem.clip && elem.clip.width) {
			result = elem.clip.width;
		} else if (elem.style && elem.style.pixelWidth) {
			result = elem.style.pixelWidth;
		}
		return parseInt(result);
	};

	// Set object height
	this.setObjectHeight = function(obj, nHeight){
		var oStyle = this.getReference(obj);
		oStyle.height = nHeight + "px";
	};

	this.centerObjectToScreen = function(oLayer){
		// Center #helpBox
		var posX = Math.round( ($(window).width() - oLayer.width() ) / 2 );
		var posY = Math.round( ($(window).height() - oLayer.height() ) / 2 );
		posX = (posX < 0) ? 0 : posX;
		posY = (posY < 0) ? 0 : posY;

		//console.log("Soll: document.width: ",$(document).width(), "document.height: ",$(window).height(), "layerHeight: ", oLayer.height(), " | layerWidth: ", oLayer.width(), "posX: ", posX, " | posY: ", posY);
		//console.log("Vorher--> posX: ", oLayer.css("left"), "| posY: ", oLayer.css("top"));
		oLayer.css("left", posX).css("top", posY);
		//console.log("Danach--> posX: ", oLayer.css("left"), "| posY: ", oLayer.css("top"));
	};


	this.hasClass = function (el, sClass) {
		if(typeof(el) != "object") el = this.getDom(el);

		if (el)	{
			return new RegExp("(^|\\s+)"+sClass+"(\\s+|$)").test(el.className);
		}
		return false;
	};

	this.addClass = function (el, sClass){
		//alert("add class " +  sClass);
		if(typeof(el) != "object") el = this.getDom(el);

		if (el)	{
			this.removeClass(el, sClass);

			el.className += ((el.className.length > 0) ? " " : '')+ sClass;
			return true;
		}
		return false;
	};

	this.removeClass = function (el, sClass) {
		//alert("remove class(' " + el + "', '" + sClass + "'");
		if(typeof(el) != "object") el = this.getDom(el);

		if (el) {
			var rep = el.className.match(' ' + sClass) ? ' ' + sClass : sClass;
     		el.className = el.className.replace(rep,'');
			return true;
		}
		return false;
	};


	this.isUndefined = function (el) { return (typeof el == 'undefined');	};
	this.isDefined   = function (el) { return typeof el != 'undefined'; };
	this.isFunction  = function (el) { return typeof el == 'function'; };
	this.isNull      = function (el) { return typeof el == 'object' && !el; };
	this.isNumber    = function (el) { return typeof el == 'number' && isFinite(el); };
	this.isObject    = function (el) { return (el && typeof el == 'object') || this.isFunction(el);	};
	this.isString    = function (el) { return typeof el == 'string'; };
	this.isArray	 = function (el) { return this.isObject(el) && el.constructor == Array; };
	this.isUndefOrNull = function (el) { return (typeof el == 'undefined') || (typeof el == 'object' && !el) };
	this.objIsInstanceOf = function(obj, classObj) {
		while (obj.__proto__) {
			if (obj.__proto__ === classObj) {
				return true;
			}
			obj = obj.__proto__;
		}
		return false;
	};

	this.urlencode = function(string) {
		string = string.replace(/[\s#]/g, "+");
		string = string.replace(/ä/g, "%E4");
		string = string.replace(/Ä/g, "%C4");
		string = string.replace(/ö/g, "%F6");
		string = string.replace(/Ö/g, "%D6");
		string = string.replace(/ü/g, "%FC");
		string = string.replace(/Ü/g, "%DC");
		string = string.replace(/ß/g, "%DF");
		string = string.replace(/&/g, "%26");
		return string;
	};

	this.loadURL = function(sURL){
		location.href = sURL;
		return false;
	};

	this.win = {
		openDefault: function(strURL, numWidth, numHeight, wName){
			(!numWidth) ? numWidth = "780" : 0;
			(!numHeight) ? numHeight = "600" : 0;
			var strWindowName = (wName) ? wName : "defaultWindow";
			var strWinProps = "width=" + numWidth + ",height=" + numHeight + ",titlebar=no,status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes";
			this.open(strURL, strWindowName, strWinProps);
			return false;
		},
		// General function to open information windows
		// strURL = URL, numWidth = windowWidth, numHeight = windowHeight
		openInfo: function(strURL, numWidth, numHeight){
			var strWindowName = "infoWindow";
			var strWinProps = "width=" + numWidth + ",height=" + numHeight + ",titlebar=no,status=yes,toolbar=no,menubar=no,scrollbars=no,resizable=yes";
			this.open(strURL, strWindowName, strWinProps);
			return false;
		},
		open: function(strURL, strWindowName, strWinProps){
			var objWin = window.open(strURL, strWindowName, strWinProps);
			objWin.focus();
		}
	};

	// Schnellsuche
	this.append = function(obj, nof, max, mdn, loc, ord) {

		var strHref = obj.getAttribute("href");
		var strQry = "LSTPOS=" + nof + "&LSTAMT=" + max + "&MDN=" + mdn + "&LOC=" + loc + "&PNO=" + ord;

		if (strHref.indexOf("\#") > 0) {
		  var pos = strHref.lastIndexOf("\#");
		  if (strHref.indexOf("?") > 0) {
		    location.href = strHref.substring(0,pos) + "&" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  } else {
		    location.href = strHref.substring(0,pos) + "?" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  }
		} else  if (strHref.indexOf(".html") > 0) {
		  location.href = strHref + "?" + strQry;
		} else {
	          location.href = strHref + "&" + strQry;
		}

		return false;
	};

	// Detailsuche
	this.appendDet = function(obj, nof, max, giv, nam, pro, str, hno, zcd, loc, spc, noa, ord) {

		var strHref = obj.getAttribute("href");
		var strQry = "LSTPOS=" + nof + "&LSTAMT=" + max + "&GIV=" + giv + "&NAM=" + nam + "&PRO=" + pro;
		strQry = strQry + "&STR=" + str + "&HNO=" + hno + "&ZCD=" + zcd + "&LOC=" + loc + "&SPC=" + spc + "&NOA=" + noa  + "&PNO=" + ord;

		if (strHref.indexOf("\#") > 0) {
		  var pos = strHref.lastIndexOf("\#");
		  if (strHref.indexOf("?") > 0) {
		    location.href = strHref.substring(0,pos) + "&" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  } else {
		    location.href = strHref.substring(0,pos) + "?" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  }
		} else  if (strHref.indexOf(".html") > 0) {
		  location.href = strHref + "?" + strQry;
		} else {
		  location.href = strHref + "&" + strQry;
		}

		return false;
	};

	// Inverssuche
	this.appendInv = function(obj, nof, max, tel) {

		var strHref = obj.getAttribute("href");
		var strQry = "LSTPOS=" + nof + "&LSTAMT=" + max + "&TEL=" + tel;

		if (strHref.indexOf("\#") > 0) {
		  var pos = strHref.lastIndexOf("\#");
		  if (strHref.indexOf("?") > 0) {
		    location.href = strHref.substring(0,pos) + "&" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  } else {
		    location.href = strHref.substring(0,pos) + "?" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  }
		} else if (strHref.indexOf(".html") > 0) {
		  location.href = strHref + "?" + strQry;
		} else {
	          location.href = strHref + "&" + strQry;
		}

		return false;
	};

	// Notdienste
	this.appendEmg = function(obj, nof, max, bcp, loc, ord) {

		var strHref = obj.getAttribute("href");
		var strQry = "LSTPOS=" + nof + "&LSTAMT=" + max + "&BCP=" + bcp + "&LOC=" + loc + "&PNO=" + ord;

		if (strHref.indexOf("\#") > 0) {
		  var pos = strHref.lastIndexOf("\#");
		  if (strHref.indexOf("?") > 0) {
		    location.href = strHref.substring(0,pos) + "&" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  } else {
		    location.href = strHref.substring(0,pos) + "?" + strQry + "#" + strHref.substring(pos+1,strHref.length);
		  }
		} else if (strHref.indexOf(".html") > 0) {
		  location.href = strHref + "?" + strQry;
		} else {
	          location.href = strHref + "&" + strQry;
		}

		return false;
	};

	// IVW-Tag
	this.emitMessage = function(sAction) {

       var IVW = "";
   		 var ivwImage = new Image();
   		 ivwImage.src = IVW.replace("action",sAction) + "?r="+escape(document.referrer)+"&d="+(Math.random()*100000);
       ivwImage = null;

  };

	// Helpboxes
	this.help = {
		show: function(sType, styleInfo, hText){

			if (sType == 'geoPortalUsage') {
			 var IVW = "";
   		 var ivwImage = new Image();
   		 ivwImage.src = IVW.replace("action",'map_help') + "?r="+escape(document.referrer)+"&d="+(Math.random()*100000);
       ivwImage = null;
		  }
			this.sHelpType = sType;
			this.headingText = hText;

			if (styleInfo.targetId)
				this.sPosToNodeId = styleInfo.targetId;
			if (styleInfo.className)
				this.className = styleInfo.className;
			var fncCallback = styleInfo.callback ? styleInfo.callback : 0;

			$(document.body).append('<div id="helpBoxWrapper" style="display:none;"></div>');

			$("#helpBoxWrapper").load("/helpdata/wrapper",
				function() {
					goUtils.help.loadContent(fncCallback);
				}
			);
			this.setHandlers();
			return false;
		},
		setHandlers: function(){
			// Bind mouseup to remove layer. Store mouseUpEvent to remove specific event at removeHandlers()
			$(document.body).mouseup(goUtils.help.mouseUpEvent = function(event){ goUtils.help.handleMouseClick(event) } );
		},
		removeHandlers: function(){
			$(document.body).unbind("mouseup", goUtils.help.mouseUpEvent);
		},
		handleMouseClick: function(event){
			// Hide History if outside of histLayer
			$(event.target).parents("#helpBox").length <= 0 ? this.remove() : 0;
		},
		loadContent: function(fncCallback){
			$("#innerContentWrapper").load("/helpdata/" + this.sHelpType,
				function(){
					// Content has loaded - now adjust layer
					goUtils.help.adjust();
					// Call given function if any
					if(fncCallback) eval(fncCallback)();
				}
			);
		},
		adjust: function(){
			var refObj = goUtils.getDom(this.sPosToNodeId);
			var refClass = this.className;
			var oLayer = $("#helpBox");

			if (refClass) goUtils.addClass(goUtils.getDom("helpBox"), refClass);

			if (this.headingText) $("#helpHeading")[0].innerText = this.headingText;

			if (refObj) {
				goUtils.setLyr(refObj, "helpBox", 0, 30);
				$("#helpBoxWrapper").show();
				//var sPosToNodeId = this.sPosToNodeId;
				//$("#helpBox").css("left", $("#" + sPosToNodeId).offset().left).css("top", $("#" + sPosToNodeId).offset().top);
			} else {
				$("#helpBoxWrapper").show();
				goUtils.centerObjectToScreen(oLayer);
			}
		},
		remove: function(){
			$("#helpBoxWrapper").remove();
			this.removeHandlers();
		}
	};
}
var goUtils = new Utilities();


/* String-Utilitiy-Prototypes */

// Trim a value
String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};

// Check format of a string
// Examples:
// if( !frm.DateField.value.isFormat("date") )			// date
// if( !frm.TimeField.value.isFormat("time") )			// time
// if( !frm.PhoneNumber.value.isFormat(/^\d{9}$/ ) ) 	// a number of 9 digits
String.prototype.isFormat = function ( sType ) {
	var undef;
	var aTypes = new Array();
	aTypes['time'] = /^[0-2]?\d:[0-5]{1}\d/;
	aTypes['date'] = /^[0-3]?\d\/[0-1]?\d\/\d{4}/;
	aTypes['@unique'] = /^\D{4}-[\d|\D]{6}/;
	if ( isUndefined( aTypes[ sType ] ) ) {
		return sType.test( this );
	} else {
		return aTypes[ sType ].test( this );
	}
}
// cookies.js

var CK = {
	checkFunc: function(){
		this.set("BusinessGuideCookiesPossible", "OK", 30);
		if (!this.get("BusinessGuideCookiesPossible"))
			return false;
		else {
			return true;
		}
	},
	set: function(name, wert, days, domain, path, secure){
		var cook = name + "=" + unescape(wert);
		cook += (domain) ? "; domain="+ domain : "";
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		cook += (days) ? "; expires=" + date.toGMTString() : "";
		cook += (path && path != undefined) ? "; path="+path : "; path=/";
		cook += (secure) ? "; secure" : "";
		//alert(cook);
		document.cookie = cook;
	},
	getOld: function(name){
	   var i=0  //Suchposition im Cookie
	   var suche = name+"="
	   while (i<document.cookie.length){
		  if (document.cookie.substring(i, i+suche.length)==suche){
			 var ende = document.cookie.indexOf(";", i+suche.length);
			 ende = (ende>-1) ? ende : document.cookie.length;
			 var cook = document.cookie.substring(i+suche.length, ende);
			 return unescape(cook);
		  }
		  i++;
	   }
	   return "";
	},
  get: function(name){

     reg = new RegExp("^\\s*" + name + "=");
     var cookieArray = document.cookie.split(";");
     for (var i=0;i<cookieArray.length;i=i+1)
     {
       if (reg.test(cookieArray[i]))
       {
         return unescape(cookieArray[i].replace(reg,""));
       }
     }
     return "";
  },
	erase: function(name, domain, path){
	   var cook="name=; expires=Thu, 01-Jan-70 00:00:01 GMT";
	   cook += (domain) ? "domain="+domain : "";
	   cook += (path && path != undefined) ? "; path="+path : "path=/";
	   document.cookie = cook;
	}
}
var Pref = {
	initPref: function(formname){
		//Pref.form = document.forms[formname];
		var cookie = Pref.getSuggestCookie();

		Pref.setElements();
		Pref.initPrefAnchors();
		Pref.checkStatusPrefElements();
		Pref.setACField(cookie);
		Pref.updateHistoryStatus();
	},

	setElements: function(){
		// anchors
		this.oAnchorSuggest = goUtils.getDom("txtPrefSuggest");
		this.oAnchorAC = goUtils.getDom("txtPrefAC");
		this.oAnchorMap = goUtils.getDom("txtPrefMap");

		// anchortexts for active and inactive
		this.sTxtSuggestOn = "Vorschlagsfunktion aktivieren";
		this.sTxtSuggestOff = "Vorschlagsfunktion ausschalten";
		this.sTxtACOn = "Autovervollständigung aktivieren";
		this.sTxtACOff = "Autovervollständigung ausschalten";
		this.sTxtMapOn = "Treffer in Karte aktivieren";
		this.sTxtMapOff = "Treffer in Karte ausschalten";
	},

	initPrefAnchors: function(){
		var cookie = Pref.getSuggestCookie();
		this.setText(this.oAnchorSuggest, 1, this.sTxtSuggestOn, this.sTxtSuggestOff);
		this.setText(this.oAnchorAC, 2, this.sTxtACOn, this.sTxtACOff);
		this.setText(this.oAnchorMap, 4, this.sTxtMapOn, this.sTxtMapOff);
	},

	togglePref: function(sType, booCheckAC){
		var cookie = Pref.getSuggestCookie();
		// autocomplete is inactive if suggest is turned off (first bit of cookie for suggest is not set)
		if(sType == "autocomplete" && !(cookie&1)) return;
		Pref.setParam(sType);
		Pref.checkStatusPrefElements();
		if(booCheckAC) Pref.setACField();
		return false;
	},

	setParam: function(param) {
		var cookie = Pref.getSuggestCookie();
		if (!cookie) cookie = 0;
		if(opener && opener.Suggest) Suggest = opener.Suggest;
		switch(param){
			case "show":
				if (Suggest) {
					// Set flag to 1 if negation of first bit for suggest is true
					var flag = (!(cookie&1)) ? 1 : 0;
					for(var i = 0; i < Suggest.boxes.length; i++){
						Suggest.boxes[i].show = flag;
					}
				}
				nCookieValue = cookie^1;
				// Set cookie
				this.setSuggestCookie(Pref.cookieName + "=" + String(nCookieValue), 90);
				// set anchor text
				this.setText(this.oAnchorSuggest, 1, this.sTxtSuggestOn, this.sTxtSuggestOff);
				this.setText(this.oAnchorAC, 1, this.sTxtACOn, this.sTxtACOff);
				break;
			case "autocomplete":
				if (Suggest) {
					var flag = (!(cookie&2)) ? 1 : 0;
					for(var i = 0; i < Suggest.boxes.length; i++){
						Suggest.boxes[i].autocomplete = flag;
					}
				}
				nCookieValue = cookie^2;
				// Set cookie
				this.setSuggestCookie(Pref.cookieName + "=" + String(nCookieValue), 90);
				// Set anchor text. No Text if suggest is turned off (first bit of cookie for suggest is not set)
				this.setText(this.oAnchorAC, 2, this.sTxtACOn, this.sTxtACOff);
				break;
			case "showMap":
				nCookieValue = cookie^4;
				// Set cookie
				this.setSuggestCookie(Pref.cookieName + "=" + String(nCookieValue), 90);
				// Set anchor text
				this.setText(this.oAnchorMap, 4, this.sTxtMapOn, this.sTxtMapOff);
				break;
		}
		//goUtils.trace("cookieValue = " + nCookieValue + " | cookie%2 = " + (nCookieValue%2));
		return false;
	},

	setText: function(oAnchor, nBit, sTxtInactive, sTxtActive){
		var cookie = Pref.getSuggestCookie();
		if (!cookie) cookie = 0;
		var term = (cookie & nBit) ? sTxtActive : sTxtInactive;
		var tnElem = document.createTextNode(term);
		oAnchor.replaceChild(tnElem, oAnchor.firstChild);
	},

	checkStatusPrefElements: function(){
		var cookie = Pref.getSuggestCookie();
		if (!cookie) cookie = 0;

		// Switch on if first bit for suggest is set
		(cookie&1) ?  this.switchOnPrefElement("prefSimilarResults") :  this.switchOffPrefElement("prefSimilarResults");

		// Switch on if second bit for autocomplete is set. First bit for suggest also has to be enabled
		((cookie&2) && (cookie&1)) ? this.switchOnPrefElement("prefAutoComplete") :  this.switchOffPrefElement("prefAutoComplete");

		// Switch on if third bit for map was set
		(cookie&4) ? this.switchOnPrefElement("prefMap") : this.switchOffPrefElement("prefMap");
	},

	switchOnPrefElement: function(sObj){
		goUtils.addClass(sObj, "prefOn");
		goUtils.removeClass(sObj, "prefOff");
	},
	switchOffPrefElement: function(sObj){
		goUtils.addClass(sObj, "prefOff");
		goUtils.removeClass(sObj, "prefOn");
	},

	setACField: function(){
		var cookie = Pref.getSuggestCookie();
		if(cookie&1) goUtils.showElement("txtPrefAC"); else goUtils.hideElement("txtPrefAC");;
		// Only switch on autocomplete if first bit for suggest was set (cookie%2 == 1)
		if (cookie%2) {
			// Only switch on if cookie for second bit is set
			if(cookie&2) {
				this.switchOnPrefElement("prefAutoComplete");
			}
		} else {
			this.switchOffPrefElement("prefAutoComplete");
		}
	},

	setSuggestCookie: function(content, days) {
		var expires = new Date();
		var expTime = expires.getTime()+days*24*60*60*1000;
		expires.setTime(expTime);
		document.cookie = content+"; expires="+expires.toGMTString()+"; path=/;";
	},

	getSuggestCookie: function() {
		var defValue = 1;
		if (!document.cookie) return defValue;
		var start = document.cookie.indexOf(Pref.cookieName+"=");
		if (start>=0) {
			var substr = document.cookie.substring(start);
			var ende = substr.indexOf(';');
			var flag = (ende>=0) ? substr.substring(substr.indexOf('=')+1, ende) : substr.substring(substr.indexOf('=')+1);
			return flag;
		} else return defValue;
	},

	clearHistory: function(){
		// Reset HistoryList
		if (window.opener) {
			window.opener.User.searchHistory.resetList("what");
			window.opener.User.searchHistory.resetList("where");
		}
		this.updateHistoryStatus();
		return false;
	},
	updateHistoryStatus: function(){
		var historyLink = goUtils.getDom("lnkHistory");
		if(!historyLink) return;
		if (window.opener.User.searchHistory.isDisabled().histWhat && window.opener.User.searchHistory.isDisabled().histWhere) {
			goUtils.addClass(historyLink, "empty");
			// Change text
			var tnHist = document.createTextNode("Suchhistorie wurde gelöscht");
			historyLink.replaceChild(tnHist, historyLink.firstChild);
		} else {
			goUtils.removeClass(historyLink, "empty");
		}
	}

}

Pref.cookieName = "GY_suggestMode";
var Ajax = {
	init: function() {
		try {
		  this.HTTPRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			   this.HTTPRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				this.HTTPRequest = null;
			}
		}
		if (!this.HTTPRequest && typeof XMLHttpRequest!='undefined') {
			  this.HTTPRequest = new XMLHttpRequest();
		}
	}

}
var Suggest = {
	Box: function(srcId, targetId, refId, dx, dy, srcName, enterSubmitsForm, nextField, action){
		this.srcId = srcId;
		this.targetId = targetId;
		this.refId = refId;
		this.dx = dx;
		this.dy = dy;
		this.srcName = srcName;
		this.autocomplete = false;
		this.show = Suggest.showSuggest;
		this.enterSubmitsForm = enterSubmitsForm;
		this.nextField = nextField;
		this.action = action;
		this.safariFactor=1;
	},

	init: function() {
		Suggest.to = null;
		Suggest.completed = false;
		Suggest.suggestLabels = {CompletionTerms: "Vorschläge", LastSearchTerms: "Letzte Suchen", SimilarSearchTerms: "Ähnliche Suchbegriffe", ConsiderAlso: "Wir empfehlen"};
		Suggest.refIndex = 0;
		Suggest.targetSBoxId = 'sBox';
		Suggest.targetSBoxObj = goUtils.getDom(Suggest.targetSBoxId);
		Suggest.targetBoxLayerId = 'boxContent';
		Suggest.targetBoxObj = goUtils.getDom(Suggest.targetBoxLayerId);
		Suggest.targetHeaderLayerId = 'suggestHeadText';
		Suggest.targetContentLayerId = 'suggestContent';
		Suggest.targetConsiderTDId = 'suggestContentTD';
		Suggest.targetConsiderTDIdObj = goUtils.getDom(Suggest.targetConsiderTDId);

		Suggest.targetConsiderLayerId = 'considerContent';
		Suggest.targetContentObj = goUtils.getDom(Suggest.targetContentLayerId);
		Suggest.targetConsiderObj = goUtils.getDom(Suggest.targetConsiderLayerId);
		Suggest.targetContentRef = goUtils.getReference(Suggest.targetContentLayerId);
		Suggest.targetConsiderRef = goUtils.getReference(Suggest.targetConsiderLayerId);
		Suggest.targetLayerId = 'sBox';
		Suggest.targetObj = goUtils.getReference(Suggest.targetLayerId);

		Suggest.infoId = 'suggestInfo';
		Suggest.submitBtnClass = 'search_btn';
		Suggest.minLetters = 1;
		Suggest.delayTime = 500;
		Suggest.terms = new Array();
		Suggest.selectedTerm = 0;
		Suggest.savedInput = "";
		Suggest.mouseMoved = false;
		Suggest.consAdType = "";
		var cookie = Pref.getSuggestCookie();
		for (var i=0; i<Suggest.boxes.length; i++) {
			Suggest.boxes[i].show = new Boolean(cookie&1);
			Suggest.boxes[i].autocomplete = new Boolean(cookie&2);
		}

		// Events
		var ke = (!isOpera) ? "keyup" : "keydown";
		EventUtil.addEventHandler(document.body, ke, Suggest.handleKeyEvent);
		EventUtil.addEventHandler(document.body, "keypress", Suggest.preventEnterFormSubmit);
		EventUtil.addEventHandler(document.body, "mouseup", Suggest.handleMouseClickEvent);
		EventUtil.addEventHandler(document.body, "mousemove", Suggest.handleMouseMoveEvent);
		if (isIE) Suggest.targetContentRef.height = "155px";

		// Safari arrow key problem
		Suggest.safariFactor = (isKHTML && isSafari) ? 0.5 : 1;

		//$(document.body).mousemove(function(evt){goUtils.trace(evt.clientX)});
	},

	autocomplete: function(f, term, force) {
		if (f.tagName!="INPUT") return;
		var start = term.length;
		Suggest.completed = false;
		if (f.createTextRange) {
			if (!force) {
				start = (document.selection.createRange().text.length) ? term.indexOf(document.selection.createRange().text) : f.value.length;
				if (term.toLowerCase().indexOf(f.value.toLowerCase())<0) return;
			}
			f.value = term;
			var u = f.createTextRange();
			u.moveStart("character", start);
			u.select()
		} else if(f.setSelectionRange){
			if (!force) {
				start = f.selectionStart;
				if (term.toLowerCase().indexOf(f.value.toLowerCase())<0) return;
			}
			f.value = term;
			f.setSelectionRange(start,f.value.length);
		} else if (window.getSelection) {
			f.value = (force) ? term : Suggest.savedInput;
		}
		Suggest.completed = (start<term.length) ? true : false;
	},

	getUnselectedText: function(sourceId) {
		f = goUtils.getDom(sourceId);
		var text = null;
		if (document.selection) {
			text = document.selection.createRange().text;
		}
		else if (f.selectionStart) start = f.selectionStart;
		else if (window.getSelection) text = window.getSelection;
		else if (document.getSelection) text = document.getSelection;
		if (text!=null) {
			var lg = text.length;
			start = (lg) ? f.value.indexOf(text) : f.value.length;
		}
		return f.value.substring(0, start);
	},

	loadText: function(sObject) {
		var sourceId = sObject.id;
		var index = Suggest.getBoxIndex(sObject);
		var firstLetters = Suggest.getUnselectedText(sourceId);
		var targetRef = Suggest.targetContentObj; // SuggestContent
		var targetBoxRef = Suggest.targetBoxObj; // SuggestContentBox
		var targetSBoxRef = Suggest.targetSBoxObj; // SuggestContentBox
		var targetConsiderTDRef = Suggest.targetConsiderTDIdObj;

		if (firstLetters.length < Suggest.minLetters) {
			Suggest.targetObj.visibility = "hidden";
			Suggest.mouseMoved = false;
			return;
		}

		//alert(Suggest.getRequestPath(index, firstLetters));
		var requestACTION = Suggest.getParameter(Suggest.getRequestPath(index, firstLetters),"ACTION");
		var requestMDN = Suggest.getParameter(Suggest.getRequestPath(index, firstLetters),"MDN");

		if (Suggest.req.readyState != 0 && Suggest.req.readyState != 4) Suggest.req.abort();
		Suggest.req.open("GET", Suggest.getRequestPath(index, firstLetters), true);



		Suggest.req.onreadystatechange=function() {


			if (Suggest.req.readyState==4) {
				/* XML-Verarbeitung */
				Suggest.consAdType = "";

				var xOffset = 0;

				var notify = new Boolean(false);

				$(targetSBoxRef).removeClass("right");
				$(targetSBoxRef).removeClass("left");

				var itemCount = 0;
				var xml = Suggest.req.responseXML;
				if (!xml) return;
				var complete = xml.getElementsByTagName("AutoComplete");
				var groups = xml.getElementsByTagName("Group");

				var considerAlso = xml.getElementsByTagName("ConsiderAlso");
				if(Suggest.boxes[index].srcId  == 'what'|| Suggest.boxes[index].srcId  == 'city_complex'|| Suggest.boxes[index].srcId  == 'where_map'){
					$(targetSBoxRef).addClass("left");

				}else if((Suggest.boxes[index].srcId  == 'where' &&  considerAlso.length == 0) ||  (Suggest.boxes[index].srcId  == 'what_complex' &&  considerAlso.length == 0)) {

					$(targetSBoxRef).addClass("left");
				}
 				else{
					$(targetSBoxRef).addClass("right");
				}


				if (!groups || groups.length < 1) return;

				// Remove list-elements of target from all found ULs
				$(targetRef).empty();
				if ( document.getElementById('considerAlso') ){
					// remove old - obsolete elements
					$(document.getElementById('considerAlso')).remove();
				}
				if ( document.getElementById('considerAlsoContainer') ){
					// remove old - obsolete elements
					$(document.getElementById('considerAlsoContainer')).remove();
				}

				if ( document.getElementById('considerContent') ){
					// remove old - obsolete elements
					$(document.getElementById('considerContent')).remove();
				}

				if ( document.getElementById('considerContentTD') ){
					// remove old - obsolete elements
					$(document.getElementById('considerContentTD')).remove();
				}


				var nHits = parseInt(groups[0].getAttribute("nofTerms"))
				var shits = (groups.length > 1) ? parseInt(groups[1].getAttribute("nofTerms")) : 0;

				var nMode = goUtils.getDom(Suggest.targetLayerId); // sBox
				nMode.getElementsByTagName("div")[0].id = Suggest.boxes[index].targetId;
				var nHeader = goUtils.getDom(Suggest.targetHeaderLayerId); //suggestHeadText



				//term = Suggest.boxes[Suggest.getBoxIndex(Suggest.sourceObj)].srcName;
				//alert ( Suggest.boxes[Suggest.getBoxIndex(Suggest.sourceObj)].srcName );
				for (var j=0; j < groups.length; j++) {

					var items = groups[j].getElementsByTagName("Item");

					var tLabel = Suggest.suggestLabels[groups[j].getAttribute("id")];

					// add section header if there is a section
					if (tLabel != "" && groups[j].getElementsByTagName("Item").length > 0) {
						var oHeader = $('<h3 class="label">' + tLabel + '</h3>').appendTo(targetRef);
						// Add hits for suggestions of completion terms
						if(tLabel == Suggest.suggestLabels.CompletionTerms){
							var nViewedHits = (nHits > 10) ? "10" : nHits
							var sTerm = "(" + nViewedHits + "&nbsp;von&nbsp;" + nHits + ")";
							$('<br/><span class="hits">' + sTerm + '</span>').appendTo(oHeader);
						}
					}

					// Add list wrapper
					var oList = $("<ul>").appendTo(targetRef);
					oList.addClass("select");

					// Add list elements
					for (var i=0; i < items.length; i++) {
						notify = true;
						// break if firstChild is null - if there are groups with no content
						if(!items[i].firstChild) continue;

						var term = items[i].firstChild.nodeValue;

						Suggest.terms[itemCount] = term;

						var displayTerm = term;
						if (term.length > 26) {
							displayTerm = displayTerm.substring(0, 24) + "...";
						}

						var oLi = $("<li><a>" + displayTerm + "</a></li>");

						$(oLi).hover(function(evt){
							Suggest.selectTerm(0, this, true, true);
							var sSelTerm = Suggest.terms[Suggest.selectedTerm-1];
							if (sSelTerm.length > 26) {
								Suggest.showTooltip(evt, sSelTerm);
							}
							return false;
						},function(evt){
							Suggest.selectTerm(0, this, false, true);
							if(Suggest.isTooltip()) {
								Suggest.removeTooltip();
							}
							return false;
						});
						oLi.appendTo(oList);
						itemCount++;
					}
				}

				for (var i=0; i < considerAlso.length; i++){
				//alert ( " Suggest.boxes[index].srcId = " + Suggest.boxes[index].srcId);
				if(Suggest.boxes[index].srcId  == 'what'|| Suggest.boxes[index].srcId  == 'city_complex' || Suggest.boxes[index].srcId  == 'where_map'){
					xOffset = -0;
				}
 				else{
					xOffset = -180;
				}


					if ( document.getElementById('considerAlso') ){
						// remove old - obsolete elements
						$(document.getElementById('considerAlso')).remove();
					}
					if ( document.getElementById('considerAlsoContainer') ){
						// remove old - obsolete elements
						$(document.getElementById('considerAlsoContainer')).remove();
					}

					if ( document.getElementById('considerContent') ){
						// remove old - obsolete elements
						$(document.getElementById('considerContent')).remove();
					}

					if ( document.getElementById('considerContentTD') ){
						// remove old - obsolete elements
						$(document.getElementById('considerContentTD')).remove();
					}


					if(Suggest.boxes[index].srcId  == 'what'|| Suggest.boxes[index].srcId  == 'city_complex' || Suggest.boxes[index].srcId  == 'where_map'){						// insert <td><div id='considerContent'class='considerAlso buggybox"> after <td><div id='suggestContent'> !
						var tmpTD = $("<td id='considerContentTD' valign='top'>").insertAfter(targetConsiderTDRef );
						var targetConsiderRef = $("<div id='considerContent' class='considerAlso buggybox'>").appendTo(tmpTD );

						Suggest.consAdType = "_ad1";

					}
 					else{ // suggestWhere & suggestWhatDetails

						// insert <td><div id='considerContent'> before <td><div id='suggestContent'> !
						var tmpTD = $("<td id='considerContentTD' valign='top'>").insertBefore(targetConsiderTDRef );
						var targetConsiderRef = $("<div id='considerContent' class='considerAlso buggybox'>").appendTo(tmpTD );
						if(requestMDN == 'Partner, Sponsoren...' || requestMDN == ''){
							Suggest.consAdType = "_ad1";
						}else{
							Suggest.consAdType = "_ad2";
						}

					}

					var records = xml.getElementsByTagName("Record");
					if (!records || records.length < 1) continue;

					if ( document.getElementById('txtGYAd') ){
						// remove old - obsolete elements
						$(document.getElementById('txtGYAd')).remove();
					}
					$("<div id='txtGYAd' class='txtGYAd'>Werbeeintrag</div>").appendTo(targetConsiderRef);


					if ( document.getElementById('boxTop') ){
						// remove old - obsolete elements
						$(document.getElementById('boxTop')).remove();
					}
					$("<div id='boxTop' class='boxTop'><div><hr/></div></div>").appendTo(targetConsiderRef);


					var tmpDSATag = considerAlso[i].getElementsByTagName("dsaSubAddress")[0].childNodes[0].nodeValue;
					var tmpURL = '\'/home/' + tmpDSATag.trim() + '.html\'';

					var considerAlsoList = $('<div class="boxContent clickable buggybox" id="considerAlso" onclick="return goUtils.loadURL(' + tmpURL + ');">').appendTo(targetConsiderRef);

					$(considerAlsoList).empty();
                                        // add section header if there is a section
                                        if ( considerAlso[i].getElementsByTagName("subscriberInfo8").length > 0) {
                                                var oHeader = $('<h2 class="head">Wir empfehlen Ihnen:</h2>').appendTo(considerAlsoList);
                                                var entryConsider = $('<div class="entryToConsider">').appendTo(considerAlsoList);
                        			if ( considerAlso[i].getElementsByTagName("businessCategoryOrProfession").length > 0 ){
							var cBusinessCategoryOrProfessionTag = considerAlso[i].getElementsByTagName("businessCategoryOrProfession");
							var cBusinessCategoryOrProfession = considerAlso[i].getElementsByTagName("businessCategoryOrProfession")[0].childNodes[0].nodeValue;
							var cName = $('<h3 class="category">' + cBusinessCategoryOrProfession  + '</h3>').appendTo(entryConsider);
						}

						if ( considerAlso[i].getElementsByTagName("name").length > 0 ){
							var cNameTag = considerAlso[i].getElementsByTagName("name");
							var cDSATag = considerAlso[i].getElementsByTagName("dsaSubAddress")[0].childNodes[0].nodeValue;
							var cName = $('<h4 class="title"><a href="/home/' + cDSATag + '.html">' + cNameTag[0].childNodes[0].nodeValue + '</a></h4>').appendTo(entryConsider);
						}
						if ( considerAlso[i].getElementsByTagName("streetName").length > 0 ){
							var cStreetNameTag = considerAlso[i].getElementsByTagName("streetName");
							var cStreetName = cStreetNameTag[0].childNodes[0].nodeValue;
						}
						if ( considerAlso[i].getElementsByTagName("houseNumber").length > 0 ){
							var cHouseNumberTag = considerAlso[i].getElementsByTagName("houseNumber");
							var cHouseNumber = cHouseNumberTag[0].childNodes[0].nodeValue;
						}
						if ( considerAlso[i].getElementsByTagName("zipCode").length > 0 ){
							var cZipCodeTag = considerAlso[i].getElementsByTagName("zipCode");
							var cZipCode = cZipCodeTag[0].childNodes[0].nodeValue;
						}
						if ( considerAlso[i].getElementsByTagName("localityName").length > 0 ){
							var cLocalityNameTag = considerAlso[i].getElementsByTagName("localityName");
							var cLocalityName = cLocalityNameTag[0].childNodes[0].nodeValue;
						}

						if ( considerAlso[i].getElementsByTagName("streetName").length > 0 || considerAlso[i].getElementsByTagName("houseNumber").length > 0 || considerAlso[i].getElementsByTagName("zipCode").length > 0 || considerAlso[i].getElementsByTagName("localityName").length > 0 ){
							var cName = $('<p class="address">' + cStreetName +  ' ' + cHouseNumber + '<br />' + cZipCode + ' ' + cLocalityName + '</p>').appendTo(entryConsider);

						}


						var cTelephoneLink = '<a href="#">Telefonnummer anzeigen</a>';
  						$(cTelephoneLink ).appendTo(entryConsider);



                                        }

					if ( document.getElementById('boxBottom') ){
						// remove old - obsolete elements
						$(document.getElementById('boxBottom')).remove();
					}
					$("<div id='boxBottom' class='boxBottom'><div><hr/></div></div>").appendTo(targetConsiderRef);


					if ( document.getElementById('txtGYAd') ){
						// remove old - obsolete elements
						$(document.getElementById('txtGYAd')).remove();
					}
					$("<div id='txtGYAd' class='txtGYAd'><a title='Wie gefällt Ihnen diese Anzeige?' href=''></a></div>").appendTo(targetConsiderRef);

				}

				if (nHits+shits>0 && sObject==Suggest.sourceObj) {
					var refObj = goUtils.getDom(Suggest.boxes[index].refId);
					//alert ( "Suggest.boxes[index].refId = " + Suggest.boxes[index].refId);
					goUtils.setLyrWithOffset(refObj, Suggest.targetLayerId, Suggest.boxes[index].dx, Suggest.boxes[index].dy, xOffset );
					Suggest.targetObj.visibility = "visible";
					Suggest.targetObj.display = "block";

					// Check if HistoryLayer exists
					if (User && User.searchHistory && typeof(User.searchHistory.oHolder) == "object") {
						User.searchHistory.hide();
					}
				} else {
					Suggest.targetObj.visibility = "hidden";
					Suggest.mouseMoved = false;
				}
				Suggest.selectedTerm = 0;
				Suggest.savedInput = firstLetters;
				if (Suggest.boxes[index].autocomplete==true && complete && complete[0].firstChild && sObject==Suggest.sourceObj) {
					Suggest.autocomplete(sObject, complete[0].firstChild.nodeValue, false);
				}


				if (notify == true){
					//alert(Suggest.consAdType);
					goUtils.emitMessage("suggest_" + Suggest.boxes[index].srcId + Suggest.consAdType);
				}

			}

		}

		Suggest.req.send(null);

		//goUtils.emitMessage("suggest_" + Suggest.boxes[index].srcId + Suggest.consAdType);
	},

	isTooltip: function(){
		return $("#suggestTooltip").length > 0 ? true : false;
	},
	showTooltip: function(evt, sTerm){
		$("body").append("<div id='suggestTooltip'>" + sTerm + "</div>");
		$("#suggestTooltip").css("top", goUtils.findPosY(evt.target) + $(evt.target).height() + 15);
		$("#suggestTooltip").css("left", evt.pageX - $("body").offset().left );
		goUtils.showElement("suggestTooltip");
	},
	removeTooltip: function() {
		$("#suggestTooltip").remove();
	},

	getRequestPath: function(index, term) {
		var obj = goUtils.getDom(Suggest.boxes[index].srcId).form.elements;
		var formId = goUtils.getDom(Suggest.boxes[index].srcId).form.id;
		var params = "";

		if (formId != "routeAddress")
		{
			for (var i=0; i<obj.length; i++) {
				var value = (obj[i].id==Suggest.boxes[index].srcId) ? goUtils.urlencode(term) : goUtils.urlencode(obj[i].value);
				params = params+"&"+obj[i].name+"="+value;
			}
		}
		else
		{
			var regEx = new RegExp(/(\S+)\_/);
			Suggest.boxes[index].srcId.match(regEx);
			var srcElemPrefix = RegExp.$1;
			var elemPrefix = "";

			for (var i=0; i<obj.length; i = i + 1) {

				if (obj[i].id && obj[i].id.match(regEx) && RegExp.$1 == srcElemPrefix)
				{
					var value = (obj[i].id==Suggest.boxes[index].srcId) ? goUtils.urlencode(term) : goUtils.urlencode(obj[i].value);
					params = params+"&"+obj[i].name+"="+value;
			  }
			}
		}
		return "/IDA2?ACTION="+Suggest.boxes[index].action+"&MIME=xml"+params;
	},

	closeSuggest: function() {
		Suggest.sourceObj.focus();
		Suggest.autocomplete(Suggest.sourceObj, Suggest.savedInput, false);
		return false;
	},

	selectTerm: function(key, f, show, withMouse) {
		if (withMouse && !Suggest.mouseMoved) return;
		var targetRef = Suggest.targetContentObj;
		var nItems = targetRef.getElementsByTagName("li");
		// ArrowKey Up
		if (key==38) {
			Suggest.selectedTerm = (Suggest.selectedTerm == 0) ?  nItems.length : Suggest.selectedTerm - Suggest.safariFactor;
		}
		// ArrowKey Down
		if (key==40) Suggest.selectedTerm += Suggest.safariFactor;
		// Page Up/Down
		if (key==33) Suggest.selectedTerm -= 4 * Suggest.safariFactor;
		if (key==34) Suggest.selectedTerm += 4 * Suggest.safariFactor;
		// End
		if (key==35) Suggest.selectedTerm = nItems.length;
		// Pos1
		if (key==36) Suggest.selectedTerm = 1;

		// select inputfield if pageUp or keyUp at first element
		if (Suggest.selectedTerm < Suggest.safariFactor) {
			Suggest.selectedTerm = 0;
			Suggest.sourceObj.select();
		}
		if (Suggest.selectedTerm > nItems.length){
			Suggest.selectedTerm = 0;
		}
		if (f) Suggest.selectedTerm = 0;

		var roundedIndex = Math.round(Suggest.selectedTerm);
		for (var i = 1; i <= nItems.length; i++) {
			if ((roundedIndex == i || f == nItems[i-1]) && show) {
				nItems[i-1].className = "highlight";
				if (f == nItems[i-1] && show) {
					Suggest.selectedTerm = i;
					roundedIndex = i;
				}
			} else {
				nItems[i-1].className = "";
			}
		}
		if (Suggest.selectedTerm) {
			Suggest.autocomplete(Suggest.sourceObj, Suggest.terms[roundedIndex-1], true);
		} else {
			Suggest.sourceObj.value = Suggest.savedInput;
		}
	},


	getParameter: function ( queryString, parameterName ) {
		// Add "=" to the parameter name (i.e. parameterName=value)
		var parameterName = parameterName + "=";
		if ( queryString.length > 0 ) {
			// Find the beginning of the string
			begin = queryString.indexOf ( parameterName );

			// If the parameter name is not found, skip it, otherwise return the value
			if ( begin != -1 ) {
				// Add the length (integer) to the beginning
				begin += parameterName.length;
				// Multiple parameters are separated by the "&" sign
				end = queryString.indexOf ( "&" , begin );
				if ( end == -1 ) {
					end = queryString.length
				}
				// Return the string
				return unescape ( queryString.substring ( begin, end ) );
			}
			// Return "null" if no parameter has been found
			return "null";
		}
	},






	handleKeyEvent: function(){
		var evt = EventUtil.getEvent();
		evt.stopPropagation();
		var oldSourceObj = Suggest.sourceObj;
		Suggest.sourceObj = evt ? evt.target : event.srcElement;

		// Return if selected element is no input field
		if(Suggest.sourceObj.tagName.toLowerCase() != "input") return;
		var key = evt.keyCode;
		switch (key) {
			case 8:
			case 46:
				if (Suggest.completed) {
					Suggest.completed = false;
					return;
				}
				break;
			case 13:
				window.clearTimeout(Suggest.to);
				var index = Suggest.getBoxIndex(Suggest.sourceObj);
				var form = Suggest.sourceObj.form.name;
				if (Suggest.selectedTerm==0 && form!=null && (!Suggest.autocomplete || Suggest.targetObj.visibility!='visible')) Suggest.submitSearch(form);
				else {
					if (index!=null) {
						Suggest.selectedTerm = 0;
						Suggest.targetObj.visibility = "hidden";
						Suggest.mouseMoved = false;
						if (Suggest.selectedTerm) Suggest.sourceObj.value = Suggest.terms[Suggest.selectedTerm-1];
						var newSourceObj = goUtils.getDom(Suggest.boxes[index].nextField);
						// Get SearchType from following input element
						if (newSourceObj) var sSearchType = newSourceObj.getAttribute("inputType");
						// only select next element if it is enabled, visible or not null AND if the value is empty or has the default examples value
						if (newSourceObj!=null && !newSourceObj.disabled && newSourceObj.type!="hidden" && (newSourceObj.value==goVars.txtFld[sSearchType] || newSourceObj.value=="") ) {
							newSourceObj.focus();
						} else if (form!=null) {
							Suggest.submitSearch(form);
						}
						//goUtils.emitMessage("suggest_select"); //darf nicht getrackt werden
						return;
					}
				}
				break;
			case 35: // End
			case 36: // Pos1
			case 38: // Arrow Up
			case 40: // Arrow Down
			case 33: // PageUp
			case 34: // PageDown
				if (Suggest.targetObj.visibility=='visible') {
					Suggest.selectTerm(key, 0, true, false);
					return;
				}
				break;
			case 37:
			case 39: //Arrow Key Events Left/Right
				Suggest.savedInput = Suggest.sourceObj.value;
				Suggest.targetObj.visibility = "hidden";
				Suggest.mouseMoved = false;
				break;
			case 27: // ESC
				Suggest.sourceObj.value = Suggest.savedInput;
				Suggest.selectedTerm = 0;
				Suggest.targetObj.visibility = "hidden";
				Suggest.mouseMoved = false;
				window.clearTimeout(Suggest.to);
				return;
				break;
			case 9: // TAB
				//if (!Suggest.selectedTerm) oldSourceObj.value = Suggest.savedInput;
				Suggest.savedInput = Suggest.sourceObj.value;
				Suggest.selectedTerm = 0;
				Suggest.targetObj.visibility = "hidden";
				Suggest.mouseMoved = false;
				window.clearTimeout(Suggest.to);
				return;
				break;
		}
		if ((key<32 && key!=8) || (key>=37 && key<=40)) return;
		Suggest.savedInput = Suggest.sourceObj.value;
		var index = Suggest.getBoxIndex(Suggest.sourceObj);

		if (index!=null && Suggest.boxes[index].show==true){
			window.clearTimeout(Suggest.to);
			//alert ("Suggest.boxes[index].srcId = " + Suggest.boxes[index].srcId);
			Suggest.to = window.setTimeout("Suggest.loadText(Suggest.sourceObj)", Suggest.delayTime);
		}
	},

	getBoxIndex: function(obj){
		for (var i=0; i<Suggest.boxes.length; i++) {
			if (obj && obj.id==Suggest.boxes[i].srcId) return i;
		}
		return null;
	},

	preventEnterFormSubmit: function(){
		var evt = EventUtil.getEvent();
		//evt.stopPropagation();
		var sObj = evt ? evt.target : event.srcElement;
		var key = evt.keyCode;
		if (key==13 && sObj.className!=Suggest.submitBtnClass && Suggest.getBoxIndex(sObj)!=null) {
			evt.returnValue = false;
			evt.cancel = true;
			evt.preventDefault();
			return false;
		}
	},

	handleMouseClickEvent: function() {
		var evt = EventUtil.getEvent();
		var newSourceObj = evt ? evt.target : event.srcElement;
		if (!Suggest.selectedTerm && newSourceObj.className!="highlight" && newSourceObj.tagName!="INPUT" && newSourceObj.tagName!="A" && Suggest.targetObj.visibility=="visible") {
			Suggest.sourceObj.value = Suggest.savedInput;
		} else if (Suggest.selectedTerm) {
			Suggest.sourceObj.value = Suggest.terms[Suggest.selectedTerm-1];
			var index = Suggest.getBoxIndex(Suggest.sourceObj);
			var form = Suggest.sourceObj.form.name;
			if (index!=null) {
				newSourceObj = goUtils.getDom(Suggest.boxes[index].nextField);
				if (newSourceObj) var sSearchType = newSourceObj.getAttribute("inputType");
				if (newSourceObj!=null && !newSourceObj.disabled && newSourceObj.type != "hidden" && (newSourceObj.value==goVars.txtFld[sSearchType] || newSourceObj.value=="")) {
					newSourceObj.focus();
				} else if (form!=null) {
					Suggest.submitSearch(form);
				}
			}
			Suggest.savedInput = Suggest.sourceObj.value;
		}
		if (Suggest.getBoxIndex(newSourceObj)!=null) {
			Suggest.sourceObj = newSourceObj;
			Suggest.savedInput = Suggest.sourceObj.value;
		}
		Suggest.targetObj.visibility = "hidden";
		Suggest.mouseMoved = false;
		window.clearTimeout(Suggest.to);
		Suggest.selectedTerm = 0;
	},

	submitSearch: function(form) {
		Suggest.targetObj.visibility = "hidden";
		Suggest.mouseMoved = false;
		var oForm = document.forms[form];
		if (form != "mapAddress" && form != "routeAddress" && goNav.examples.checkFormSubmit(oForm)) {
			oForm.submit();
		}
		else if (form == "mapAddress"){
			goMap.defaultTexts.checkFormSubmit();
			GeoPortalMap.getCoords4Address();
		}
		else if (form == "routeAddress") {
			GeoPortalMap.getRoute();
		}
		return false;
	},

	handleMouseMoveEvent: function() {
		if (Suggest.targetObj && Suggest.targetObj.visibility=="visible"){
			Suggest.mouseMoved = true;
		} else {
			Suggest.mouseMoved = false;
		}
	}


}

Ajax.init();

String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};


Suggest.req = Ajax.HTTPRequest;
Suggest.showSuggest = (!Suggest.req) ? false : true;

if (Suggest.showSuggest) $(document).ready(Suggest.init);
// User specific scripts

var User = {
	searchHistory:{
		init: function(){
			this.oTxtWhat 			 = goUtils.getDom("what");
			this.oTxtWhere 			 = goUtils.getDom("where");
			this.oTxtStreet 		 = goUtils.getDom("street");
			this.oTxtStreetNumber 	 = goUtils.getDom("streetNumber");
			this.oSelEnv 			 = goUtils.getDom("area_sel");

			this.oSelEnvAdvAny 		 = goUtils.getDom("qsAdvAny");
			this.oSelEnvAdvGreedy 	 = goUtils.getDom("qsAdvGreedy");
			this.oSelEnvAdvExactly 	 = goUtils.getDom("qsAdvExactly");
			this.oSelEnvAdvSpell 	 = goUtils.getDom("qsAdvSpell");
			this.oSelEnvAdvAll 		 = goUtils.getDom("qsAdvAll");
			this.oSelEnvAdvProposals = goUtils.getDom("qsAdvProposals");
		},
		setValues: function(oInputData){
			var sWhat 				= oInputData.txtWhat ? unescape(oInputData.txtWhat) : "";
			var sWhere 				= oInputData.txtWhere ? unescape(oInputData.txtWhere) : "";
			var sStreet 			= oInputData.txtStreet ? unescape(oInputData.txtStreet) : "";
			var sEnvDist 			= oInputData.selDistance ? unescape(oInputData.selDistance) : "";

			var sEnvAdvAny 			= oInputData.txtAdvAny ? unescape(oInputData.txtAdvAny) : "";
			var sEnvAdvGreedy 	 	= oInputData.txtAdvGreedy ? unescape(oInputData.txtAdvGreedy) : "";
			var sEnvAdvExactly 	 	= oInputData.txtAdvExactly ? unescape(oInputData.txtAdvExactly) : "";
			var sEnvAdvSpell 	 	= oInputData.txtAdvSpell ? unescape(oInputData.txtAdvSpell) : "";
			var sEnvAdvAll 		 	= oInputData.txtAdvAll ? unescape(oInputData.txtAdvAll) : "";
			var sEnvAdvProposals 	= oInputData.txtAdvProposals ? unescape(oInputData.txtAdvProposals) : "";

			//(sStreet != "" || sEnvDist != "") ? goNav.envSearch.show() : ((goNav.envSearch.isVisible() && sWhat == "") ? goNav.envSearch.hide() : 0);
			(sEnvAdvAny != "" || sEnvAdvGreedy != "" || sEnvAdvExactly != "" || sEnvAdvSpell != "" || sEnvAdvAll != "" || sEnvAdvProposals != "") ? goNav.envSearch.show() : ((goNav.envSearch.isVisible() && sWhat == "") ? goNav.envSearch.hide() : 0);

			// Fill textfields
			if(sWhat != "") {
				// Change Textfield. Set to standardMode with black letters
				goNav.examples.setTxtToStandardMode(this.oTxtWhat);
				this.oTxtWhat.value = sWhat;
				goUtils.focusField(this.oTxtWhat);
			} else if(sWhere != "" || sStreet != "" || sEnvDist != "") {
				// Change Textfield to standard mode if one of the loc-fields is not empty
				goNav.examples.setTxtToStandardMode(this.oTxtWhere);
				goUtils.focusField(this.oTxtWhere);
			}

			if(sWhere != "") this.oTxtWhere.value = sWhere;
			if(sStreet != "") this.oTxtStreet.value = sStreet;
			// select value of selectbox
			if(sEnvDist != "") goUtils.selectTextAreaValue(this.oSelEnv, sEnvDist);

			// Hide Active HistoryBox
			this.getActiveBox().hide();

			// Check Historytype and proof for submitting or setting focus
			if(sWhat != ""){
				// What-History selected
				var sSearchType = this.oTxtWhere.getAttribute("inputType");
				// focus where-field if empty or with examples value. submit if not empty
				(this.oTxtWhere.value == "" || this.oTxtWhere.value == goVars.txtFld[sSearchType]) ?
					this.oTxtWhere.focus() : 0;
			}


		},
		resetList: function(sType){
			// Clear Cookie
			CK.set('BG_HISTORY','', '-1','', '/');
			// Return if Box-Class was not completely build (e.g. hide-function is not there)
			if(!goUtils.isFunction(this.getHistoryClassFromType(sType).hide)) return;
			// Hide Layer
			this.getHistoryClassFromType(sType).hide();
			// Disable History
			this.getHistoryClassFromType(sType).disable();
		},
		getHistoryClassFromType: function(sType){
			switch(sType){
				case "what":
					return this.HistBoxClassWhat;
					break;
				case "where":
					return this.HistBoxClassWhere;
					break;
			}
		},
		setActiveBox: function(oBoxClass){
			this.oActiveBox = oBoxClass;
		},
		getActiveBox: function(){
			return this.oActiveBox;
		},
		isDisabled:  function(){
			var booHistWhatOff = $("#BGSearchArea.histWhatOff").length > 0 ? true : 0;
			var booHistWhereOff = $("#BGSearchArea.histWhereOff").length > 0 ? true : 0;
			return {histWhat:booHistWhatOff, histWhere: booHistWhereOff};
		},
		hide: function(sType){
			this.getHistoryClassFromType(sType).hide();
		},
		BoxClass: function(sHolder, sSwitchBtn, sInput){
			this.sHolder = sHolder;
			this.sSwitchBtn = sSwitchBtn;

			// Return if HistoryHolder or Switch-Btn are not available
			if(!goUtils.isObject(document.getElementById(this.sHolder)) || !goUtils.isObject(document.getElementById(this.sSwitchBtn))) return;

			this.oHolder = goUtils.getDom(this.sHolder);
			this.refHolder = goUtils.getReference(this.sHolder);
			this.refSwitchBtn= goUtils.getReference(this.sSwitchBtn);
			this.oSwitchBtn = goUtils.getDom(this.sSwitchBtn);

			// Set Textfields and Selectfield
			this.oInput = goUtils.getDom(sInput);

			this.sTxtTitleHistHide = "Kürzliche Suchen ausblenden";
			this.sTxtTitleHistShow = "Kürzliche Suchen anzeigen";

			this.setHandlers = function(oBoxClass){
				$(document.body).bind("mouseup", {oBoxClass: oBoxClass}, this.handleMouseClick);
			};

			this.handleMouseClick = function(event){
				var oBoxClass = event.data.oBoxClass;

				var obj = event.target;
				while(obj.id != oBoxClass.sHolder && obj.id != oBoxClass.sSwitchBtn && obj.nodeName.toLowerCase() != "body" && obj.nodeName.toLowerCase() != "html") obj = obj.parentNode;

				// Hide History if outside of histLayer
				if(obj.id == oBoxClass.sHolder || obj.id == oBoxClass.sSwitchBtn || oBoxClass.isDisabled()) return;
				else oBoxClass.hide();
			};

			this.toggle = function(sType){
				if(!this.refHolder) return;
				(this.refHolder.display == "none" || this.refHolder.display == "") ? this.show() : this.hide();
				return false;
			};

			this.show = function(){
				User.searchHistory.setActiveBox(this);
				// check if image is on startpage and change imagesource
				this.oSwitchBtn.src = (this.oSwitchBtn.src.indexOf("btn_dropdownStart_off") != -1) ? "/mmsbook-guecard/templates/templates/images/btn_dropdownStart.gif" : "/mmsbook-guecard/templates/templates/images/btn_dropdown.gif";
				this.setSwitchTitle(this.sTxtTitleHistHide);
				goUtils.setLyr(this.oInput, this.sHolder, -35, 30);
				goUtils.showElement(this.sHolder);
				return false;
			};

			this.hide = function(){
				goUtils.hideElement(this.sHolder);

				// check if image is on startpage and change imagesource
				this.oSwitchBtn.src = (this.oSwitchBtn.src.indexOf("btn_dropdownStart") != -1) ? "/mmsbook-guecard/templates/templates/images/btn_dropdownStart_off.gif" : "/mmsbook-guecard/templates/templates/images/btn_dropdown_off.gif";
				this.setSwitchTitle(this.sTxtTitleHistShow);
				return false;
			};

			this.disable =  function(){
				$(this.oSwitchBtn).remove();
				$("#BGSearchArea").addClass("histWhatOff");
				$("#BGSearchArea").addClass("histWhereOff");
				this.setIsDisabled();
			};
			this.setIsDisabled = function(){
				this.booDisabled = true;
			};
			this.isDisabled = function(){
				return (this.booDisabled) ? this.booDisabled : false;
			};

			this.setSwitchTitle = function(sTitle){
				this.oSwitchBtn.parentNode.title = sTitle;
				// ALT-Tag for IE
				this.oSwitchBtn.alt = sTitle
			};

			this.setHandlers(this);


		}
	}
}

// create HistoryBox Classes
$(document).ready(function(){
	User.searchHistory.HistBoxClassWhat = new User.searchHistory.BoxClass("histBoxWhat", "btnDropdownWhat", "what");
	User.searchHistory.HistBoxClassWhere = new User.searchHistory.BoxClass("histBoxWhere", "btnDropdownWhere", "where");
});
// *****************************************************
// ******************    nav.js    *********************
//
// Needed as a base for nav.js:
// - vars.js
// - utilities.js
//
// *****************************************************

var goNav = {
	init: function(){
		// Set object for navIds and layerIds
		goNav.setNavObject();

		// Set Examples-Text for textfields
		goNav.examples.init();

		// Get and store initial search-Type
		var sSearchType = goNav.getInitialSearchType();
		// if searchType was set (if link is in subNav with class "on")
		if(sSearchType){
			goNav.setCurrentSearchType(sSearchType);

			// store current NavId and LayerId
			goNav.sCurrentNavId = goNav.oNav[sSearchType].sNavId;
			goNav.setCurrentLayerName(goNav.oNav[sSearchType].sLayerId);

			// Focus SubNav for Tabbing
			goNav.focusCurrentSubNavElement();
		}

		// Set SubNav-Var
		goNav.oSubNav = goUtils.getDom('subNav_search');

		// Set EventHandlers for subNav
		goNav.setSubNavHandlers();
	},
	setSubNavHandlers: function(){
		//alert("setSubNavHandlers() called");
		EventUtil.addEventHandler(this.oSubNav, "click", this.setSearchType);
	},
	getInitialSearchType: function(){
		var oNavElement;
		// Iterate through oNav-Object, get the adNav-ID and check for the "on"-class
		// Afterwards return adView-Attribute, if class was found
		for(var o in this.oNav){
			oNavElement = goUtils.getDom(this.oNav[o].sNavId);
			if(goUtils.hasClass(oNavElement, "on")) {
				return oNavElement.getAttribute("searchType");
				break;
			}
		}
		return false;
	},
	setSearchType: function(){
		var evt = EventUtil.getEvent();
		evt.preventDefault();

		// Find id of clicked li-element
		var obj = evt.target;
		if(obj.nodeName.toLowerCase() == "ul") return;
		while(obj.nodeName.toLowerCase() != "li" && obj.nodeName.toLowerCase() != "body") obj = obj.parentNode;

		var sSearchType = obj.getAttribute("searchType");

		// Remove href of anchor because of preventDefault-failure in Safari
		obj.getElementsByTagName("a")[0].href = "#";

	  //alert("id: " + obj.id + " | searchType: " + sSearchType);
		// Switch searchType
		goNav.switchSearchType(sSearchType);
		goNav.setCurrentSearchType(sSearchType);

	},
	setNavObject: function(){
		this.oNav = {
			quicksearch:{
				sLayerId: "quickSearch",
				sNavId: "subNav_quick"
			},
			detailsuche:{
				sLayerId: "complexSearch",
				sNavId: "subNav_complex"
			},
			individualsearch:{
				sLayerId: "individualSearch",
				sNavId: "subNav_individual"
			},
			partnersearch:{
				sLayerId: "partnerSearch",
				sNavId: "subNav_partner"
			},
			sponsorsearch:{
				sLayerId: "sponsorSearch",
				sNavId: "subNav_sponsor"
			},
			contactsearch:{
				sLayerId: "contactSearch",
				sNavId: "subNav_contact"
			},
			branchsearch:{
				sLayerId: "branchSearch",
				sNavId: "subNav_branch"
			},
			websuche:{
				sLayerId: "webSearch",
				sNavId: "subNav_web"
			},
			notdienste:{
				sLayerId: "emergencySearch",
				sNavId: "subNav_emergency"
			}
		}
	},
	highlightCurrentNav: function(){
		if(goUtils.hasClass(this.getCurrentNavId(), "on")) return;
		goUtils.addClass(this.getCurrentNavId(), "on");
		goUtils.removeClass(this.getLastNavId(), "on");
	},
	setCurrentNavId: function(sId){
		this.setLastNavId(this.getCurrentNavId());
		this.sCurrentNavId = sId;
	},
	getCurrentNavId: function(){
		return (this.sCurrentNavId) ? this.sCurrentNavId : null;
	},
	setLastNavId: function(sId){
		this.sLastNavId = sId;
	},
	getLastNavId: function(){
		return (this.sLastNavId) ? this.sLastNavId : null;
	},
	setCurrentSearchType: function(sSearchType){
		this.sCurrentSearchType = sSearchType;
	},
	getCurrentSearchType: function(){
		return this.sCurrentSearchType;
	},
	switchSearchType: function(sType){
		var sLayer, sNavId;
		sType.toLowerCase();
		if (sType == "branchensuche") {
			goUtils.loadURL("/branchenbuch");
			return;
		}

		/**
		else if (sType == "detailsuche" && this.getCurrentSearchType() == "quicksearch"){
			this.splitLocalityData(document.quickForm.qs_location.value);
		}
		else if (sType == "quicksearch" && this.getCurrentSearchType() == "detailsuche"){
			this.joinLocalityData(document.complexForm.postalcode.value, document.complexForm.ds_city.value);
		}
		*/

		if (this.getCurrentSearchType() == sType) return;
		goUtils.showElement(this.oNav[sType].sLayerId);
		this.setCurrentLayerName(this.oNav[sType].sLayerId);
		if(this.getLastLayerName() && this.getLastLayerName() != "branchesSearch") goUtils.hideElement(this.getLastLayerName());

		this.setCurrentNavId(this.oNav[sType].sNavId);
		this.highlightCurrentNav();
		goUtils.emitMessage(this.oNav[sType].sLayerId);
	},
	setCurrentLayerName: function(sLayer){
		this.setLastLayerName(this.sCurrentLayerName);
		this.sCurrentLayerName = sLayer;
	},
	getCurrentLayerName: function(){
		return (this.sCurrentLayerName) ? this.sCurrentLayerName : null;
	},
	setLastLayerName: function(sLayer){
		this.sLastLayerName = sLayer;
	},
	getLastLayerName: function(){
		return (this.sLastLayerName) ? this.sLastLayerName : null;
	},
	focusCurrentSubNavElement: function(){
		goUtils.getDom(this.sCurrentNavId).getElementsByTagName("a")[0].focus();
	},
	envSearch: {
		show: function(sType){
			goUtils.addClass(this.getName(sType,"envSearchFields"),"on");
			goUtils.showElement(this.getName(sType,"lnkEnvSearchHide"));
			goUtils.hideElement(this.getName(sType,"lnkEnvSearchShow"));
			goUtils.hideElement(this.getName(sType,"searchFieldsHelp"));

			goUtils.enableElement(this.getName(sType,"qsAdvAny"));
			goUtils.enableElement(this.getName(sType,"qsAdvGreedy"));
			goUtils.enableElement(this.getName(sType,"qsAdvExactly"));
			goUtils.enableElement(this.getName(sType,"qsAdvSpell"));
			goUtils.enableElement(this.getName(sType,"qsAdvAll"));
			goUtils.enableElement(this.getName(sType,"qsAdvProposals"));
		},
		hide: function(sType){
			goUtils.removeClass(this.getName(sType,"envSearchFields"),"on");
			goUtils.showElement(this.getName(sType,"lnkEnvSearchShow"));
			goUtils.showElement(this.getName(sType,"searchFieldsHelp"));
			goUtils.hideElement(this.getName(sType,"lnkEnvSearchHide"));

			goUtils.disableElement(this.getName(sType,"qsAdvAny"));
			goUtils.disableElement(this.getName(sType,"qsAdvGreedy"));
			goUtils.disableElement(this.getName(sType,"qsAdvExactly"));
			goUtils.disableElement(this.getName(sType,"qsAdvSpell"));
			goUtils.disableElement(this.getName(sType,"qsAdvAll"));
			goUtils.disableElement(this.getName(sType,"qsAdvProposals"));
		},
		getName: function(sType, sBaseName){
			return sBaseName + ((sType) ? "_" + sType : "");
		},
		isVisible: function(){
			return goUtils.hasClass("envSearchFields", "on");
		}
	},
	examples:{
		init: function(){
			this.oSearchArea = goUtils.getDom("BGSearchArea");
			var arrFields = this.oSearchArea.getElementsByTagName("input");
			var sSearchType, oField;
			for(var c=0; c < arrFields.length; c++){
				oField = arrFields[c];
				sSearchType = oField.getAttribute("inputType");
				if(sSearchType != null) {
					this.setEventHandlers(oField, goVars.txtFld[sSearchType]);
					// if field is empty or has default value (IE)
					if(oField.value == "" || oField.value == goVars.txtFld[sSearchType]){
						//alert(goVars.txtFld[sSearchType]);
						oField.value = goVars.txtFld[sSearchType];
						goUtils.addClass(oField, "default");
					}
				}
			}

			// Check if textfield-focus has to be set
			this.checkForSettingFocus();
		},
		checkForSettingFocus: function(){
			// Only set focus on what-field if at startpage and history is not disabled (recurring user)
			(!User.searchHistory.isDisabled().histWhat && !User.searchHistory.isDisabled().histWhere && this.isStartpage()) ? $("#what").focus() : 0;
		},
		isStartpage: function(){
			// startpage if no subNav_search available
			return ($("#subNav_search").length > 0) ? false : true;
		},
		setEventHandlers: function(oField, sValue){
			EventUtil.addEventHandler(oField, "focus", function(){goNav.examples.eraseDefault(oField, sValue);});
			EventUtil.addEventHandler(oField, "blur", function(){goNav.examples.resetDefault(oField, sValue);});
			// To be safe that standard textmode is active (Browser-BACK)
			EventUtil.addEventHandler(oField, "keypress", function(){goNav.examples.setTxtToStandardMode(oField);});
		},
		checkFormSubmit: function(oForm){
			// initialize and reset Filter-Cookie
			if(typeof goNavContext != "undefined") goNavContext.initFilterCookie();

			var arrFields = oForm.getElementsByTagName("input");

			var sSearchType, oField;
			var params = new Array();
			for(var c=0; c < arrFields.length; c++){
				oField = arrFields[c];
				sSearchType = oField.getAttribute("inputType");
				if(sSearchType != null && oField.value == goVars.txtFld[sSearchType]) oField.value = "";
				if (oField.id=='what') params["what"] = oField.value;
				if (oField.id=='where') params["where"] = oField.value;
				if (oField.id=='street') params["street"] = oField.value;
			}
			if (oForm.name=="quickForm" || oForm.name=="inputForm"){
				if(!params["what"] && params["where"]){
					// Only where-field is filled - call map
					return goNav.checkMapSearch(params);
				} else if (params["what"] && !params["where"]){
					// Only what-field is filled - jump to where-field
					if(goNav.getCurrentInputElement() && goNav.getCurrentInputElement().id != "where"){
						$("#where").focus();
						return false;
					}
				}
			}
			return true;
		},
		eraseDefault: function(obj, text){
			// Set current textfield to active element
			goNav.setCurrentInputElement(obj);
			if (obj.value == text){
				obj.value = "";
				this.setTxtToStandardMode(obj);
				obj.select();
			}
		},
		resetDefault: function(obj, text){
			if(obj.value == "") {
				this.setTxtToExamplesMode(obj);
				obj.value = text;
			}
		},
		setTxtToExamplesMode: function(objTxtfield){
			goUtils.addClass(objTxtfield, "default");
		},
		setTxtToStandardMode: function(objTxtfield){
			goUtils.removeClass(objTxtfield, "default");
		}

	},
	setCurrentInputElement: function(obj){
		this.oCurrentInputElement = obj;
	},
	getCurrentInputElement: function(){
		return this.oCurrentInputElement;
	},
	doWebSearch: function(strFormName, strKeyword) {
  		var form = eval(document.forms[strFormName]);
  		form.keywords.value=unescape(strKeyword);
  		form.ACTION.value="initialWebSearch";
  		form.submit();
		return false;
	},

	checkMapSearch: function(params){
	  var loc = params["where"];
	  var street = params["street"];

	  loc = loc.replace(/\//g,"%2F");
	  street = street.replace(/\//g,"%2F");
	  street = street.replace(/\+/g,"%2B");

	  var urlSuffix = loc;
	  if (street != "") urlSuffix = urlSuffix+"/"+street;
	  urlSuffix = urlSuffix + "/";
	  urlSuffix = goUtils.urlencode(urlSuffix);

	  if (Ajax.HTTPRequest.readyState!=0 && Ajax.HTTPRequest.readyState!=4) Ajax.HTTPRequest.abort();

	  Ajax.HTTPRequest.open("GET", "/ajaxPos/" + urlSuffix , false);
	  Ajax.HTTPRequest.send(null);

	  var xml = Ajax.HTTPRequest.responseXML;

	  if (!xml) {return;}

	  var responseUrl = xml.getElementsByTagName("url");

	  if (responseUrl != undefined && responseUrl[0] != undefined && responseUrl[0].firstChild != undefined) {
	    urlSuffix = responseUrl[0].firstChild.nodeValue;
	    urlSuffix = goUtils.urlencode(urlSuffix);
	  }

	  goUtils.loadURL("/map/" + urlSuffix);

    return false;
	},
	joinLocalityData: function(plz, loc){
		var strLoc = (plz) ? plz+" "+loc : loc;
		var oField = document.quickForm.LOC
		oField.value = strLoc;
		if(strLoc != "") {
			goNav.examples.setTxtToStandardMode(oField);
		} else {
			var sSearchType = oField.getAttribute("inputType");
			goNav.examples.resetDefault(oField, goVars.txtFld[sSearchType]);
		}
	},
	splitLocalityData: function(strLocBuf){
	  var numCounter = 0;
	  var booZipCodeFound = false;
	  var strCity = "", strPLZ = "";
	  var strLoc = strLocBuf.toString();
	  var arrStringBuf = new Array();
	  arrStringBuf = this.getWordsFromString(strLoc);
	  var numArrayLength = arrStringBuf.length;
	  while(numCounter++ < numArrayLength){

		if(this.checkForNumeralString(arrStringBuf[numCounter-1])){

		  strPLZ += arrStringBuf[numCounter-1];
		} else {

		  (strCity.length > 0) ? strCity += " " : 0;
		  strCity += arrStringBuf[numCounter-1];
		}
	  }
	  if (strCity!=goVars.txtFld["where"]) {
	  	document.complexForm.plz_complex.value = strPLZ;
	  	document.complexForm.city_complex.value = strCity;
	  } else {
	  	document.complexForm.plz_complex.value = "";
	  	document.complexForm.city_complex.value = "";
	  }
	},
	checkForNumeralString: function(str){
	  var numStringLength = str.length;
	  var numCounter = 0;
	  while (numCounter < numStringLength){
		var strCurrChar = str.charAt(numCounter++)

		if (isNaN(strCurrChar) && strCurrChar != "*" && strCurrChar != ".") return false;
	  }
	  return true;
	},

	getWordsFromString: function(str){
	  var arrString = str.split(" ");
	  return arrString;
	}
}

var goNavContext = {
	init: function(){
		goNavContext.oBranches = goUtils.getDom('contextNav_branches');
		goNavContext.oRelBranches = goUtils.getDom('contextNav_relatedBranches');
		goNavContext.oCities = goUtils.getDom('contextNav_nextCities');
		goNavContext.oWeb = goUtils.getDom('contextNav_webSearch');

		goNavContext.oToggleBranches = goUtils.getDom('toggleBranches');
		goNavContext.oToggleRelBranches = goUtils.getDom('toggleRelBranches');
		goNavContext.oToggleCities = goUtils.getDom('toggleNextCities');
		goNavContext.oToggleTopCities = goUtils.getDom('toggleTopCities');
		goNavContext.oToggleWeb = goUtils.getDom('toggleWebSearch');
		goNavContext.oToggleMap = goUtils.getDom('switchMap');
		goNavContext.oToggleCoops = goUtils.getDom('toggleCoops');
		goNavContext.oToggleCityFavorites = goUtils.getDom('toggleCityFavorites');
		goNavContext.oToggleCityInfos = goUtils.getDom('toggleCityInfos');

		goNavContext.oMoreBranches = goUtils.getDom('lnkMoreBranches');
		goNavContext.oMoreRelBranches = goUtils.getDom('lnkMoreRelBranches');
		goNavContext.oMoreNextCities = goUtils.getDom('lnkMoreNextCities');
		goNavContext.oMoreWebSearch = goUtils.getDom('lnkMoreWebSearch');

		goNavContext.sCurrentClickedBoxId = "";
		goNavContext.sCurrentClickedToggleId = "";

		goNavContext.booCookiesAccepted = CK.checkFunc();

		var showMap = (Pref.getSuggestCookie()&4) ? 1 : 0;
		goNavContext.arrFilterCookie = ["branchFilter=1", "taxFilter=1", "neighborhoodFilter=1", "showMap="+showMap];
		goNavContext.getFilterCookie();
		goNavContext.setObjHandlers();
	},
	setObjHandlers: function(){
		if(this.oToggleBranches) EventUtil.addEventHandler(this.oToggleBranches, "click", this.toggleBox);
		if(this.oToggleRelBranches) EventUtil.addEventHandler(this.oToggleRelBranches, "click", this.toggleBox);
		if(this.oToggleCities) EventUtil.addEventHandler(this.oToggleCities, "click", this.toggleBox);
		if(this.oToggleTopCities) EventUtil.addEventHandler(this.oToggleTopCities, "click", this.toggleBox);
		if(this.oToggleWeb) EventUtil.addEventHandler(this.oToggleWeb, "click", this.toggleBox);
		if(this.oToggleMap) EventUtil.addEventHandler(this.oToggleMap, "click", this.toggleMapLink);
		if(this.oToggleCoops) EventUtil.addEventHandler(this.oToggleCoops, "click", this.toggleBox);
		if(this.oToggleCityFavorites) EventUtil.addEventHandler(this.oToggleCityFavorites, "click", this.toggleBox);
		if(this.oToggleCityInfos) EventUtil.addEventHandler(this.oToggleCityInfos, "click", this.toggleBox);

		if(this.oMoreBranches) EventUtil.addEventHandler(this.oMoreBranches, "click", this.toggleLinkAmount);
		if(this.oMoreRelBranches) EventUtil.addEventHandler(this.oMoreRelBranches, "click", this.toggleLinkAmount);
		if(this.oMoreNextCities) EventUtil.addEventHandler(this.oMoreNextCities, "click", this.toggleLinkAmount);
		if(this.oMoreWebSearch) EventUtil.addEventHandler(this.oMoreWebSearch, "click", this.toggleLinkAmount);


	},
	toggleBox: function(){
		var evt = EventUtil.getEvent();
		(isIE) ? evt.returnValue = false : evt.preventDefault();
		var obj = evt.target;

		goNavContext.setCurrentClickedBoxId(goNavContext.getBoxId(obj));
		goNavContext.setCurrentClickedToggleId(goNavContext.getToggleId(obj));

		if(goNavContext.getToggleStatus(obj) == "small"){
			goUtils.removeClass(goNavContext.getCurrentClickedBoxId() , "small");
			goNavContext.setToggleTitle("small");
			goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getCurrentClickedBoxId()), 1);
		}else{
			goUtils.addClass(goNavContext.getCurrentClickedBoxId(), "small");
			goNavContext.setToggleTitle("large");
			goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getCurrentClickedBoxId()), 0);
		}
	},
	initFilterCookie: function(){
		var showMap = (Pref.getSuggestCookie()&4) ? 1 : 0;
		CK.set("BusinessGuide_CONTEXTNAV", "branchFilter=1|taxFilter=1|neighborhoodFilter=1|showMap="+showMap, "1", "", "/");
	},
	getFilterCookie: function(){
		var cook = CK.get("BusinessGuide_CONTEXTNAV");
		if (!cook || cook.indexOf("showMap=")==-1) this.initFilterCookie();
		if(this.booCookiesAccepted) this.arrFilterCookie = CK.get("BusinessGuide_CONTEXTNAV").split("|");
	},
	setFilterCookie: function(sFiltername, nType){
		//alert("setFilterCookie: " + sFiltername);
		if(!this.booCookiesAccepted) return;
		for(var i = 0; i < this.arrFilterCookie.length; i++){
			// If filtername found in array, write given values
			if(this.arrFilterCookie[i].indexOf(sFiltername) == 0){
				this.arrFilterCookie[i] = sFiltername + "=" + nType;
				this.sFilterCookie = this.arrFilterCookie.join("|");
			}
		}
		// Write Cookie with joined values
		if(this.sFilterCookie) CK.set("BusinessGuide_CONTEXTNAV", this.sFilterCookie, "1", "", "/");
	},
	getFilternameFromBoxId: function(sId){
		switch(sId){
			case "contextNav_branches":
				return "branchFilter";
				break;
			case "contextNav_relatedBranches":
				return "taxFilter";
				break;
			case "contextNav_nextCities":
				return "neighborhoodFilter";
				break;
		}
	},
	setToggleTitle: function(sType){
		var oAnchor = goUtils.getDom(this.getCurrentClickedToggleId()).getElementsByTagName("a")[0];
		var oImg = goUtils.getDom(this.getCurrentClickedToggleId()).getElementsByTagName("a")[0].getElementsByTagName("img")[0];
		(sType == "small") ? oAnchor.title = "Box einklappen" : oAnchor.title = "Box ausklappen";
		(sType == "small") ? oImg.alt = "Box einklappen" : oImg.alt = "Box ausklappen";
	},
	getToggleId: function(obj){
		sNodeName = obj.nodeName.toLowerCase();
		while(sNodeName != "body" && !goUtils.hasClass(obj.id, "toggle")){
			obj = obj.parentNode;
			sNodeName = obj.nodeName.toLowerCase();
		}
		return obj.id;
	},
	getBoxId: function(obj){
		sNodeName = obj.nodeName.toLowerCase();
		while(sNodeName != "body" && !goUtils.hasClass(obj.id, "boxContextNav")){
			//alert("getBoxId: " + obj.nodeName + " | id = " + obj.id + " | hasClass: " + goUtils.hasClass(obj.id, 'boxContextNav'));
			obj = obj.parentNode;
			sNodeName = obj.nodeName.toLowerCase();
		}
		return obj.id;
	},
	getBoxContentNode: function(obj){
		sNodeName = obj.nodeName.toLowerCase();
		while(sNodeName != "body" && !goUtils.hasClass(obj, "boxContent")){
			//alert("getBoxId: obj = " + obj + " | nodeName = " + obj.nodeName + " | id = " + obj.id + " | hasClass: " + goUtils.hasClass(obj, 'boxContent'));
			obj = obj.parentNode;
			sNodeName = obj.nodeName.toLowerCase();
		}
		return obj;
	},
	toggleLinkAmount: function(){
		var evt = EventUtil.getEvent();
		(isIE) ? evt.returnValue = false : evt.preventDefault();
		var obj = evt.target;
		// Get rid of border
		obj.blur();

		// Get List from box-Id
		var oContent = goNavContext.getBoxContentNode(obj);
		goUtils.removeClass(oContent, "limited");
		// Set cookie for filter to 2 (full extended): Get name of filter from clicked toggle-id
		goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getBoxId(obj)), 2);
		//alert(goUtils.getDom(goNavContext.getBoxId(obj)).getElementsByTagName("ul")[0]);
	},
	toggleMapLink: function(){
		goNavContext.setFilterCookie("showMap", MapCtrl.showMap);
	},
	setCurrentClickedBoxId: function(sId){
		this.sCurrentClickedBoxId = sId;
	},
	getCurrentClickedBoxId: function(){
		return this.sCurrentClickedBoxId;
	},
	setCurrentClickedToggleId: function(sId){
		this.sCurrentClickedToggleId = sId;
	},
	getCurrentClickedToggleId: function(){
		return this.sCurrentClickedToggleId;
	},
	getToggleStatus: function(obj){
		// Return "small" if class "small" was set, otherwise "large"
		return (goUtils.hasClass(this.getCurrentClickedBoxId(), "small") ? "small" : "large")
	}
}


//  Taxonomie
var goResult = {
	tax:{
		expand: function(){
			goUtils.showElement("taxLinksRest");
			goUtils.hideElement("taxMore");
			return false;
		}
	},
	openClick2Dial: function(voipUrl,queryString){
		 	var strUrl = voipUrl;
		        strUrl += "c2c-goyellow/Click2DialForm.jsp?c2dQuery=" + queryString;
		        strWinProps = "width=" + 540 + ",height=" + 620 + ",titlebar=no,status=yes,toolbar=no,menubar=no,scrollbars=no,resizable=yes";
		        goUtils.win.open(strUrl, "click2Dial", strWinProps);
        		return false;
	}
}
// Tween Class with motion types
function Tween(){
	// t = time, b = beginning position, c = total change in position, d = duration of tween
	Math.easeInQuad = function(t, b, c, d){
		return c*(t/=d)*t + b
	}
	Math.easeOutQuad = function(t, b, c, d){
		return -c * (t/=d)*(t-2) + b;
	}
	Math.easeInOutQuad = function(t, b, c, d){
		if((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	}
	Math.easeInCubic = function(t, b, c, d){
		return c* Math.pow (t/d, 3) + b;
	}
	Math.easeOutCubic = function(t, b, c, d){
		return c* (Math.pow (t/d-1, 3) + 1) + b;
	}
	Math.easeInOutCubic = function(t, b, c, d){
		if ((t/=d/2) < 1)
			return c/2 * Math.pow (t, 3) + b;
		return c/2 * (Math.pow (t-2, 3) + 2) + b;
	}
	Math.easeInQuart = function(t, b, c, d){
		return c * Math.pow (t/d, 4) + b;
	}
	Math.easeOutQuart = function(t, b, c, d){
		return -c * (Math.pow (t/d-1, 4) - 1) + b;
	}
	Math.easeInOutQuart = function(t, b, c, d){
		if ((t/=d/2) < 1)
			return c/2 * Math.pow (t, 4) + b;
		return -c/2 * (Math.pow (t-2, 4) -2) + b;
	}

	// t = time, amp = amplitude, period = time of 1 oscillation, timeShift = move left or right on the horizontal time axis, offset = move up or down on the vertical position axis
	Math.wave = function(t, amp, period, timeShift, offset){
		return amp * Math.sin ((t-timeShift) * (2*Math.PI) / period) + offset;
	}
}
var goTween = new Tween();
// Element Animation Object (Slide-In / Slide-Out)
var oA = {
	init: function(sListWrapper){
		this.oLayers = {}
		this.oContainer = goUtils.getDom(sListWrapper);
		this.arrList = this.oContainer.getElementsByTagName("li");

		this.initListElements();

		this.sGlobalMotionType = "none";	// Window hidden, no movement

		// Motion Types
		this.fShowMotionType = Math.easeOutCubic;
		this.fHideMotionType = Math.easeOutCubic;

		this.oLastLi = null;
		this.oActiveLi = this.getActiveLi();

		// Motion general properties
		this.iMotionTimeIn = 20; 	// Hide Window
		this.iMotionTimeOut = 20; 	// Show Window

		this.iMotionDuration = 15; 	// Number of steps for one motion interval

		this.nDelayTime = 200;		// Time to wait for animation
	},
	initListElements: function(){
		var oThisLayer;
		for(var c = 0; c < this.arrList.length; c++){
			var oThisLayer = oA.getSlideWindowFromTarget(this.arrList[c]);

			oThisLayer.iLayerWidth = oThisLayer.offsetWidth;
			oThisLayer.iLayerHeight = oThisLayer.offsetHeight;

			// If a menu should be visible don't collapse height
			if(goUtils.hasClass(this.arrList[c], "active")){
				oThisLayer.sMotionStatus = "full";
			} else {
				oThisLayer.sMotionStatus = "none";
				oThisLayer.style.height = "0px";
			}

			//oThisLayer.style.display = "none";

			this.setHandler(this.arrList[c]);
		}
	},
	setHandler: function(oCurrentLayer){
		//alert("setNavHandlers() called");
		EventUtil.addEventHandler(oCurrentLayer, "mousemove", this.startShowWindow)
	},
	startShowWindow: function(){
		var evt = EventUtil.getEvent();
		if(oA.startTimer) clearTimeout(oA.startTimer);
		oA.startTimer = setTimeout(function(){oA.showWindow(evt)}, oA.nDelayTime);

		// Set Active Li-Element
		var oCurrentLi = oA.bubbleFromTargetToListElement(evt.target);
		// if mouse is over new li
		if(oA.oActiveLi != oCurrentLi) {
			// store last li and remove highlight from it
			oA.storeActiveLi(oCurrentLi);
			if(oA.oLastLi != null) goUtils.removeClass(oA.oLastLi, "active");
		}
		oA.oActiveLayer = oA.getSlideWindowFromTarget(evt.target);

		goUtils.addClass(oA.oActiveLi, "active");
	},
	showWindow: function(evt){
		//var evt = EventUtil.getEvent();
		//evt.preventDefault();
		//goUtils.trace("showWindow: event = " + evt + " | target = " + evt.target, "debug");
		// Find slideWindow of clicked li-element
		var oCurrentLayer;

		oCurrentLayer = oA.getSlideWindowFromTarget(evt.target);

		// Slide in all possibly opened layers
		oA.resetWindows(oCurrentLayer);

		//goUtils.trace("showWindow: oCurrentLayer = " + oCurrentLayer.id + " | MotionStatus =" + oCurrentLayer.sMotionStatus, "debug");
		if(oCurrentLayer.sMotionStatus == "full" || oCurrentLayer.sMotionStatus == "out") return;

		oCurrentLayer.sMotionStatus = "out";
		oCurrentLayer.iSBottom = oCurrentLayer.offsetHeight;

		oCurrentLayer.style.display = "block";

		// Motion properties for showing the window
		oCurrentLayer.fMotionType = oA.fShowMotionType;
		oCurrentLayer.iMotionStartTime = 0;
		oCurrentLayer.iMotionBegin = 0;
		oCurrentLayer.iMotionFinish = oCurrentLayer.iLayerHeight;
		//this.iMotionFinish = this.iLayerHeight;
		oCurrentLayer.iMotionChange = oCurrentLayer.iMotionFinish - oCurrentLayer.iMotionBegin;

		oA.animateWindow(oCurrentLayer, oCurrentLayer.iSBottom, oA.iMotionTimeOut);
	},
	hideWindow: function(oCurrentLayer){
		//var oCurrentLayer = this.oLayers[sLayerName];
		if(oCurrentLayer.sMotionStatus == "none" || oCurrentLayer.sMotionStatus == "in") return;

		oCurrentLayer.sMotionStatus = "in";
		oCurrentLayer.iMotionStartTime = 0;

		oCurrentLayer.iSBottom = oCurrentLayer.iLayerHeight;

		// Motion properties for hiding the window
		oCurrentLayer.fMotionType = this.fHideMotionType;
		oCurrentLayer.iMotionBegin = oCurrentLayer.offsetHeight;
		//goUtils.trace("hideWindow: CurrentLayer ==" + oCurrentLayer.id + " | iMotionBegin = " + oCurrentLayer.iMotionBegin , "debug");

		oCurrentLayer.iMotionFinish = 0;
		oCurrentLayer.iMotionChange = oCurrentLayer.iMotionFinish - oCurrentLayer.iMotionBegin;

		oA.animateWindow(oCurrentLayer, oCurrentLayer.iSBottom, oA.iMotionTimeIn);
	},
	animateWindow:function(oCurrentLayer, iBottom, iMotionTime){
		//goUtils.trace("animateWindow: oCurrentLayer = " + oCurrentLayer + " | LayerName = " + oCurrentLayer.sName, "debug");
		oCurrentLayer.iBottom = oCurrentLayer.fMotionType(oCurrentLayer.iMotionStartTime++, oCurrentLayer.iMotionBegin, oCurrentLayer.iMotionChange, oA.iMotionDuration);

		oCurrentLayer.style.height = oCurrentLayer.iBottom + "px";
		//goUtils.setObjectHeight(sLayerName, oCurrentLayer.iBottom);

		if(oCurrentLayer.iMotionStartTime > oA.iMotionDuration){
			// reset clip browserspecific
			if(oCurrentLayer.sMotionStatus == "out"){
				oA.sGlobalMotionType = "none";
				oCurrentLayer.sMotionStatus = "full";
				//goUtils.trace("**** End Motion Out (" + oCurrentLayer.id + ") ***", "debug");
			} else {
				oCurrentLayer.sMotionStatus = "none";
				oA.sGlobalMotionType = "none";
				//oCurrentLayer.style.display = "none";
				//goUtils.trace("**** End Motion In (" + oCurrentLayer.id + ") ***", "debug");
			}
			return;
		}
		(oCurrentLayer.timer) ? clearTimeout(oCurrentLayer.timer) : 0;
		oCurrentLayer.timer = setTimeout(function(){oA.animateWindow(oCurrentLayer, oCurrentLayer.iBottom, iMotionTime);}, iMotionTime);
	},
	resetWindows: function(oActiveLayer){
		for(var c = 0; c < this.arrList.length; c++){
			var oCurrentLayer = oA.getSlideWindowFromTarget(this.arrList[c]);
			(oActiveLayer != oCurrentLayer) ? oA.hideWindow(oCurrentLayer) : 0;
		}
	},
	getActiveLi: function(){
		for(var c = 0; c < this.arrList.length; c++){
			if (goUtils.hasClass(this.arrList[c], "active")) return this.arrList[c];
		}
	},
	storeActiveLi: function(oLi){
		this.oLastLi = this.oActiveLi;
		this.oActiveLi = oLi;
	},
	getMotionStatus: function(sLayerName){
		return this.oLayers[sLayerName].sMotionStatus;
	},
	getSlideWindowFromTarget: function(oTarget){
		var oLi = this.bubbleFromTargetToListElement(oTarget);
		//goUtils.trace("getSlideWindowFromTarget: ListElement-TagName =" + oLi.tagName, "debug");
		var arrDivs = oLi.getElementsByTagName("div");
		for (var c = 0; c < arrDivs.length; c++){
			if(goUtils.hasClass(arrDivs[c], "content")) return arrDivs[c];
		}
	},
	bubbleFromTargetToListElement: function(oTarget){
		//goUtils.trace("bubbleFromTargetToListElement: ListElement-NodeName =" + oTarget.nodeName, "debug");
		if(oTarget.nodeName.toLowerCase() == "ul") return;
		while(oTarget.nodeName.toLowerCase() != "li" && oTarget.nodeName.toLowerCase() != "body") oTarget = oTarget.parentNode;
		return oTarget;
	}
}
// init.js

function initialize(){
	// Initialize search navigation
	goNav.init();

	// Initialize searchHistory
	User.searchHistory.init();

	// Initialize context navigation
	goNavContext.init();
}

// Suggest
Suggest.boxes = new Array(
	new Suggest.Box("what", "suggestWhat", "what", -9, 22, "Was", "quickForm", "where", "suggestWhat"),
	new Suggest.Box("what_complex", "suggestWhere", "what_complex", -9, 22, "Was", "complexForm", "city_complex", "suggestWhatDetails"),
	new Suggest.Box("where", "suggestWhere", "where", -9, 22, "Ort", "quickForm", "street", "suggestWhere"),
	new Suggest.Box("city_complex", "suggestWhere", "city_complex", -9, 22, "Ort", "complexForm", "street_complex", "suggestWhere"),
	new Suggest.Box("where_emergency", "suggestWhere", "where_emergency", -9, 22, "Ort", "emergencyForm", "street_emergency", "suggestWhere"),
	new Suggest.Box("street", "suggestWhat", "street", -1, 22, "Straße", "quickForm", null, "suggestStreet"),
	new Suggest.Box("street_complex", "suggestWhat", "street_complex", -9, 22, "Straße", "complexForm", null, "suggestStreet"),
	new Suggest.Box("street_emergency", "suggestWhat", "street_emergency", -9, 22, "Straße", "emergencyForm", null, "suggestStreet"),
	new Suggest.Box("where_map", "suggestWhere", "where", -9, 22, "Ort", "quickForm", "street", "suggestWhere"),
	new Suggest.Box("street_map", "suggestWhat", "street", -1, 22, "Straße", "quickForm", null, "suggestStreet")
);

