var AJAXSTATUS = {"none":0,"success":1,"error":2,"failed":3};
var REGIONS = {"16":"Germany","100":"Ibiza","13":"Worldwide","5":"Berlin","4":"Hamburg","12":"Mecklenburg-Vorpommern","1":"M\u00fcnchen","3":"NRW","11":"N\u00fcrnberg","2":"Rhein-Main","10":"Rhein-Neckar","8":"Saarland","7":"Sachsen","15":"Schleswig-Holstein","6":"Stuttgart","9":"Th\u00fcringen"};
/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var D=function(H){var I=0;return parseFloat(H.replace(/\./g,function(){return(I++==1)?"":".";}));},G=navigator,F={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:G.cajaVersion,secure:false,os:null},C=navigator&&navigator.userAgent,E=window&&window.location,B=E&&E.href,A;F.secure=B&&(B.toLowerCase().indexOf("https")===0);if(C){if((/windows|win32/i).test(C)){F.os="windows";}else{if((/macintosh/i).test(C)){F.os="macintosh";}}if((/KHTML/).test(C)){F.webkit=1;}A=C.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){F.webkit=D(A[1]);if(/ Mobile\//.test(C)){F.mobile="Apple";}else{A=C.match(/NokiaN[^\/]*/);if(A){F.mobile=A[0];}}A=C.match(/AdobeAIR\/([^\s]*)/);if(A){F.air=A[0];}}if(!F.webkit){A=C.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){F.opera=D(A[1]);A=C.match(/Opera Mini[^;]*/);if(A){F.mobile=A[0];}}else{A=C.match(/MSIE\s([^;]*)/);if(A&&A[1]){F.ie=D(A[1]);}else{A=C.match(/Gecko\/([^\s]*)/);if(A){F.gecko=1;A=C.match(/rv:([^\s\)]*)/);if(A&&A[1]){F.gecko=D(A[1]);}}}}}}return F;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C++){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,A=Object.prototype,H="[object Array]",C="[object Function]",G="[object Object]",E=[],F=["toString","valueOf"],D={isArray:function(I){return A.toString.apply(I)===H;},isBoolean:function(I){return typeof I==="boolean";},isFunction:function(I){return(typeof I==="function")||A.toString.apply(I)===C;},isNull:function(I){return I===null;},isNumber:function(I){return typeof I==="number"&&isFinite(I);},isObject:function(I){return(I&&(typeof I==="object"||B.isFunction(I)))||false;},isString:function(I){return typeof I==="string";},isUndefined:function(I){return typeof I==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(K,J){var I,M,L;for(I=0;I<F.length;I=I+1){M=F[I];L=J[M];if(B.isFunction(L)&&L!=A[M]){K[M]=L;}}}:function(){},extend:function(L,M,K){if(!M||!L){throw new Error("extend failed, please check that "+"all dependencies are included.");}var J=function(){},I;J.prototype=M.prototype;L.prototype=new J();L.prototype.constructor=L;L.superclass=M.prototype;if(M.prototype.constructor==A.constructor){M.prototype.constructor=M;}if(K){for(I in K){if(B.hasOwnProperty(K,I)){L.prototype[I]=K[I];}}B._IEEnumFix(L.prototype,K);}},augmentObject:function(M,L){if(!L||!M){throw new Error("Absorb failed, verify dependencies.");}var I=arguments,K,N,J=I[2];if(J&&J!==true){for(K=2;K<I.length;K=K+1){M[I[K]]=L[I[K]];}}else{for(N in L){if(J||!(N in M)){M[N]=L[N];}}B._IEEnumFix(M,L);}},augmentProto:function(L,K){if(!K||!L){throw new Error("Augment failed, verify dependencies.");}var I=[L.prototype,K.prototype],J;for(J=2;J<arguments.length;J=J+1){I.push(arguments[J]);}B.augmentObject.apply(this,I);},dump:function(I,N){var K,M,P=[],Q="{...}",J="f(){...}",O=", ",L=" => ";if(!B.isObject(I)){return I+"";}else{if(I instanceof Date||("nodeType" in I&&"tagName" in I)){return I;}else{if(B.isFunction(I)){return J;}}}N=(B.isNumber(N))?N:3;if(B.isArray(I)){P.push("[");for(K=0,M=I.length;K<M;K=K+1){if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}if(P.length>1){P.pop();}P.push("]");}else{P.push("{");for(K in I){if(B.hasOwnProperty(I,K)){P.push(K+L);if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}}if(P.length>1){P.pop();}P.push("}");}return P.join("");},substitute:function(Y,J,R){var N,M,L,U,V,X,T=[],K,O="dump",S=" ",I="{",W="}",Q,P;for(;;){N=Y.lastIndexOf(I);if(N<0){break;}M=Y.indexOf(W,N);if(N+1>=M){break;}K=Y.substring(N+1,M);U=K;X=null;L=U.indexOf(S);if(L>-1){X=U.substring(L+1);U=U.substring(0,L);}V=J[U];if(R){V=R(U,V,X);}if(B.isObject(V)){if(B.isArray(V)){V=B.dump(V,parseInt(X,10));}else{X=X||"";Q=X.indexOf(O);if(Q>-1){X=X.substring(4);}P=V.toString();if(P===G||Q>-1){V=B.dump(V,parseInt(X,10));}else{V=P;}}}else{if(!B.isString(V)&&!B.isNumber(V)){V="~-"+T.length+"-~";T[T.length]=K;}}Y=Y.substring(0,N)+V+Y.substring(M+1);}for(N=T.length-1;N>=0;N=N-1){Y=Y.replace(new RegExp("~-"+N+"-~"),"{"+T[N]+"}","g");}return Y;},trim:function(I){try{return I.replace(/^\s+|\s+$/g,"");}catch(J){return I;}},merge:function(){var L={},J=arguments,I=J.length,K;for(K=0;K<I;K=K+1){B.augmentObject(L,J[K],true);}return L;},later:function(P,J,Q,L,M){P=P||0;J=J||{};var K=Q,O=L,N,I;if(B.isString(Q)){K=J[Q];}if(!K){throw new TypeError("method undefined");}if(O&&!B.isArray(O)){O=[L];}N=function(){K.apply(J,O||E);};I=(M)?setInterval(N,P):setTimeout(N,P);return{interval:M,cancel:function(){if(this.interval){clearInterval(I);}else{clearTimeout(I);}}};},isValue:function(I){return(B.isObject(I)||B.isString(I)||B.isNumber(I)||B.isBoolean(I));}};B.hasOwnProperty=(A.hasOwnProperty)?function(I,J){return I&&I.hasOwnProperty(J);}:function(I,J){return !B.isUndefined(I[J])&&I.constructor.prototype[J]!==I[J];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.8.0r4",build:"2449"});
YAHOO.util.Get=function(){var M={},L=0,R=0,E=false,N=YAHOO.env.ua,S=YAHOO.lang;var J=function(W,T,X){var U=X||window,Y=U.document,Z=Y.createElement(W);for(var V in T){if(T[V]&&YAHOO.lang.hasOwnProperty(T,V)){Z.setAttribute(V,T[V]);}}return Z;};var I=function(U,V,T){var W={id:"yui__dyn_"+(R++),type:"text/css",rel:"stylesheet",href:U};if(T){S.augmentObject(W,T);}return J("link",W,V);};var P=function(U,V,T){var W={id:"yui__dyn_"+(R++),type:"text/javascript",src:U};if(T){S.augmentObject(W,T);}return J("script",W,V);};var A=function(T,U){return{tId:T.tId,win:T.win,data:T.data,nodes:T.nodes,msg:U,purge:function(){D(this.tId);}};};var B=function(T,W){var U=M[W],V=(S.isString(T))?U.win.document.getElementById(T):T;if(!V){Q(W,"target node not found: "+T);}return V;};var Q=function(W,V){var T=M[W];if(T.onFailure){var U=T.scope||T.win;T.onFailure.call(U,A(T,V));}};var C=function(W){var T=M[W];T.finished=true;if(T.aborted){var V="transaction "+W+" was aborted";Q(W,V);return;}if(T.onSuccess){var U=T.scope||T.win;T.onSuccess.call(U,A(T));}};var O=function(V){var T=M[V];if(T.onTimeout){var U=T.scope||T;T.onTimeout.call(U,A(T));}};var G=function(V,Z){var U=M[V];if(U.timer){U.timer.cancel();}if(U.aborted){var X="transaction "+V+" was aborted";Q(V,X);return;}if(Z){U.url.shift();if(U.varName){U.varName.shift();}}else{U.url=(S.isString(U.url))?[U.url]:U.url;if(U.varName){U.varName=(S.isString(U.varName))?[U.varName]:U.varName;}}var c=U.win,b=c.document,a=b.getElementsByTagName("head")[0],W;if(U.url.length===0){if(U.type==="script"&&N.webkit&&N.webkit<420&&!U.finalpass&&!U.varName){var Y=P(null,U.win,U.attributes);Y.innerHTML='YAHOO.util.Get._finalize("'+V+'");';U.nodes.push(Y);a.appendChild(Y);}else{C(V);}return;}var T=U.url[0];if(!T){U.url.shift();return G(V);}if(U.timeout){U.timer=S.later(U.timeout,U,O,V);}if(U.type==="script"){W=P(T,c,U.attributes);}else{W=I(T,c,U.attributes);}F(U.type,W,V,T,c,U.url.length);U.nodes.push(W);if(U.insertBefore){var e=B(U.insertBefore,V);if(e){e.parentNode.insertBefore(W,e);}}else{a.appendChild(W);}if((N.webkit||N.gecko)&&U.type==="css"){G(V,T);}};var K=function(){if(E){return;}E=true;for(var T in M){var U=M[T];if(U.autopurge&&U.finished){D(U.tId);delete M[T];}}E=false;};var D=function(Z){if(M[Z]){var T=M[Z],U=T.nodes,X=U.length,c=T.win.document,a=c.getElementsByTagName("head")[0],V,Y,W,b;if(T.insertBefore){V=B(T.insertBefore,Z);if(V){a=V.parentNode;}}for(Y=0;Y<X;Y=Y+1){W=U[Y];if(W.clearAttributes){W.clearAttributes();}else{for(b in W){delete W[b];}}a.removeChild(W);}T.nodes=[];}};var H=function(U,T,V){var X="q"+(L++);V=V||{};if(L%YAHOO.util.Get.PURGE_THRESH===0){K();}M[X]=S.merge(V,{tId:X,type:U,url:T,finished:false,aborted:false,nodes:[]});var W=M[X];W.win=W.win||window;W.scope=W.scope||W.win;W.autopurge=("autopurge" in W)?W.autopurge:(U==="script")?true:false;if(V.charset){W.attributes=W.attributes||{};W.attributes.charset=V.charset;}S.later(0,W,G,X);return{tId:X};};var F=function(c,X,W,U,Y,Z,b){var a=b||G;if(N.ie){X.onreadystatechange=function(){var d=this.readyState;if("loaded"===d||"complete"===d){X.onreadystatechange=null;a(W,U);}};}else{if(N.webkit){if(c==="script"){if(N.webkit>=420){X.addEventListener("load",function(){a(W,U);});}else{var T=M[W];if(T.varName){var V=YAHOO.util.Get.POLL_FREQ;T.maxattempts=YAHOO.util.Get.TIMEOUT/V;T.attempts=0;T._cache=T.varName[0].split(".");T.timer=S.later(V,T,function(j){var f=this._cache,e=f.length,d=this.win,g;for(g=0;g<e;g=g+1){d=d[f[g]];if(!d){this.attempts++;if(this.attempts++>this.maxattempts){var h="Over retry limit, giving up";T.timer.cancel();Q(W,h);}else{}return;}}T.timer.cancel();a(W,U);},null,true);}else{S.later(YAHOO.util.Get.POLL_FREQ,null,a,[W,U]);}}}}else{X.onload=function(){a(W,U);};}}};return{POLL_FREQ:10,PURGE_THRESH:20,TIMEOUT:2000,_finalize:function(T){S.later(0,null,C,T);},abort:function(U){var V=(S.isString(U))?U:U.tId;var T=M[V];if(T){T.aborted=true;}},script:function(T,U){return H("script",T,U);},css:function(T,U){return H("css",T,U);}};}();YAHOO.register("get",YAHOO.util.Get,{version:"2.8.0r4",build:"2449"});(function(){var Y=YAHOO,util=Y.util,lang=Y.lang,env=Y.env,PROV="_provides",SUPER="_supersedes",REQ="expanded",AFTER="_after";var YUI={dupsAllowed:{"yahoo":true,"get":true},info:{"root":"2.8.0r4/build/","base":"http://yui.yahooapis.com/2.8.0r4/build/","comboBase":"http://yui.yahooapis.com/combo?","skin":{"defaultSkin":"sam","base":"assets/skins/","path":"skin.css","after":["reset","fonts","grids","base"],"rollup":3},dupsAllowed:["yahoo","get"],"moduleInfo":{"animation":{"type":"js","path":"animation/animation-min.js","requires":["dom","event"]},"autocomplete":{"type":"js","path":"autocomplete/autocomplete-min.js","requires":["dom","event","datasource"],"optional":["connection","animation"],"skinnable":true},"base":{"type":"css","path":"base/base-min.css","after":["reset","fonts","grids"]},"button":{"type":"js","path":"button/button-min.js","requires":["element"],"optional":["menu"],"skinnable":true},"calendar":{"type":"js","path":"calendar/calendar-min.js","requires":["event","dom"],supersedes:["datemeth"],"skinnable":true},"carousel":{"type":"js","path":"carousel/carousel-min.js","requires":["element"],"optional":["animation"],"skinnable":true},"charts":{"type":"js","path":"charts/charts-min.js","requires":["element","json","datasource","swf"]},"colorpicker":{"type":"js","path":"colorpicker/colorpicker-min.js","requires":["slider","element"],"optional":["animation"],"skinnable":true},"connection":{"type":"js","path":"connection/connection-min.js","requires":["event"],"supersedes":["connectioncore"]},"connectioncore":{"type":"js","path":"connection/connection_core-min.js","requires":["event"],"pkg":"connection"},"container":{"type":"js","path":"container/container-min.js","requires":["dom","event"],"optional":["dragdrop","animation","connection"],"supersedes":["containercore"],"skinnable":true},"containercore":{"type":"js","path":"container/container_core-min.js","requires":["dom","event"],"pkg":"container"},"cookie":{"type":"js","path":"cookie/cookie-min.js","requires":["yahoo"]},"datasource":{"type":"js","path":"datasource/datasource-min.js","requires":["event"],"optional":["connection"]},"datatable":{"type":"js","path":"datatable/datatable-min.js","requires":["element","datasource"],"optional":["calendar","dragdrop","paginator"],"skinnable":true},datemath:{"type":"js","path":"datemath/datemath-min.js","requires":["yahoo"]},"dom":{"type":"js","path":"dom/dom-min.js","requires":["yahoo"]},"dragdrop":{"type":"js","path":"dragdrop/dragdrop-min.js","requires":["dom","event"]},"editor":{"type":"js","path":"editor/editor-min.js","requires":["menu","element","button"],"optional":["animation","dragdrop"],"supersedes":["simpleeditor"],"skinnable":true},"element":{"type":"js","path":"element/element-min.js","requires":["dom","event"],"optional":["event-mouseenter","event-delegate"]},"element-delegate":{"type":"js","path":"element-delegate/element-delegate-min.js","requires":["element"]},"event":{"type":"js","path":"event/event-min.js","requires":["yahoo"]},"event-simulate":{"type":"js","path":"event-simulate/event-simulate-min.js","requires":["event"]},"event-delegate":{"type":"js","path":"event-delegate/event-delegate-min.js","requires":["event"],"optional":["selector"]},"event-mouseenter":{"type":"js","path":"event-mouseenter/event-mouseenter-min.js","requires":["dom","event"]},"fonts":{"type":"css","path":"fonts/fonts-min.css"},"get":{"type":"js","path":"get/get-min.js","requires":["yahoo"]},"grids":{"type":"css","path":"grids/grids-min.css","requires":["fonts"],"optional":["reset"]},"history":{"type":"js","path":"history/history-min.js","requires":["event"]},"imagecropper":{"type":"js","path":"imagecropper/imagecropper-min.js","requires":["dragdrop","element","resize"],"skinnable":true},"imageloader":{"type":"js","path":"imageloader/imageloader-min.js","requires":["event","dom"]},"json":{"type":"js","path":"json/json-min.js","requires":["yahoo"]},"layout":{"type":"js","path":"layout/layout-min.js","requires":["element"],"optional":["animation","dragdrop","resize","selector"],"skinnable":true},"logger":{"type":"js","path":"logger/logger-min.js","requires":["event","dom"],"optional":["dragdrop"],"skinnable":true},"menu":{"type":"js","path":"menu/menu-min.js","requires":["containercore"],"skinnable":true},"paginator":{"type":"js","path":"paginator/paginator-min.js","requires":["element"],"skinnable":true},"profiler":{"type":"js","path":"profiler/profiler-min.js","requires":["yahoo"]},"profilerviewer":{"type":"js","path":"profilerviewer/profilerviewer-min.js","requires":["profiler","yuiloader","element"],"skinnable":true},"progressbar":{"type":"js","path":"progressbar/progressbar-min.js","requires":["element"],"optional":["animation"],"skinnable":true},"reset":{"type":"css","path":"reset/reset-min.css"},"reset-fonts-grids":{"type":"css","path":"reset-fonts-grids/reset-fonts-grids.css","supersedes":["reset","fonts","grids","reset-fonts"],"rollup":4},"reset-fonts":{"type":"css","path":"reset-fonts/reset-fonts.css","supersedes":["reset","fonts"],"rollup":2},"resize":{"type":"js","path":"resize/resize-min.js","requires":["dragdrop","element"],"optional":["animation"],"skinnable":true},"selector":{"type":"js","path":"selector/selector-min.js","requires":["yahoo","dom"]},"simpleeditor":{"type":"js","path":"editor/simpleeditor-min.js","requires":["element"],"optional":["containercore","menu","button","animation","dragdrop"],"skinnable":true,"pkg":"editor"},"slider":{"type":"js","path":"slider/slider-min.js","requires":["dragdrop"],"optional":["animation"],"skinnable":true},"storage":{"type":"js","path":"storage/storage-min.js","requires":["yahoo","event","cookie"],"optional":["swfstore"]},"stylesheet":{"type":"js","path":"stylesheet/stylesheet-min.js","requires":["yahoo"]},"swf":{"type":"js","path":"swf/swf-min.js","requires":["element"],"supersedes":["swfdetect"]},"swfdetect":{"type":"js","path":"swfdetect/swfdetect-min.js","requires":["yahoo"]},"swfstore":{"type":"js","path":"swfstore/swfstore-min.js","requires":["element","cookie","swf"]},"tabview":{"type":"js","path":"tabview/tabview-min.js","requires":["element"],"optional":["connection"],"skinnable":true},"treeview":{"type":"js","path":"treeview/treeview-min.js","requires":["event","dom"],"optional":["json","animation","calendar"],"skinnable":true},"uploader":{"type":"js","path":"uploader/uploader-min.js","requires":["element"]},"utilities":{"type":"js","path":"utilities/utilities.js","supersedes":["yahoo","event","dragdrop","animation","dom","connection","element","yahoo-dom-event","get","yuiloader","yuiloader-dom-event"],"rollup":8},"yahoo":{"type":"js","path":"yahoo/yahoo-min.js"},"yahoo-dom-event":{"type":"js","path":"yahoo-dom-event/yahoo-dom-event.js","supersedes":["yahoo","event","dom"],"rollup":3},"yuiloader":{"type":"js","path":"yuiloader/yuiloader-min.js","supersedes":["yahoo","get"]},"yuiloader-dom-event":{"type":"js","path":"yuiloader-dom-event/yuiloader-dom-event.js","supersedes":["yahoo","dom","event","get","yuiloader","yahoo-dom-event"],"rollup":5},"yuitest":{"type":"js","path":"yuitest/yuitest-min.js","requires":["logger"],"optional":["event-simulate"],"skinnable":true}}},ObjectUtil:{appendArray:function(o,a){if(a){for(var i=0;
i<a.length;i=i+1){o[a[i]]=true;}}},keys:function(o,ordered){var a=[],i;for(i in o){if(lang.hasOwnProperty(o,i)){a.push(i);}}return a;}},ArrayUtil:{appendArray:function(a1,a2){Array.prototype.push.apply(a1,a2);},indexOf:function(a,val){for(var i=0;i<a.length;i=i+1){if(a[i]===val){return i;}}return -1;},toObject:function(a){var o={};for(var i=0;i<a.length;i=i+1){o[a[i]]=true;}return o;},uniq:function(a){return YUI.ObjectUtil.keys(YUI.ArrayUtil.toObject(a));}}};YAHOO.util.YUILoader=function(o){this._internalCallback=null;this._useYahooListener=false;this.onSuccess=null;this.onFailure=Y.log;this.onProgress=null;this.onTimeout=null;this.scope=this;this.data=null;this.insertBefore=null;this.charset=null;this.varName=null;this.base=YUI.info.base;this.comboBase=YUI.info.comboBase;this.combine=false;this.root=YUI.info.root;this.timeout=0;this.ignore=null;this.force=null;this.allowRollup=true;this.filter=null;this.required={};this.moduleInfo=lang.merge(YUI.info.moduleInfo);this.rollups=null;this.loadOptional=false;this.sorted=[];this.loaded={};this.dirty=true;this.inserted={};var self=this;env.listeners.push(function(m){if(self._useYahooListener){self.loadNext(m.name);}});this.skin=lang.merge(YUI.info.skin);this._config(o);};Y.util.YUILoader.prototype={FILTERS:{RAW:{"searchExp":"-min\\.js","replaceStr":".js"},DEBUG:{"searchExp":"-min\\.js","replaceStr":"-debug.js"}},SKIN_PREFIX:"skin-",_config:function(o){if(o){for(var i in o){if(lang.hasOwnProperty(o,i)){if(i=="require"){this.require(o[i]);}else{this[i]=o[i];}}}}var f=this.filter;if(lang.isString(f)){f=f.toUpperCase();if(f==="DEBUG"){this.require("logger");}if(!Y.widget.LogWriter){Y.widget.LogWriter=function(){return Y;};}this.filter=this.FILTERS[f];}},addModule:function(o){if(!o||!o.name||!o.type||(!o.path&&!o.fullpath)){return false;}o.ext=("ext" in o)?o.ext:true;o.requires=o.requires||[];this.moduleInfo[o.name]=o;this.dirty=true;return true;},require:function(what){var a=(typeof what==="string")?arguments:what;this.dirty=true;YUI.ObjectUtil.appendArray(this.required,a);},_addSkin:function(skin,mod){var name=this.formatSkin(skin),info=this.moduleInfo,sinf=this.skin,ext=info[mod]&&info[mod].ext;if(!info[name]){this.addModule({"name":name,"type":"css","path":sinf.base+skin+"/"+sinf.path,"after":sinf.after,"rollup":sinf.rollup,"ext":ext});}if(mod){name=this.formatSkin(skin,mod);if(!info[name]){var mdef=info[mod],pkg=mdef.pkg||mod;this.addModule({"name":name,"type":"css","after":sinf.after,"path":pkg+"/"+sinf.base+skin+"/"+mod+".css","ext":ext});}}return name;},getRequires:function(mod){if(!mod){return[];}if(!this.dirty&&mod.expanded){return mod.expanded;}mod.requires=mod.requires||[];var i,d=[],r=mod.requires,o=mod.optional,info=this.moduleInfo,m;for(i=0;i<r.length;i=i+1){d.push(r[i]);m=info[r[i]];YUI.ArrayUtil.appendArray(d,this.getRequires(m));}if(o&&this.loadOptional){for(i=0;i<o.length;i=i+1){d.push(o[i]);YUI.ArrayUtil.appendArray(d,this.getRequires(info[o[i]]));}}mod.expanded=YUI.ArrayUtil.uniq(d);return mod.expanded;},getProvides:function(name,notMe){var addMe=!(notMe),ckey=(addMe)?PROV:SUPER,m=this.moduleInfo[name],o={};if(!m){return o;}if(m[ckey]){return m[ckey];}var s=m.supersedes,done={},me=this;var add=function(mm){if(!done[mm]){done[mm]=true;lang.augmentObject(o,me.getProvides(mm));}};if(s){for(var i=0;i<s.length;i=i+1){add(s[i]);}}m[SUPER]=o;m[PROV]=lang.merge(o);m[PROV][name]=true;return m[ckey];},calculate:function(o){if(o||this.dirty){this._config(o);this._setup();this._explode();if(this.allowRollup){this._rollup();}this._reduce();this._sort();this.dirty=false;}},_setup:function(){var info=this.moduleInfo,name,i,j;for(name in info){if(lang.hasOwnProperty(info,name)){var m=info[name];if(m&&m.skinnable){var o=this.skin.overrides,smod;if(o&&o[name]){for(i=0;i<o[name].length;i=i+1){smod=this._addSkin(o[name][i],name);}}else{smod=this._addSkin(this.skin.defaultSkin,name);}m.requires.push(smod);}}}var l=lang.merge(this.inserted);if(!this._sandbox){l=lang.merge(l,env.modules);}if(this.ignore){YUI.ObjectUtil.appendArray(l,this.ignore);}if(this.force){for(i=0;i<this.force.length;i=i+1){if(this.force[i] in l){delete l[this.force[i]];}}}for(j in l){if(lang.hasOwnProperty(l,j)){lang.augmentObject(l,this.getProvides(j));}}this.loaded=l;},_explode:function(){var r=this.required,i,mod;for(i in r){if(lang.hasOwnProperty(r,i)){mod=this.moduleInfo[i];if(mod){var req=this.getRequires(mod);if(req){YUI.ObjectUtil.appendArray(r,req);}}}}},_skin:function(){},formatSkin:function(skin,mod){var s=this.SKIN_PREFIX+skin;if(mod){s=s+"-"+mod;}return s;},parseSkin:function(mod){if(mod.indexOf(this.SKIN_PREFIX)===0){var a=mod.split("-");return{skin:a[1],module:a[2]};}return null;},_rollup:function(){var i,j,m,s,rollups={},r=this.required,roll,info=this.moduleInfo;if(this.dirty||!this.rollups){for(i in info){if(lang.hasOwnProperty(info,i)){m=info[i];if(m&&m.rollup){rollups[i]=m;}}}this.rollups=rollups;}for(;;){var rolled=false;for(i in rollups){if(!r[i]&&!this.loaded[i]){m=info[i];s=m.supersedes;roll=false;if(!m.rollup){continue;}var skin=(m.ext)?false:this.parseSkin(i),c=0;if(skin){for(j in r){if(lang.hasOwnProperty(r,j)){if(i!==j&&this.parseSkin(j)){c++;roll=(c>=m.rollup);if(roll){break;}}}}}else{for(j=0;j<s.length;j=j+1){if(this.loaded[s[j]]&&(!YUI.dupsAllowed[s[j]])){roll=false;break;}else{if(r[s[j]]){c++;roll=(c>=m.rollup);if(roll){break;}}}}}if(roll){r[i]=true;rolled=true;this.getRequires(m);}}}if(!rolled){break;}}},_reduce:function(){var i,j,s,m,r=this.required;for(i in r){if(i in this.loaded){delete r[i];}else{var skinDef=this.parseSkin(i);if(skinDef){if(!skinDef.module){var skin_pre=this.SKIN_PREFIX+skinDef.skin;for(j in r){if(lang.hasOwnProperty(r,j)){m=this.moduleInfo[j];var ext=m&&m.ext;if(!ext&&j!==i&&j.indexOf(skin_pre)>-1){delete r[j];}}}}}else{m=this.moduleInfo[i];s=m&&m.supersedes;if(s){for(j=0;j<s.length;j=j+1){if(s[j] in r){delete r[s[j]];}}}}}}},_onFailure:function(msg){YAHOO.log("Failure","info","loader");var f=this.onFailure;if(f){f.call(this.scope,{msg:"failure: "+msg,data:this.data,success:false});
}},_onTimeout:function(){YAHOO.log("Timeout","info","loader");var f=this.onTimeout;if(f){f.call(this.scope,{msg:"timeout",data:this.data,success:false});}},_sort:function(){var s=[],info=this.moduleInfo,loaded=this.loaded,checkOptional=!this.loadOptional,me=this;var requires=function(aa,bb){var mm=info[aa];if(loaded[bb]||!mm){return false;}var ii,rr=mm.expanded,after=mm.after,other=info[bb],optional=mm.optional;if(rr&&YUI.ArrayUtil.indexOf(rr,bb)>-1){return true;}if(after&&YUI.ArrayUtil.indexOf(after,bb)>-1){return true;}if(checkOptional&&optional&&YUI.ArrayUtil.indexOf(optional,bb)>-1){return true;}var ss=info[bb]&&info[bb].supersedes;if(ss){for(ii=0;ii<ss.length;ii=ii+1){if(requires(aa,ss[ii])){return true;}}}if(mm.ext&&mm.type=="css"&&!other.ext&&other.type=="css"){return true;}return false;};for(var i in this.required){if(lang.hasOwnProperty(this.required,i)){s.push(i);}}var p=0;for(;;){var l=s.length,a,b,j,k,moved=false;for(j=p;j<l;j=j+1){a=s[j];for(k=j+1;k<l;k=k+1){if(requires(a,s[k])){b=s.splice(k,1);s.splice(j,0,b[0]);moved=true;break;}}if(moved){break;}else{p=p+1;}}if(!moved){break;}}this.sorted=s;},toString:function(){var o={type:"YUILoader",base:this.base,filter:this.filter,required:this.required,loaded:this.loaded,inserted:this.inserted};lang.dump(o,1);},_combine:function(){this._combining=[];var self=this,s=this.sorted,len=s.length,js=this.comboBase,css=this.comboBase,target,startLen=js.length,i,m,type=this.loadType;YAHOO.log("type "+type);for(i=0;i<len;i=i+1){m=this.moduleInfo[s[i]];if(m&&!m.ext&&(!type||type===m.type)){target=this.root+m.path;target+="&";if(m.type=="js"){js+=target;}else{css+=target;}this._combining.push(s[i]);}}if(this._combining.length){YAHOO.log("Attempting to combine: "+this._combining,"info","loader");var callback=function(o){var c=this._combining,len=c.length,i,m;for(i=0;i<len;i=i+1){this.inserted[c[i]]=true;}this.loadNext(o.data);},loadScript=function(){if(js.length>startLen){YAHOO.util.Get.script(self._filter(js),{data:self._loading,onSuccess:callback,onFailure:self._onFailure,onTimeout:self._onTimeout,insertBefore:self.insertBefore,charset:self.charset,timeout:self.timeout,scope:self});}};if(css.length>startLen){YAHOO.util.Get.css(this._filter(css),{data:this._loading,onSuccess:loadScript,onFailure:this._onFailure,onTimeout:this._onTimeout,insertBefore:this.insertBefore,charset:this.charset,timeout:this.timeout,scope:self});}else{loadScript();}return;}else{this.loadNext(this._loading);}},insert:function(o,type){this.calculate(o);this._loading=true;this.loadType=type;if(this.combine){return this._combine();}if(!type){var self=this;this._internalCallback=function(){self._internalCallback=null;self.insert(null,"js");};this.insert(null,"css");return;}this.loadNext();},sandbox:function(o,type){this._config(o);if(!this.onSuccess){throw new Error("You must supply an onSuccess handler for your sandbox");}this._sandbox=true;var self=this;if(!type||type!=="js"){this._internalCallback=function(){self._internalCallback=null;self.sandbox(null,"js");};this.insert(null,"css");return;}if(!util.Connect){var ld=new YAHOO.util.YUILoader();ld.insert({base:this.base,filter:this.filter,require:"connection",insertBefore:this.insertBefore,charset:this.charset,onSuccess:function(){this.sandbox(null,"js");},scope:this},"js");return;}this._scriptText=[];this._loadCount=0;this._stopCount=this.sorted.length;this._xhr=[];this.calculate();var s=this.sorted,l=s.length,i,m,url;for(i=0;i<l;i=i+1){m=this.moduleInfo[s[i]];if(!m){this._onFailure("undefined module "+m);for(var j=0;j<this._xhr.length;j=j+1){this._xhr[j].abort();}return;}if(m.type!=="js"){this._loadCount++;continue;}url=m.fullpath;url=(url)?this._filter(url):this._url(m.path);var xhrData={success:function(o){var idx=o.argument[0],name=o.argument[2];this._scriptText[idx]=o.responseText;if(this.onProgress){this.onProgress.call(this.scope,{name:name,scriptText:o.responseText,xhrResponse:o,data:this.data});}this._loadCount++;if(this._loadCount>=this._stopCount){var v=this.varName||"YAHOO";var t="(function() {\n";var b="\nreturn "+v+";\n})();";var ref=eval(t+this._scriptText.join("\n")+b);this._pushEvents(ref);if(ref){this.onSuccess.call(this.scope,{reference:ref,data:this.data});}else{this._onFailure.call(this.varName+" reference failure");}}},failure:function(o){this.onFailure.call(this.scope,{msg:"XHR failure",xhrResponse:o,data:this.data});},scope:this,argument:[i,url,s[i]]};this._xhr.push(util.Connect.asyncRequest("GET",url,xhrData));}},loadNext:function(mname){if(!this._loading){return;}if(mname){if(mname!==this._loading){return;}this.inserted[mname]=true;if(this.onProgress){this.onProgress.call(this.scope,{name:mname,data:this.data});}}var s=this.sorted,len=s.length,i,m;for(i=0;i<len;i=i+1){if(s[i] in this.inserted){continue;}if(s[i]===this._loading){return;}m=this.moduleInfo[s[i]];if(!m){this.onFailure.call(this.scope,{msg:"undefined module "+m,data:this.data});return;}if(!this.loadType||this.loadType===m.type){this._loading=s[i];var fn=(m.type==="css")?util.Get.css:util.Get.script,url=m.fullpath,self=this,c=function(o){self.loadNext(o.data);};url=(url)?this._filter(url):this._url(m.path);if(env.ua.webkit&&env.ua.webkit<420&&m.type==="js"&&!m.varName){c=null;this._useYahooListener=true;}fn(url,{data:s[i],onSuccess:c,onFailure:this._onFailure,onTimeout:this._onTimeout,insertBefore:this.insertBefore,charset:this.charset,timeout:this.timeout,varName:m.varName,scope:self});return;}}this._loading=null;if(this._internalCallback){var f=this._internalCallback;this._internalCallback=null;f.call(this);}else{if(this.onSuccess){this._pushEvents();this.onSuccess.call(this.scope,{data:this.data});}}},_pushEvents:function(ref){var r=ref||YAHOO;if(r.util&&r.util.Event){r.util.Event._load();}},_filter:function(str){var f=this.filter;return(f)?str.replace(new RegExp(f.searchExp,"g"),f.replaceStr):str;},_url:function(path){return this._filter((this.base||"")+path);}};})();YAHOO.register("yuiloader",YAHOO.util.YUILoader,{version:"2.8.0r4",build:"2449"});
(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},DOT_ATTRIBUTES:{},get:function(z){var AB,x,AA,y,Y,G;if(z){if(z[l]||z.item){return z;}if(typeof z==="string"){AB=z;z=K.getElementById(z);G=(z)?z.attributes:null;if(z&&G&&G.id&&G.id.value===AB){return z;}else{if(z&&K.all){z=null;x=K.all[AB];for(y=0,Y=x.length;y<Y;++y){if(x[y].id===AB){return x[y];}}}}return z;}if(YAHOO.util.Element&&z instanceof YAHOO.util.Element){z=z.get("element");}if("length" in z){AA=[];for(y=0,Y=z.length;y<Y;++y){AA[AA.length]=E.Dom.get(z[y]);}return AA;}return z;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC===c)){G=S(AF[v],q);x=S(AF[v],R);if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom._getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom._getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom._getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;
y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom._getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e]&&y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){E.Dom.batch(Y,E.Dom._setAttribute,{attr:G,val:x});},_setAttribute:function(x,Y){var G=E.Dom._toCamel(Y.attr),y=Y.val;if(x&&x.setAttribute){if(E.Dom.DOT_ATTRIBUTES[G]){x[G]=y;}else{G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;x.setAttribute(G,y);}}else{}},getAttribute:function(Y,G){return E.Dom.batch(Y,E.Dom._getAttribute,G);},_getAttribute:function(Y,G){var x;G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;if(Y&&Y.getAttribute){x=Y.getAttribute(G,2);}else{}return x;},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}if(m.ie&&m.ie>=8&&K.documentElement.hasAttribute){E.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;
this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.8.0r4",build:"2449"});YAHOO.util.CustomEvent=function(D,C,B,A,E){this.type=D;this.scope=C||window;this.silent=B;this.fireOnce=E;this.fired=false;this.firedWith=null;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var F="_YUICEOnSubscribe";if(D!==F){this.subscribeEvent=new YAHOO.util.CustomEvent(F,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,D){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,D);}var A=new YAHOO.util.Subscriber(B,C,D);if(this.fireOnce&&this.fired){this.notify(A,this.firedWith);}else{this.subscribers.push(A);}},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var H=[],A=this.subscribers.length;var D=[].slice.call(arguments,0),C=true,F,B=false;if(this.fireOnce){if(this.fired){return true;}else{this.firedWith=D;}}this.fired=true;if(!A&&this.silent){return true;}if(!this.silent){}var E=this.subscribers.slice();for(F=0;F<A;++F){var G=E[F];if(!G){B=true;}else{C=this.notify(G,D);if(false===C){if(!this.silent){}break;}}}return(C!==false);},notify:function(F,C){var B,H=null,E=F.getScope(this.scope),A=YAHOO.util.Event.throwErrors;if(!this.silent){}if(this.signature==YAHOO.util.CustomEvent.FLAT){if(C.length>0){H=C[0];}try{B=F.fn.call(E,H,F.obj);}catch(G){this.lastError=G;if(A){throw G;}}}else{try{B=F.fn.call(E,this.type,C,F.obj);}catch(D){this.lastError=D;if(A){throw D;}}}return B;},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var G=false,H=[],J=[],A=0,E=[],B=0,C={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},D=YAHOO.env.ua.ie,F="focusin",I="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:D,_interval:null,_dri:null,_specialTypes:{focusin:(D?"focusin":"focus"),focusout:(D?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(Q,M,O,P,N){var K=(YAHOO.lang.isString(Q))?[Q]:Q;for(var L=0;L<K.length;L=L+1){E.push({id:K[L],fn:M,obj:O,overrideContext:P,checkReady:N});}A=this.POLL_RETRYS;this.startInterval();},onContentReady:function(N,K,L,M){this.onAvailable(N,K,L,M,true);},onDOMReady:function(){this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent,arguments);},_addListener:function(M,K,V,P,T,Y){if(!V||!V.call){return false;}if(this._isValidCollection(M)){var W=true;for(var Q=0,S=M.length;Q<S;++Q){W=this.on(M[Q],K,V,P,T)&&W;}return W;}else{if(YAHOO.lang.isString(M)){var O=this.getEl(M);if(O){M=O;}else{this.onAvailable(M,function(){YAHOO.util.Event._addListener(M,K,V,P,T,Y);});return true;}}}if(!M){return false;}if("unload"==K&&P!==this){J[J.length]=[M,K,V,P,T];return true;}var L=M;if(T){if(T===true){L=P;}else{L=T;}}var N=function(Z){return V.call(L,YAHOO.util.Event.getEvent(Z,M),P);};var X=[M,K,V,N,L,P,T,Y];var R=H.length;H[R]=X;try{this._simpleAdd(M,K,N,Y);}catch(U){this.lastError=U;this.removeListener(M,K,V);return false;}return true;},_getType:function(K){return this._specialTypes[K]||K;},addListener:function(M,P,L,N,O){var K=((P==F||P==I)&&!YAHOO.env.ua.ie)?true:false;return this._addListener(M,this._getType(P),L,N,O,K);},addFocusListener:function(L,K,M,N){return this.on(L,F,K,M,N);},removeFocusListener:function(L,K){return this.removeListener(L,F,K);},addBlurListener:function(L,K,M,N){return this.on(L,I,K,M,N);},removeBlurListener:function(L,K){return this.removeListener(L,I,K);},removeListener:function(L,K,R){var M,P,U;K=this._getType(K);if(typeof L=="string"){L=this.getEl(L);}else{if(this._isValidCollection(L)){var S=true;for(M=L.length-1;M>-1;M--){S=(this.removeListener(L[M],K,R)&&S);}return S;}}if(!R||!R.call){return this.purgeElement(L,false,K);}if("unload"==K){for(M=J.length-1;M>-1;M--){U=J[M];if(U&&U[0]==L&&U[1]==K&&U[2]==R){J.splice(M,1);return true;}}return false;}var N=null;var O=arguments[3];if("undefined"===typeof O){O=this._getCacheIndex(H,L,K,R);}if(O>=0){N=H[O];}if(!L||!N){return false;}var T=N[this.CAPTURE]===true?true:false;try{this._simpleRemove(L,K,N[this.WFN],T);}catch(Q){this.lastError=Q;return false;}delete H[O][this.WFN];delete H[O][this.FN];H.splice(O,1);return true;},getTarget:function(M,L){var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(L){try{if(L&&3==L.nodeType){return L.parentNode;}}catch(K){}return L;},getPageX:function(L){var K=L.pageX;if(!K&&0!==K){K=L.clientX||0;if(this.isIE){K+=this._getScrollLeft();}}return K;},getPageY:function(K){var L=K.pageY;if(!L&&0!==L){L=K.clientY||0;if(this.isIE){L+=this._getScrollTop();}}return L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;
}else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in C)){K=C[K];}return K;},_getCacheIndex:function(M,P,Q,O){for(var N=0,L=M.length;N<L;N=N+1){var K=M[N];if(K&&K[this.FN]==O&&K[this.EL]==P&&K[this.TYPE]==Q){return N;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+B;++B;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",YAHOO,0,0,1),_load:function(L){if(!G){G=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(E.length===0){A=0;if(this._interval){this._interval.cancel();this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var Q=!G;if(!Q){Q=(A>0&&E.length>0);}var P=[];var R=function(T,U){var S=T;if(U.overrideContext){if(U.overrideContext===true){S=U.obj;}else{S=U.overrideContext;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=E.length;L<K;L=L+1){O=E[L];if(O){N=this.getEl(O.id);if(N){if(O.checkReady){if(G||N.nextSibling||!Q){M.push(O);E[L]=null;}}else{R(N,O);E[L]=null;}}else{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1){O=M[L];R(this.getEl(O.id),O);}A--;if(Q){for(L=E.length-1;L>-1;L--){O=E[L];if(!O||!O.id){E.splice(L,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=Q.length-1;N>-1;N--){var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[H,J];}else{if(K==="unload"){L=[J];}else{K=this._getType(K);L=[H];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(R){var L=YAHOO.util.Event,O,N,M,Q,P,S=J.slice(),K;for(O=0,Q=J.length;O<Q;++O){M=S[O];if(M){K=window;if(M[L.ADJ_SCOPE]){if(M[L.ADJ_SCOPE]===true){K=M[L.UNLOAD_OBJ];}else{K=M[L.ADJ_SCOPE];}}M[L.FN].call(K,L.getEvent(R,M[L.EL]),M[L.UNLOAD_OBJ]);S[O]=null;}}M=null;K=null;J=null;if(H){for(N=H.length-1;N>-1;N--){M=H[N];if(M){L.removeListener(M[L.EL],M[L.TYPE],M[L.FN],N);}}M=null;}L._simpleRemove(window,"unload",L._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
if(EU.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;EU._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);
},createEvent:function(B,G){this.__yui_events=this.__yui_events||{};var E=G||{},D=this.__yui_events,F;if(D[B]){}else{F=new YAHOO.util.CustomEvent(B,E.scope||this,E.silent,YAHOO.util.CustomEvent.FLAT,E.fireOnce);D[B]=F;if(E.onSubscribeCallback){F.subscribeEvent.subscribe(E.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var A=this.__yui_subscribers[B];if(A){for(var C=0;C<A.length;++C){F.subscribe(A[C].fn,A[C].obj,A[C].overrideContext);}}}return D[B];},fireEvent:function(B){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[B];if(!D){return null;}var A=[];for(var C=1;C<arguments.length;++C){A.push(arguments[C]);}return D.fire.apply(D,A);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.8.0r4",build:"2449"});YAHOO.register("yuiloader-dom-event", YAHOO, {version: "2.8.0r4", build: "2449"});

var r;
YAHOO.util.YUILoader.prototype._combine = function() {
	this._combining = []; 
	
	var self = this,
	s=this.sorted,
	len = s.length,
	js = this.comboBase,
	css = this.comboBase,
	target, 
	startLen = js.length,
	i, m, type = this.loadType;
	
	YAHOO.log('type ' + type);
	
	for (i=0; i<len; i=i+1) {
		m = this.moduleInfo[s[i]];
	
		if (m && !m.ext && (!type || type === m.type)) {
	
			target = this.root + m.path;
	
			// if (i < len-1) {
			target += ',';
			// }
	
			if (m.type == 'js') {
	    		js += target;
			} else {
	    		css += target;
			}
	
			// YAHOO.log(target);
			this._combining.push(s[i]);
		}
	}
	
	if (this._combining.length) {
	
		YAHOO.log('Attempting to combine: ' + this._combining, "info", "loader");
	
		var callback=function(o) {
			// YAHOO.log('Combo complete: ' + o.data, "info", "loader");
			// this._combineComplete = true;
		
			var c=this._combining, len=c.length, i, m;
			for (i=0; i<len; i=i+1) {
			    this.inserted[c[i]] = true;
			}
		
			this.loadNext(o.data);
		}, 
	
		loadScript = function() {
			// YAHOO.log('combining js: ' + js);
			if (js.length > startLen) {
			    YAHOO.util.Get.script(self._filter(js), {
			        data: self._loading,
			        onSuccess: callback,
			        onFailure: self._onFailure,
			        onTimeout: self._onTimeout,
			        insertBefore: self.insertBefore,
			        charset: self.charset,
			        timeout: self.timeout,
			        scope: self 
			    });
			}
		};
	
		// load the css first
		// YAHOO.log('combining css: ' + css);
		if (css.length > startLen) {
			YAHOO.util.Get.css(this._filter(css), {
			    data: this._loading,
			    onSuccess: loadScript,
			    onFailure: this._onFailure,
			    onTimeout: this._onTimeout,
			    insertBefore: this.insertBefore,
			    charset: this.charset,
			    timeout: this.timeout,
			    scope: self 
			});
		} else {
			loadScript();
		}
	
		return;
	
	} else {
		// this._combineComplete = true;
		this.loadNext(this._loading);
	}
}
		

var yahoodefaultSuccessHandler = function() {
	
	YAHOO.namespace("globals","waiting"); //for global vars
	
	//move_style();
	
	YAHOO.waiting = new YAHOO.widget.Panel("wait",{ 
			width:"100px",
			fixedcenter:true, 
			close:false, 
			draggable:false,
			zindex:99,
			visible:false,
			modal:true
		} 
	);
	

	with(YAHOO.waiting){
		setHeader("");
		setBody('<img src="'+NA.theme_url+'/night/pix/ajax-loader.gif" />');
		render(document.body);
	}
	
	
	if(na_option_get && na_option_get('region')==false){
		loadYahoo(function(){initMenu("region");});
	}
		
    NA.yahoodefaultonsuccess();
	
	var a = document.getElementsByTagName("a");
	for(var y=0; y < a.length; y++){
		if(!a[y].getAttribute("onfocus")) a[y].setAttribute("onfocus",'this.blur()');
	}
	
	r = new Reloader();
	r.init();
	
	buildBreadcrumbNavi();

}
	
var yahoodefaultFailureHandler = function(f){
	throw new Error("YAHOO loader failed. please investigate:\n"+f);
}
var yahoodefaultProgressHandler = function(f){
	//f.name => module name
	//this => yahoo loader
}

var DefaultLoader = new YAHOO.util.YUILoader({
	 
	combine: true,
	comboBase: NA.theme_url+'/lib/yahoo/build/index.php/',
	root: '',
	base: NA.theme_url+'/lib/yahoo/build/',
	
	//allowRollup : false, //not needed with combine

    require: ["json","connection","element","container","autocomplete","button","animation"], //"dragdrop","element","animation" required for dialogs
    
	//filter: { 
	//	'searchExp': "-min.js", 
	//	'replaceStr': ".js"
	//},		

    loadOptional: false,
	  	
    onSuccess: yahoodefaultSuccessHandler,
    onProgress: yahoodefaultProgressHandler,
    onFailure: yahoodefaultFailureHandler
});

DefaultLoader.insert(extramods(NA.yahoodefaultload));


var loader = new YAHOO.util.YUILoader({

	base: NA.theme_url+'/lib/yahoo/build/',
	combine: true,
	comboBase: NA.theme_url+'/lib/yahoo/build/?',
	root: '',

    //require: ["dragdrop","element","animation"],
    require: ['animation'],

    loadOptional: true,
	  	
    onSuccess: function() {

		//move_style();
		YAHOO.waiting.hide();
		
		YAHOO.namespace("nadialog","globals.dialog");
		
		var effect = (YAHOO.env.ua.ie) ? false : {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.45};
		 
		YAHOO.nadialog = new YAHOO.widget.Dialog("dialog",{  
			    effect: effect,  
			    fixedcenter:true,
				width: '500px', 
			    modal:true, 
			    visible:false,
			    hideaftersubmit: false,
			    buttons: [],
			    zIndex: 99,
			    name: "",
			    ctype: false,
			    cid: false
			     });
			     
		with(YAHOO.nadialog){ 
			setHeader("");  
			setBody("");  
			setFooter("");  
			render();  
			callback.success = dialog_onSuccess;
			callback.failure = dialog_onFailure;
		}
			
        NA.yahooloadonsuccess();
        if (typeof first_success == "function")
        	first_success();
    }
});
	
function move_style(){
	return; //aparently not needed anymore
	var n = YAHOO.util.Dom.get('mainstyle');
	var s = YAHOO.util.Dom.get('onlinestyle');
	if (YAHOO.env.ua.ie && YAHOO.env.ua.ie < 8) {
		Stylesheet = document.createStyleSheet(n.getAttribute("href"));
		var iestyle = YAHOO.util.Dom.get('mainstyle_ie');
		Stylesheet = document.createStyleSheet(iestyle.getAttribute("href"));
		if (s) 
			Stylesheet = document.createStyleSheet(s.getAttribute("href"));
	}else if(YAHOO.env.ua.opera){
		document.styleSheets = n;
		if(s)
			document.styleSheets = s;		
	}else{
		n.parentNode.appendChild(n);
		if(s)
			s.parentNode.appendChild(s);
	}
}

var first_success = null; 
function loadYahoo(x){
	if (first_success){
		if(typeof x == "function")
			return x();
		else
			return false;
	}else{
		if(!YAHOO.waiting) return false;
 		first_success = x;
 		YAHOO.waiting.show();
		loader.insert(extramods(NA.yahooload));
	}
}

function extramods(obj){
	var mods ={require:[]};
	for(var x=0;x<obj.length;x++){
		if(NA.yahoodefaultload[x]!=""){
			mods.require.push(NA.yahoodefaultload[x]);
		}	
	}
	return mods;
}

/* vim:ts=4:sw=4
/**
 * structure of fdef (field definition):
 *
 * // basics
 * 	- string fid [req]: form id <formname>_<fieldname>
 *	- bool multiple [req]: 1 if field is an array, 0 otherwise
 *	- string typ [req]: possible values
 *		- simple: input or textarea, the htmlel is the input or textarea html object 
 *		- select: dropdown
 *		- radio: 
 * 
 * // html 
 *	- string hid [req]: html css id, see typ for description 
 *	+ HTML htmlel [-]:
 *
 * // options
 *  - object validation [optional]
 *		- regexp re [optional] validation rule (when typing or leaving)
 *		- regexp retype [optional] validation rule after each keypress when user is still editing the field
 *		- string retypemsg [optional] message to show when retype-validation failed
 *		- regexp redone [optional] validation rule when user leaves the form
 *		- string redonemsg [optional] message to show when redone-validation failed
 *	- object autocomplete [optional]
 *		- array recorddef [optional] array with [json key where data is found, field key for autocomplete, additional field key, ...]
 *		- function render_dropdown [optional] function to render html code shown in dropdown list
 *		- function render_selected [optional] function to render html code shown in selected values list
 *	- object autoresize [optional]
 *		- int min minimum height of textarea
 *		- int max maximum height of textarea
 *		+ HTML div where text is copies to for size calculations
 */
var Form = function (form_name, form_def, field_def){
	this.fields;
	this.hasButtons = false;
	this.hasUpload = false;
	this.submitDisabled = false;
	
	this.name = form_name;
	this.def = form_def;
	this.field_def = field_def;
	
	this.waitingTimer = null;
	
	for(var i in field_def){
		if(skipFunk(field_def[i])) continue;
		if(field_def[i].style == 'button'){
			this.hasButtons = true;
		}
		if(field_def[i].typ == 'file'){
			this.hasUpload = true;
		}
		if(this.hasButtons && this.hasUpload)
			break;
	}
	
	var _frm = document.getElementById('frm_'+this.name);
	
	if (this.hasUpload) {
		_frm.setAttribute("enctype","multipart/form-data");
	}
	
	YAHOO.util.Event.addListener(_frm, "submit", this.form_onsubmit,this,true);
}


Form.prototype.init = function () {
	if((!this.hasButtons || (YAHOO && YAHOO.widget && YAHOO.widget.Button)) && //wait for buttons 
		(YAHOO && YAHOO.util && YAHOO.util.Connect) //and connect if neccessary
	){
		for (var fid in this.field_def) {
			if(skipFunk(this.field_def[fid])) continue;
			this.field_init(fid);	
		}		
	}else{
		//if we need buttons and buttons not already loaded we have to wait a bit and try again.
		window.setTimeout(this.init.bind(this),50);
	}
}


Form.prototype.field_init = function (fid) {
	
	var F = this.field_def[fid];
	if(F.re)
		this.field_def[fid]._reobj = new RegExp('^' + F.re + '$');
	if(F.__null)
		this.field_def[fid]._nullobj = new RegExp('^' + F.__null + '$');
	
	switch (F.typ) {
		case 'text':
			F.valueElm = this.build_text(fid);
		break;
		
		case 'mselect':
		case 'select':
			F.valueElm = this.build_select(fid)	
		break;
							
		case 'date':
			F.valueElm = this.build_date(fid);
		break;
			
		case 'file':
			F.valueElm = this.build_file(fid);			
		break;
			
		default:
			F.valueElm = this.build_general(fid);
		break;
	}
		
	this.field_value_set(fid, F.ovalue);
	

	if (F.typ != 'hidden' && F.typ != 'submit') {
		YAHOO.util.Event.addListener(F.valueElm, 'keyup', this.field_keyup,{fid:fid,self:this});
		YAHOO.util.Event.addListener(F.valueElm, 'blur', this.field_blur,{fid:fid,self:this});
		if(this.def.autosubmit && (F.typ != 'select' && F.typ != 'mselect')) 
			YAHOO.util.Event.addListener(F.valueElm, 'blur', this.form_onsubmit,this,true);
		if (F.focusselect) 
			YAHOO.util.Event.addListener(F.valueElm, 'focus', this.field_focusSelect, {
				fid: fid,
				self: this
			});
		if (F.focusclear) 
			YAHOO.util.Event.addListener(F.valueElm, 'focus', this.field_focusClear, {
				fid: fid,
				self: this
			});
	}
	
}

Form.prototype.build_text = function(fid){
	
	var contel = this.getElm(fid),
		fr = document.createElement("div"),
		topl = document.createElement("div"),
		bottomr = document.createElement("div"),
		bottoml = document.createElement("div"),
		topr = document.createElement("div"),
		fldel = document.createElement("textarea"),
		hiddendiv = document.createElement('div');
			
	// div-frame
	fr.className = " feltextarea_fr";
	topl.className = "topl";
	bottomr.className = "bottomr";
	bottoml.className = "bottoml";
	topr.className = "topr";
	
	fr.appendChild(topl);		
	topl.appendChild(bottomr);
	bottomr.appendChild(bottoml);
	bottomr.appendChild(topr);
	fr.appendChild(topl);
	
	contel.appendChild(fr);
	
	// textarea
    fldel.name = name;
	bottomr.appendChild(fldel);
	
	//add events
    YAHOO.util.Event.addListener(fldel, 'keyup', this.textareaSync,{fid:fid,self:this});
    	   

	// autoresize
	with (hiddendiv.style) {
		visibility = 'hidden';
		position = 'absolute';
		left = '-2000px';
		top = '-2000px';
		width = fldel.offsetWidth+"px";
		border = fldel.style.border;
		padding = fldel.style.padding;
		margin = fldel.style.margin;
		lineHeight = fldel.style.lineHeight;
		/*
		font = YAHOO.util.Dom.getStyle(_fldel,"font-family");
		fontSize = YAHOO.util.Dom.getStyle(_fldel,"font-size");
		fontWeight = YAHOO.util.Dom.getStyle(_fldel,"font-weight");
		fontStyle = YAHOO.util.Dom.getStyle(_fldel,"font-style");
		*/
	}
	fldel.parentNode.appendChild(hiddendiv);
	this.field_def[fid].hiddendiv = hiddendiv;
		
	return fldel;
}

Form.prototype.build_general = function(fid){

	var contel = this.getElm(fid),
		fldel = document.createElement("input"),
		fr = document.createElement("div"),
		type = this.field_def[fid].typ;
	
	fr.className = " felinput_fr"; //frame
		
	if (type == 'int') {
		this.field_def[fid]._reobj = new RegExp("^-?\d+$");
		this.field_def[fid]._re = true;
	}
	
	if(this.field_def[fid].readonly){
		fldel.readOnly = true;
	}
	
	if(type != 'hidden' && type!='submit') //append frame if needed
		contel.appendChild(fr);
	
	switch (type) {
		case "hidden":
			fldel.type = "hidden";
		break;
		case "submit":
			fldel.type = "submit";
		break;
		case "pass":
			fldel.type = "password";
		break;
		default:
			fldel.type = "text";
		break;
	}

	fldel.name = this.field_def[fid].name;
	if (this.field_def[fid].len)
		fldel.maxLength = this.field_def[fid].len;

	
	//insert into dom
	if (fr.parentNode) {
		fr.appendChild(fldel);
	} else {
		contel.appendChild(fldel);
	}
		
	return fldel;
}

Form.prototype.build_autocomplete = function(fid){
	//F._typ = (F.typ == "mselect" ? 'mdropdown' : 'dropdown');
	var contel = this.getElm(fid),
		field = this.field_def[fid],
		hiddendiv = document.createElement('div'),
		fr = document.createElement("div"),
		topl = document.createElement("div"),
		bottomr = document.createElement("div"),
		bottoml = document.createElement("div"),
		topr = document.createElement("div"),
		inner = document.createElement("div"),
		drp = document.createElement("div"),
		fix = document.createElement("span"), //ie fix element
		acinp = document.createElement("input");// input box for select value & autocomplete
	
	field.ac = false;
	
	acinp.type = 'text';
	bottomr.style.cursor = 'text';
	
	with (hiddendiv.style) {
		visibility = 'hidden';
		position = 'absolute';
		left = '-2000px';
		top = '-2000px';
	}
	
	// div-frame
	fr.className = " felinput_fr";
	topl.className = "topl";
	topr.className = "topr";
	bottoml.className = "bottoml";
	bottomr.className = "bottomr";
	inner.className = "inner";

	fix.innerHTML = "<!--ie6-->";
	drp.appendChild(fix);
	inner.appendChild(drp);
	
	fr.appendChild(topl);
	topl.appendChild(bottomr);
	bottomr.appendChild(bottoml);
	bottomr.appendChild(topr);	
	bottomr.appendChild(inner);
	bottomr.appendChild(acinp);
	
	contel.appendChild(fr);
	
	if (this.field_def[fid].typ == "mselect") {
		var cl = document.createElement("div");
		cl.style.clear = 'both';
		cl.className = 'ms_stop';
		cl.style.cssFloat = 'left';
		cl.style.styleFloat = 'left';
		contel.parentNode.parentNode.appendChild(cl);
	}
	
	var obj = {
		'fid': fid,
		'field': field,
		'acinp': acinp,
		'drp': drp,
		'self' : this
	};
	
			
	var loader = function(e,obj){
		var field = obj.field,
			acinp = obj.acinp,
			drp = obj.drp,
			self = obj.self,
			ac, acds;
		
		YAHOO.util.Event.removeListener(acinp,'focus',loader);
		YAHOO.util.Event.removeListener(acinp.parentNode,'click',loader);
		YAHOO.util.Event.preventDefault(e);
		YAHOO.util.Event.stopPropagation(e);
		
		if(!(YAHOO && 
				YAHOO.util && 
				YAHOO.util.Event &&
				YAHOO.util.XHRDataSource && 
				YAHOO.widget &&
				YAHOO.widget.DS_XHR  &&
				YAHOO.widget.AutoComplete)){
			//if not all YAHOO stuff is loaded wait a little longer
			window.setTimeout(function(){ loader(e,obj) },20);
			return false;
			
		}
		
		acds = new YAHOO.util.XHRDataSource("/popups/form.php");
		acds.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
		acds.responseSchema = {
			resultsList : "fieldlookup",
			fields : ['key','data']
		};
		acds.connMethodPost = true;
		
		
		ac = new YAHOO.widget.AutoComplete(acinp, drp, acds, {
			typeAhead: true,
			prehighlightClassName: "yui-ac-prehighlight",
			useShadow: true,
			minQueryLength: 0,
			maxResultsDisplayed: 500,
			autoHighlight: false,
			animVert: false,
			queryDelay: 0.2,
			useIFrame: true,
			queryMatchSubset: true,
			resultTypeList : false,
			
			doBeforeExpandContainer: function(oTextbox, oContainer, sQuery, aResults){
				var X = YAHOO.util.Dom.getX(oTextbox);
				var Y = YAHOO.util.Dom.getY(oTextbox);
				YAHOO.util.Dom.setX(oContainer, X - 2);
				YAHOO.util.Dom.setY(oContainer, Y + YAHOO.util.Dom.get(oTextbox).offsetHeight - 4);
				return true;
			},
			
			generateRequest: function(sQuery){
				if(sQuery == 'undefined') sQuery = '';
				return "_hq="+sQuery+"&"+self.form_build({
					'_haction': 'lookup',
					'_hfld': field.name
				});
				
			},
			
			formatResult : function(oResultData, sQuery, sResultMatch) {
				var ret,parts,sQueryRe,
					partsRe = /(<(?:(?:h4)|(?:div)) class=.ce_it_line[^>]+>)(.*?)(<\/(?:(?:h4)|(?:div))>)/g;
				
				if(typeof oResultData.data=='string'){
					ret = oResultData.data
					
					if (sQuery) { //highlighting
						ret = ret.replace(new RegExp(RegExp.escape(sQuery),'gi'),"<span class='ac_highlight'>"+sQuery+"</span>");
					}
					
				}else{
					ret = oResultData.data;
					ret = ret[1];
					
					if(sQuery){ //highlighting
	
						sQueryRe = new RegExp(RegExp.escape(sQuery),'gi');
						ret = ret.replace(/[\n\t]/g,'').replace(/\s+/g,' ');
						
						while (parts = partsRe.exec(ret)) {
							parts[2] = parts[2].replace(sQueryRe, "<span class='ac_highlight'>" + sQuery + "</span>");
							ret = ret.replace(new RegExp(RegExp.escape(parts[0])), parts[1] + parts[2] + parts[3])
						}
					}
				}
				return ret;
		    },
			_updateValue : function(elListItem) {
			    if(!this.suppressInputUpdate) {
			        var elTextbox = this._elTextbox;
			        var sDelimChar = (this.delimChar) ? (this.delimChar[0] || this.delimChar) : null;
			        var sResultMatch = elListItem._sResultMatch;
			    
			        // Calculate the new value
			        var sNewValue = "";
			        if(sDelimChar) {
			            // Preserve selections from past queries
			            sNewValue = this._sPastSelections;
			            // Add new selection plus delimiter
			            sNewValue += sResultMatch + sDelimChar;
			            if(sDelimChar != " ") {
			                sNewValue += " ";
			            }
			        }
			        else {
						sNewValue = (typeof elListItem._oResultData.data == 'object') ? elListItem._oResultData.data[0] : sResultMatch;
			        }
			        
			        // Update input field
			        elTextbox.value = sNewValue;
			    
			        // Scroll to bottom of textarea if necessary
			        if(elTextbox.type == "textarea") {
			            elTextbox.scrollTop = elTextbox.scrollHeight;
			        }
			    
			        // Move cursor to end
			        var end = elTextbox.value.length;
			        this._selectText(elTextbox,end,end);
			    
			        this._elCurListItem = elListItem;
			    }
			}
		});
		
		ac.setHeader('<span><!--ie6--></span>');
		ac.setFooter('<span><!--ie6--></span>');
				
		var selectionHandler = function(ev, arg){
			//ev = itemSelect
			//self = Form.prototype
			//this = autocomplete
			var selected = arg[2],
				disp = (typeof selected.data == 'string') ? selected.data : selected.data[0],
				current = self.field_value_get(fid);
					
			if (typeof field.selectvalues == 'object' && typeof field.selectvalues[selected.key] == 'undefined') //ie new value 
					field.selectvalues[selected.key] = disp;
					
						
			if (field.typ == "mselect") {				
				// Test if current value was selected already
				var found = (typeof current=='object' && in_array(current,selected.key));
				
				if (!found) {
					current.push([selected.key,disp]);
					self.field_value_set(fid, current);
				}
				acinp.value = "";
			}else{
				self.field_value_set(fid, selected.key);
			}
			
			self.field_validate(fid, 1);
			if (self.def.autosubmit) {
				self.form_onsubmit();
			}
			
			if (self.typ == "mselect") {
				this._elTextbox.focus();
			}
			return true;
		}
		
		var focusHandler = function(ev, arg){ //this is ac
			this._elTextbox.select();
			setTimeout(this.sendQuery.bind(this), 0);
			return true;
		}

		ac.itemSelectEvent.subscribe(selectionHandler);					
		ac.textboxFocusEvent.subscribe(focusHandler);
		obj.ac = ac;
		
		var kuh = function(e,acinp){					
			//keycode 8 = backspace
			if (e.keyCode == 8 && acinp.value.length==0 && acinp.previousSibling && acinp.previousSibling.className == 'value_selected') {
				acinp.parentNode.removeChild(acinp.previousSibling);
			}
			if(acinp.value.length==15){
				acinp.value = '';								
			}
		}
		var selectClickHandler = function(e,obj){
				var field = obj.field,
					acinp = obj.acinp,
					drp = obj.drp,
					self = obj.self,
					ac = obj.ac,
					acds;
					
				if (this._bItemSelected) {
					this._bItemSelected = false;
					acinp.blur();
					this._elTextbox.blur();
					this.textboxFocusEvent.fire();
				}
			}
		
		if (field.typ != 'mselect') {
			ac.textboxBlurEvent.subscribe(function(){self.field_value_set(fid, self.field_value_get(fid));});
		} else {		
			
			YAHOO.util.Event.addListener(acinp,'keydown',kuh,acinp);
			
			bottomr.onclick = function(){
				acinp.focus();
			};
			bottomr.style.cursor = 'text';
		}

		ac.dataRequestEvent.subscribe(function(ev, arg){self.waitingShow(500);});
		ac.dataReturnEvent.subscribe(function(ev, arg){self.waitingHide();});
		ac.textboxFocusEvent.fire();
		
	}//loader end
	
	//only initialize autocomplete and datasource if needed, because it could be alot o data
	YAHOO.util.Event.addListener(acinp,'focus',loader,obj);
	YAHOO.util.Event.addListener(acinp.parentNode,'click',loader,obj);
	
	return acinp;
	
}

Form.prototype.build_select = function(fid){
	if(!this.field_def[fid].style || this.field_def[fid].style!='button'){
		return this.build_autocomplete(fid);
	}
	
	var contel = this.getElm(fid),
		field = this.field_def[fid],
		fr = document.createElement("div"),
		validate = function(e,obj){
			var fid = obj.fid,
				self = obj.self;
			self.field_validate(fid, 1);
			if (self.def.autosubmit) {
				self.form_onsubmit();
			}
		};
		
	if (field.typ == 'select') {

		// div-frame
		fr.className = " felradio_fr";
		contel.appendChild(fr);
		
		// Radio boxes
		var radiogrp = new YAHOO.widget.ButtonGroup({
			id: "btngroup" + this.field_def[fid].name,
			name: this.field_def[fid].name,
			container: fr
		});
		radiogrp.addListener("checkedButtonChange", validate,{
			fid: fid,
			self: this
		});
		
		var i = 0;
		var radiobtns = {};
		for (var k in this.field_def[fid].selectvalues) {
			if(skipFunk(this.field_def[fid].selectvalues[k])) continue;
			radiobtns[k] = i++;
			radiogrp.addButtons([{
				label: this.field_def[fid].selectvalues[k],
				value: k
			}]);
		}
		
		return radiogrp;
		
	} else if (field.typ == 'mselect') {
		
		// div-frame
		fr.className = " felcheckbox_fr";
		contel.appendChild(fr);
						
		// Radio boxes
		var i = 0;
		var checkbtns = {};
		for (var k in this.field_def[fid].selectvalues) {
			if(skipFunk(this.field_def[fid].selectvalues[k])) continue;
			checkbtns[k] = new YAHOO.widget.Button({
				type: "checkbox",
				label: this.field_def[fid].selectvalues[k],
				id: "fel_" + fid + "_checkbox" + (i++),
				name: this.field_def[fid].name + "[]",
				value: k,
				container: fr
			});
			checkbtns[k].subscribe("click", validate,{
				fid: fid,
				self: this
			});
		}
		
		return checkbtns;
	}
}


Form.prototype.build_date = function(fid){
	//not functional
	return button_cal(F._contel.id,F.name);
	
}

Form.prototype.build_file = function(fid){
	
	var u = new UploadField(),
		elm;
	
	if (typeof this.field_def[fid].files != 'object') {
		try {
			eval("(this.field_def[fid].files = " + this.field_def[fid].files + ")");
		} 
		catch (e) {
			this.field_def[fid].files = new Array();
		}
	} 	
	u.init(fid,this.field_def[fid].files);
	elm = u.buildField(this.getElm(fid));
	u.load();
	this.field_def[fid].upl = u;
	
	return elm;
}


Form.prototype.waitingShow = function(ms) {
	if (this.waitingTimer) return;
	var a = this.waitingHide;
	var wait = function(){
		YAHOO.waiting.show();
		setTimeout(a,5000); 
		this.waitingTimer=null;
	}
	this.waitingTimer = setTimeout(wait, ms);
}

Form.prototype.waitingHide = function(ms) { 
	if (this.waitingTimer) {
		clearTimeout(this.waitingTimer);
		this.waitingTimer = null;
	}
	YAHOO.waiting.hide();
}


/**
 * validate field
 *
 * @param fid field id
 * @param state 0=typing, 1=blur, 2=submit
 * @return bool
 */
Form.prototype.field_validate = function (fid, state)
{
	var type = 'err',
		msg = false,
		f = this.field_def[fid],
		value = this.field_value_get(fid);
		
	switch(true){
		case (f.required && (value.length == 0 || value===false || (f.__null && f._nullobj.test(value)))) :
			type = 'required';
		break;
		case (f.len && value.length > f.len) :
			msg = 'Es dürfen nur '+f.len+' Zeichen eingegeben werden';
			this.field_value_set(fid,value.substr(0,f.len));
		break;
		case (f.re && !f._reobj.test(value)) :
			msg = 'Die Eingabe ist ungueltig.'+(f.syntax ? ' Bitte im Format <em>'+f.syntax+'</em> angeben' : '');
			type = (state == 0 ? 'warn' : 'err');
		break;
		case (f.valmsg && value == f.valvalue) :
			msg = f.valmsg;
		break;
		case (f.validate && state == 1) :
			type = 'ok';
			if(f.required || value)
			var req = YAHOO.util.Connect.asyncRequest('POST', "/popups/form.php", 
				{success: this.form_response_handler, failure: this.form_response_error,argument:[this]}, 
				this.form_build({'_haction':'validate','_hfld':f.name}));
		break;
		default :
			type = 'ok';
		break;
	}
	this.field_msg(fid, type, msg);
	return {'type':type,'msg':msg};
}

Form.prototype.field_value_set = function (fid, value) {
	//console.log("Field "+fid+" => "+value);
	
	var contel = this.getElm(fid),
		field = this.field_def[fid],
		inputEl,flag;
	
	if(!contel) return;
	
	switch (field.typ) {
		
		
		case 'mselect':
			if (typeof value != 'object') {
				//console.log("field_value_set("+fid+", "+value+") requires array as value for checkbox field");
				return;
			}
						
			if(field.style && field.style=='button'){//checkboxes
				
				for (var k in field.selectvalues) {
					if(skipFunk(field.selectvalues[k])) continue;
					flag = (in_array(value,k)) ? true : false;
//					field.valueElm[k]._setChecked(flag);
					field.valueElm[k].set('checked',flag);
				}

			}else{ //multi-autocomplete
				// loop through all values and create html for entries not currently visible in html
				var disp ='',index,
					children = YAHOO.util.Dom.getElementsByClassName('value_selected','div',this.getElm('fid'));
				
				for(var x=0; x<children.length;x++){
					children[x].parentNode.removeChild(children[x]);
				}
				
				for (var x=0;x<value.length;x++) {
					if (typeof value[x] == 'object') {
						index = value[x][0];
						disp = value[x][1];
					}else{
						index = value[x];
						disp = field.selectvalues[index];
						disp = (typeof disp=='object') ? disp[0] : disp;						
					}
					if(typeof disp=='undefined') continue;
					
					var c = document.createElement("div"), //container
						i = document.createElement("span"), //index
						d = document.createElement("span"), //display
						a = document.createElement("a"); //close
						
					c.className = 'value_selected';
					i.className = 'hidden';
					a.className = 'msgbox_icons_close';
										
					i.innerHTML = index;
					d.innerHTML = disp;
					a.innerHTML = "&nbsp;";
					
					c.appendChild(i);
					c.appendChild(d);
					c.appendChild(a);
					field.valueElm.parentNode.insertBefore(c,field.valueElm);
					
					var closehandler = function(e){
						this.parentNode.parentNode.removeChild(this.parentNode);
					};
					
					YAHOO.util.Event.addListener(a, 'click', closehandler);
				}
				
			}
		break;

		case 'select':		
			if(field.style && field.style=='button'){ //radiobuttons
				if (typeof field.selectvalues[value] != 'undefined') {
					var x = 0;
					for(var i in field.selectvalues){
						if(i==value) break;
						x++;
					}
					field.valueElm.check(x);
					
				}
			} else { //simple autocomplete
				if (field && typeof field.selectvalues == 'object') {
					if (typeof field.selectvalues[value] != 'undefined') {
//						field.valueElm.value = field.selectvalues[value];
						field.valueElm.value = typeof field.selectvalues[value] == 'object' ? field.selectvalues[value][0] : field.selectvalues[value];
					} else {
						field.valueElm.value = value;
						// TODO: Lookup not yet known values!!!
						/*
						var req = YAHOO.util.Connect.asyncRequest('POST', "/popups/form.php", {
									success: form_response_handler, failure: form_response_error
								}, form_build({'_haction':'lookup','_hfld':f.name,'_hlookuponly':1}));
						*/				
					}
				}
			}
		break;
							
		case 'date':
			//not available
		break;
			
		case 'file':
			// uploader handles this. should not be needed, as js has no fileaccess			
		break;
			
		case 'text':
		default:
			field.valueElm.value = value;
			if (field.typ == 'text') {
				this.textareaSync(null,{fid:fid,self:this});
			}
		break;
	}
	this.field_validate(fid,1);
}

/**
 * get the value for a field
 *
 */
Form.prototype.field_value_get = function (fid) {
	var field = this.field_def[fid],
		value = "";
	
	if(typeof field.valueElm=='undefined') //could be called during init, ie not all fields initialized
		return false;
	
	switch (field.typ) {
		//not done
		case 'mselect':
			value = [];
			
			if(field.style && field.style=='button'){
				for (var k in field.valueElm) {
				if(skipFunk(field.valueElm[k])) continue;
					if (field.valueElm[k]._configs.checked.value) 
						value.push(k);
				}
			}else{
				// loop through all values and create html for entries not currently visible in html
				var valueassoc = {},
					children = field.valueElm.parentNode.childNodes,
					newval;
				
					
				for (var i in children) {
					if (skipFunk(children[i])) continue;
					if (children[i] && children[i].className == 'value_selected' && children[i].firstChild) {
						newval = parseInt(children[i].firstChild.innerHTML);
						if(!isNaN(newval))
							value.push(newval);
					}
				}
			}
		break;

		case 'select':		
			if(field.style && field.style=='button'){
				if (field.valueElm._configs.checkedButton.value)
				value = field.valueElm._configs.checkedButton.value._configs.value.value;	
			}else{
				value = field.valueElm ? field.valueElm.value : '';
				if(field.selectvalues){
					for(var i in field.selectvalues){
						if(skipFunk(field.selectvalues[i])) continue;
						if(typeof field.selectvalues[i] == 'object' && field.selectvalues[i][0] == value){
							value = i;
							break;
						}else if(field.selectvalues[i] == value){
							value = i;
							break;
						}
					}
				}
				if(typeof value=='undefined' || value=='undefined')
					value = "";
			}
		break;
							
		case 'date':
			//not available
		break;
			
		case 'file': //hiddenfield
		case 'text':
		default:
				value = field.valueElm.value;
		break;
	}
	
	return value;
}

Form.prototype.field_validation_result = function field_validation_result(field_id, msg)
{
	with (this.field_def[field_id]) {
		valvalue = this.field_value_get(field_id);
		valmsg = msg;
	}
	this.field_msg(field_id, (msg=='' || msg==false) ? 'ok' : 'false', msg);
}

/**
 * set a field message
 *
 * @param object el field html element [CAUTION: not validated anymore]
 * @param string typ ok,required,warn,err
 * @param string msg the message to display
 */
Form.prototype.field_msg = function (fid, typ, msg) {
	var iconel = this.getElm(fid,'icon'),
		msgel = this.getElm(fid,'msg');
	
	if (typ == 'ok' || typ == 'required')
		msg = '';
	if (iconel) {
		iconel.className = iconel.className.replace(/\b\s*ficon_\w+/, '')+' ficon_'+typ;
		iconel.title = (typ == 'warn' ? msg : '');
	} 
	if (typeof msg != 'undefined' && msgel) {
		msgel.className = msgel.className.replace(/\b\s*fmsg_\w+/, '')+' fmsg_'+typ;
		msgel.innerHTML = (typ == 'warn' ? '' : msg.replace(/\n/, '<br />'));
	}
}


Form.prototype.form_onsubmit = function (e, obj) {
	e = e || false;
	obj = obj || false;
	if(e)
		YAHOO.util.Event.preventDefault(e);
	
	var force = (obj && obj.force)? obj.force : 0,
		cfield,cvalue,submit,
		msgs = '',
		curname = '';
	
	//disable submit buttons if not already done
	this.toggleSubmit('off');
		
	for(var fid in this.field_def){
		cfield = this.field_def[fid];
		if(skipFunk(cfield)) continue;
		
		//upload files if not already done (by user)
		if (this.hasUpload && cfield.typ == "file") {
			if(cfield.upl && !cfield.upl.isEmpty && !cfield.upl.isUploaded){
				if (!cfield.upl.isUploading) {
					cfield.upl.doUpload();
				}
				//restart submit as fileupload could take a while
				window.setTimeout(function(){this.form_onsubmit(false,obj)}.bind(this),500);
				return;
			}
		}
		//validate fields
		cvalue = this.field_validate(fid, 2);
		if (!cvalue || cvalue.type == 'ok')
			continue;
			
		curname = this.getFieldDescription(fid);
		
		if (cvalue.type == 'required') {
			msgs += "<dt>" + curname + "</dt><dd>Feld muss angegeben werden</dd>";
		} else if (cvalue.typ == 'err') {
			msgs += "<dt>" + curname + "</dt><dd>Fehler: " + fval.msg + "</dd>";
		}
	}
	
	// Fehlermeldungen
	if (msgs != '' && force != 1) {
		var dismiss = function(){
			this.hide();
			this.destroy();
		}
		var effect = (YAHOO.env.ua.ie || !(YAHOO.widget && YAHOO.widget.ContainerEffect)) ? false : {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.45};
		var warnDialog = new YAHOO.widget.SimpleDialog("form_submitError", { 
				width: "40em", 
				effect:effect, 
				fixedcenter:true,
				modal:true,
			    visible:false,
				draggable:false,
				constraintoviewport :false,
				icon: YAHOO.widget.SimpleDialog.ICON_WARN,
				buttons: [
					{ text:"ok", handler:dismiss, isDefault:true }
				] 
			});
		warnDialog.setHeader("Fehler in Formulareingaben");
		warnDialog.setBody("Das Formular kann erst abgeschickt werden, wenn folgende Probleme behoben sind:<br><dl>"+msgs+"</dl>");
		var kl = new YAHOO.util.KeyListener(document, { keys:[27,13] }, { 
				fn:dismiss,
				scope:warnDialog,
				correctScope:true 
			} );
		
		warnDialog.cfg.queueProperty("keylisteners", kl);
		warnDialog.render(document.body);
		warnDialog.show();
		warnDialog.element.style.position ='absolute';
	}
	
	// Form abschicken
	if (!msgs || force == 1) {
		YAHOO.waiting.show(); 
		var req = YAHOO.util.Connect.asyncRequest('POST', "/popups/form.php",
			{ success: this.form_response_handler, failure: this.form_response_error, argument:[this] },
			this.form_build({'_haction':'submit'}));
	}
	// Default Form-Submit nicht verwenden
	return false;		
}




//callback functions
Form.prototype.form_response_error = function (o) {
	YAHOO.waiting.hide(); 
	if(o.status)
		naalert("Fehler bei AJAX-Request:<ul><li>HTTP status: " + o.status + "</li><li>Status code message: " + o.statusText + "</li>");
	o.argument[0].toggleSubmit('on');
}

Form.prototype.form_response_handler = function(o) {
	var resp = false,
		redirect = false,
		self = o.argument[0];
		
	YAHOO.waiting.hide();
	 
	try {
		resp = YAHOO.lang.JSON.parse(o.responseText);
	} catch (e) {
		//naalert("Fehler bei AJAX-Request. Konnte Antwort nicht interpretieren: <pre style='overflow:scroll; max-height:500px;'>"+o.responseText+"</pre>");
		return false;
	}
	
	if (resp['fieldset']) {
		for (var field_id in resp['fieldset']) {
			if(skipFunk(resp['fieldset'][field_id])) continue;
			if(typeof resp['fieldset'][field_id] == 'string')
				resp['fieldset'][field_id] = decode_utf8(resp['fieldset'][field_id]);
			self.field_value_set(field_id, resp['fieldset'][field_id]);
		}
	}
	if (resp['fieldmsg']) {
		for (var field_id in resp['fieldmsg']) {
			if(skipFunk(resp['fieldmsg'][field_id])) continue;
			self.field_validation_result(field_id, resp['fieldmsg'][field_id]);
		}
	}
	if (resp['fieldlookup']) {
		self.field_def[field_id].selectvalues = resp['fieldlookup'];  
	}
	if (resp['action']) {
		if(resp['action'].substring(0,11) == 'javascript:')
			eval(resp['action'].substr(11));
		else 
			redirect = resp['action'] == 'reload' ? window.location : resp['action'];
	}
	if (resp['message']) {
		
		var buttonHandler = function(){
			this.hide();
			this.destroy(); 
			if (redirect) {
				window.location = redirect;
			}
		}
				
		var effect = (YAHOO.env.ua.ie || !(YAHOO.widget && YAHOO.widget.ContainerEffect)) ? false : {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.45};
		var warnDialog = new YAHOO.widget.SimpleDialog("form_message", { 
				width: "40em", 
				effect:effect, 
				fixedcenter:true,
				modal:true,
			    visible:false,
				draggable:false,
				close :false,
				buttons: [{ text:"ok", handler:buttonHandler, isDefault:true }] 
			});
		warnDialog.setHeader(resp['head'] ? resp['head'] : "Hinweis");
		warnDialog.setBody(resp['message']);
		
		var kl = new YAHOO.util.KeyListener(document, { keys:[27,13] }, { 
				fn:buttonHandler,
				scope:warnDialog,
				correctScope:true 
			});
		
		warnDialog.cfg.queueProperty("keylisteners", kl);
		warnDialog.render(document.body);
		warnDialog.show(); 
		
		if(typeof resp['messageTimer'] !='undefined' && !isNaN(resp['messageTimer'])){
			var buttoncfg = warnDialog.cfg.config.buttons.value;
			var buttonid = "";
			for(var x=0; x<buttoncfg.length;x++){
				if(buttoncfg[x].isDefault){
					buttonid = buttoncfg[x].htmlButton.id;
					break;
				}
			}				
			if(buttonid){
				for(var x=0;x<resp['messageTimer'];x++){
					window.setTimeout("timerfunc('"+buttonid+"',"+(resp['messageTimer']-x)+")",x*1000);
				}
				window.setTimeout(buttonHandler.bind(warnDialog),resp['messageTimer']*1000);		
			}
		}
			
	} else if (redirect)
		window.location = redirect;	
	self.toggleSubmit('on');
}

//helper funktions
Form.prototype.getElm = function(fid,type){
	//_iconel = document.getElementById('ficon_' + fid);
	//_msgel = document.getElementById('fmsg_' + fid);
	//_contel = document.getElementById('fel_' + fid);
	
	var prefix = 'fel_';
	type = type || "";
	switch(type.toLowerCase()){
		case "icon":
			prefix = 'ficon_';
		break;
		case "msg":
			prefix = "fmsg_";
		break;
	}
	return $(prefix + fid);
}

Form.prototype.getFieldDescription = function (fid){
	//try to find real field description for error message
	var contel = this.getElm(fid),
		field = this.field_def[fid],
		curname = contel.parentNode.parentNode.previousSibling,
		recursioncount = 0;
		
	while(curname.nodeName.toLowerCase() == "#text" && recursioncount<10){
		if(curname.previousSibling && curname.previousSibling.nodeName.toLowerCase()!="dd"){
			curname = curname.previousSibling;
			recursioncount++;
		} else {
			recursioncount = 20;
		}
	}
	if(recursioncount ==20){
		//no more previous siblings, ie: no label so default value is probably the name
		curname = (field.__null) ? field.__null : field.ovalue;
		curname = curname.replace(/\\([^\s])/g,"$1");
	}else if (recursioncount >= 10) {
		//too much recursion, ie. structure could not be identified
		curname = field.name
	}else {
		curname = curname.firstChild.innerHTML;	
	}
	
	return curname;
}

Form.prototype.form_build = function (additional) {
	var post = [],
		cfield,
		cvalue;
		
	for (var fid in this.field_def) {
		cfield = this.field_def[fid];
		if(skipFunk(cfield) || typeof cfield.valueElm == 'undefined') continue;
		cvalue = this.field_value_get(fid);
		switch(typeof cvalue){
			case "string":
			case "number":
				post.push(encodeURIComponent(cfield.name)+"="+encodeURIComponent(cvalue));
				break;
			default:
				if (typeof cvalue == 'object') {
					if (cvalue.length) {
						for (var k = 0; k < cvalue.length; k++) {
							post.push(encodeURIComponent(cfield.name + "[]") + "=" + encodeURIComponent(cvalue[k]));
						}
					} else {
						post.push(encodeURIComponent(cfield.name + "[]") + "=");
					}
				}
			break;
		}
	}
	for (var n in additional) {
		if(skipFunk(additional[n])) continue;
		post.push(encodeURIComponent(n) + "=" + encodeURIComponent(additional[n]));
	}
	return post.join("&");
}

Form.prototype.toggleSubmit = function(onoff){
	var on = (onoff==false || onoff=='disable' || onoff=='off') ? false : true,
		cfield,submit;
	
	if(this.submitDisabled == on)
		return;
	
	for (var fid in this.field_def) {
		cfield = this.field_def[fid];
		if (skipFunk(cfield)) 
			continue;
		
		if (cfield.typ == "submit") {
			//submit = this.getElm(fid);
			submit = cfield.valueElm;
			
			if (!on) {
				submit.blur(); //Blur submit buttons to focus events on dialog
				submit.disabled=true; //disable button to prevent double posts
				this.submitDisabled = true;
			}else{
				submit.disabled=false; //disable button to prevent double posts
				this.submitDisabled = false;
			}
		}
	}
}

//Event handling
Form.prototype.textareaSync = function(e,obj){
	var self = obj.self,
		field = self.field_def[obj.fid],
		value = self.field_value_get(obj.fid),
		hiddendiv = field.hiddendiv,
		h,min,max;
			
	hiddendiv.innerHTML = value ? value.replace(/\n/mg,'<br />').replace(/\s{2}/mg,' &nbsp;')+'<br />&nbsp;' : '';
	h = parseInt(hiddendiv.clientHeight);
	min = parseInt(field.styleoptions && field.styleoptions.minheight ? field.styleoptions.minheight : 16);
	max = parseInt(field.styleoptions && field.styleoptions.maxheight ? field.styleoptions.maxheight : min*2);
	max = max >800 ? 800 : max;
	
	field.valueElm.style.height = (h < min ? min : (h > max ? max : h))+"px";
	if(field.valueElm.value !="")
		field.valueElm.focus();
}

Form.prototype.field_keyup = function(e,obj){ //was field_keyup(arg)
		
		
	var fid = obj.fid,
		self = obj.self,
		field = self.field_def[fid],
		target = YAHOO.util.Event.getTarget(e, 1);
	
	// Validation
	self.field_validate(fid, 0);
	
		
}

Form.prototype.field_blur = function(e,obj) {
	var target = YAHOO.util.Event.getTarget(e, 1),
		fid = obj.fid,
		self = obj.self;
	self.field_validate(fid,1);
}

Form.prototype.field_focusSelect = function (e,obj) {
	var target = YAHOO.util.Event.getTarget(e, 1),
		fid = obj.fid,
		self = obj.self;
	
	window.setTimeout(function(){
		target.select();
	},0);
}

Form.prototype.field_focusClear = function (e,obj) {
	var target = YAHOO.util.Event.getTarget(e, 1),
		fid = obj.fid,
		self = obj.self;
	 
	target.value='';
}
/**
 * orceo Error handler
 */
function orJsErrHandler(msg, file, line)
{
	if (msg == 'Error loading script' || msg == 'FlashObject is not defined')
		return true;
	if (!file.match(/nachtagenten\.de\/|naimg\.net\//))
		return false;
	var req = 
		"url="+encodeURIComponent(window.location)+
		"&msg="+encodeURIComponent(msg)+
		"&file="+encodeURIComponent(file)+
		"&line="+encodeURIComponent(line)+
		"&ua="+encodeURIComponent(navigator.userAgent);
	
	try {
		/**
		 * Code for stacktrackes taken from: http://eriwen.com/javascript/js-stack-trace/
		 */
	    var callstack = [];
	    var isCallstackPopulated = false;
	    try {
	        i.dont.exist+=0; //does not exist - that's the point
	    } catch(e) {
	        if (e.stack) { //Firefox
	            var lines = e.stack.split("\n");
	            for (var i = 0, len = lines.length; i < len; i++) {
	                if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
	                    callstack.push(lines[i]);
	                }
	            }
	            //Remove call to printStackTrace()
	            callstack.shift();
	            isCallstackPopulated = true;
	        }
	        else if (window.opera && e.message) { //Opera
	            var lines = e.message.split("\n");
	            for (var i = 0, len = lines.length; i < len; i++) {
	                if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
	                    var entry = lines[i];
	                    //Append next line also since it has the file info
	                    if (lines[i+1]) {
	                        entry += " at " + lines[i+1];
	                        i++;
	                    }
	                    callstack.push(entry);
	                }
	            }
	            //Remove call to printStackTrace()
	            callstack.shift();
	            isCallstackPopulated = true;
	        }
	    }
	    if (!isCallstackPopulated) { //IE and Safari
	        var currentFunction = arguments.callee.caller;
	        while (currentFunction) {
	            var fn = currentFunction.toString();
	            //If we can't get the function name set to "anonymous"
	            var fname = fn.substring(fn.indexOf("function") + 8, fn.indexOf("(")) || "anonymous";
	            callstack.push(fname);
	            currentFunction = currentFunction.caller;
	        }
	    }
		for (var i in callstack) {
			req += "&bt[]="+encodeURIComponent(callstack[i]); 
		}
	} catch(e) {
	}

	if (YAHOO && YAHOO.util && YAHOO.util.Connect && YAHOO.util.Connect.asyncRequest) {
		var transaction = YAHOO.util.Connect.asyncRequest('POST', '/popups/jserror.php', {}, req);
	} else {
		var img = new Image(1,1);
		img.src = '/popups/jserror.php?'+req;
	}
	return false;
}

//window.onerror = orJsErrHandler;

/**
 * json.js:
 * This file defines functions JSON.parse() and JSON.serialize()
 * for decoding and encoding JavaScript objects and arrays from and to
 * application/json format.
 * 
 * The JSON.parse() function is a safe parser: it uses eval() for
 * efficiency but first ensures that its argument contains only legal
 * JSON literals rather than unrestricted JavaScript code.
 *
 * This code is derived from the code at http://www.json.org/json.js
 * which was written and placed in the public domain by Douglas Crockford.
 **/
/*
// This object holds our parse and serialize functions
var JSON = {}; 

// The parse function is short but the validation code is complex.
// See http://www.ietf.org/rfc/rfc4627.txt
JSON.parse = function(s) {
    try {
        return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                                   s.replace(/"(\\.|[^"\\])*"/g, ''))) &&
            eval('(' + s + ')');
    }
    catch (e) {
        return false;
    }
};

// Our JSON.serialize() function requires a number of helper functions.
// They are all defined within this anonymous function so that they remain
// private and do not pollute the global namespace.
(function () {
    var m = {  // A character conversion map
            '\b': '\\b', '\t': '\\t',  '\n': '\\n', '\f': '\\f',
            '\r': '\\r', '"' : '\\"',  '\\': '\\\\'
        },
        s = { // Map type names to functions for serializing those types
            'boolean': function (x) { return String(x); },
            'null': function (x) { return "null"; },
            'function': function(x) { return "function"; },
            number: function (x) { return isFinite(x) ? String(x) : 'null'; },
            string: function (x) {
                if (/["\\\x00-\x1f]/.test(x)) {
                    x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                        var c = m[b];
                        if (c) {
                            return c;
                        }
                        c = b.charCodeAt();
                        return '\\u00' +
                            Math.floor(c / 16).toString(16) +
                            (c % 16).toString(16);
                    });
                }
                return '"' + x + '"';
            },
            array: function (x,l,m) {
            	if (l > m)
            		return 'MAXDEPTH';
                var a = ['['], b, f, i, l = x.length, v;
                for (i = 0; i < l; i += 1) {
                    v = x[i];
                    f = s[typeof v];
                    if (f) {
                        v = f(v,l+1,m);
                        if (typeof v == 'string') {
                            if (b) {
                                a[a.length] = ',';
                            }
                            a[a.length] = v;
                            b = true;
                        }
                    }
                }
                a[a.length] = ']';
                return a.join('');
            },
            object: function (x,l,m) {
            	if (l > m)
            		return 'MAXDEPTH';
            	//console.log(x);
                if (x) {
                    if (x instanceof Array) {
                        return s.array(x);
                    }
                    var a = ['{'], b, f, i, v;
                    for (i in x) {
                        v = (i == 'domConfig' ? null : x[i]);
                        f = s[typeof v];
                        if (f) {
                            v = f(v,l+1,m);
                            if (typeof v == 'string') {
                                if (b) {
                                    a[a.length] = ',';
                                }
                                a.push(s.string(i), ':', v);
                                b = true;
                            }
                        }
                    }
                    a[a.length] = '}';
                    return a.join('');
                }
                return 'null';
            }
        };

    // Export our serialize function outside of this anonymous function
    JSON.serialize = function(o) { return s.object(o,0,1); };
})(); // Invoke the anonymous function once to define JSON.serialize()
*/

try { //fixes navi flicker
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}

function openSmeetWindow(id) {
     var xS = 1024, yS = 710;
     var xT = (screen.availWidth / 2) - 512;
     var yT = (screen.availHeight / 2) - 384;
     if (screen.width <= 1024) {
         xS = screen.availWidth;
         yS = screen.availHeight - 30;
         xT = 0;
         yT = 0;
     }
     //var f = window.open("http://www.smeet.de/smeet-web/partner/nachtagenten/import.do?XY="+id+ "&js=1", "index", "width=" + xS + ",height=" + yS + ",left=" + xT + ",top=" + yT + ",resizable=yes");
     var f = window.open("http://de.smeet.com/smeet-web/loader.do?v=1&domain=1&cafftag=nachtagenten&roomId=1-8100-0&widgetType=E&language=de_DE&backgroundUrl=http://p-orep-1.smeet.com/smeet-repo/byuri/-${version}/res/PublicRooms/1-8100-0/Preview&src=http://base.smeet.com/smeet/LoaderWidget.swf", "index", "width=" + xS + ",height=" + yS + ",left=" + xT + ",top=" + yT + ",resizable=yes");
     f.focus();
} 

function toggle(el) {
	var class_re = /\bhidden\b/i;
	
	if(typeof el == 'string')
		var el = $(el);
	if(typeof el == 'object'){
		if ( el.style.display == 'none'  || class_re.test(el.className)){
			el.style.display = "block";
			el.className = el.className.replace(/\bhidden\b/gi,"");
		}else{
			el.style.display = "none";
		}		
	}
}

function hide(el,type){
	if(!type || type!="hidden")
		type = "none";
	else
		type = "hidden";
		
	if(typeof el == 'string')
		var el = $(el);
	if(typeof el == 'object')
		el.style.display = type;
}

function show(el){		
	if(typeof el == 'string')
		var el = $(el);
	if(typeof el == 'object'){
		el.style.display = '';
		el.style.display = 'block';
	}
	el.className = el.className.replace(/\bhidden\b/,"");
}


function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function ucwords(str) {
    return str.replace(/^(.)|\s(.)/g, function($1){return $1.toUpperCase();} );
}

var strftime_funks = {
  zeropad: function( n ){ return n>9 ? n : '0'+n; },
  a: function(t) { return ['So','Mo','Di','Mi','Do','Fr','Sa'][t.getDay()] },
  A: function(t) { return ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'][t.getDay()] },
  b: function(t) { return ['Jan','Feb','M&uml;r','Apr','Mai','Jun', 'Jul','Aug','Sep','Okt','Nov','Dez'][t.getMonth()] },
  d: function(t) { return this.zeropad(t.getDate()) },
  H: function(t) { return this.zeropad(t.getHours()) },
  I: function(t) { return this.zeropad((t.getHours() + 12) % 12) },
  m: function(t) { return this.zeropad(t.getMonth()+1) }, // month-1
  M: function(t) { return this.zeropad(t.getMinutes()) },
  p: function(t) { return this.H(t) < 12 ? 'AM' : 'PM'; },
  S: function(t) { return this.zeropad(t.getSeconds()) },
  w: function(t) { return t.getDay() }, // 0..6 == sun..sat
  y: function(t) { return this.zeropad(this.Y(t) % 100); },
  Y: function(t) { return t.getFullYear() },
  '%': function(t) { return '%' }
};

Date.prototype.strftime = function (fmt) {
    var t = this;
    for (var s in strftime_funks) {
        if (s.length == 1 )
            fmt = fmt.replace('%' + s, strftime_funks[s](t));
    }
    return fmt;
};

var writedate_cmpfmt,writedate_d0, writedate_d1, writedate_dm1;
function writedate_init()
{
	writedate_cmpfmt = '%d.%m.%y';
	var d = new Date();
	var now = d.getTime();
	writedate_d0 = d.strftime(writedate_cmpfmt);
	d.setTime(now+86400000);	writedate_d1 = d.strftime(writedate_cmpfmt);
	d.setTime(now-86400000);	writedate_dm1 = d.strftime(writedate_cmpfmt);
}
function returndate(ts, fmt, tzoff){
	var d = new Date();
	d.setTime(ts * 1000);
	var ds = d.strftime(writedate_cmpfmt);
	var fmt_t = fmt.match(/[tT]/) ? '%H:%M' : 0;
	var fmt_d = fmt.match(/s/) ? '%d.%m.%y' : (fmt.match(/m/) ? '%a, %d.%m.%y' : (fmt.match(/l/) ? '%A, %d.%m.%y' : 0));
	if (fmt_d) {
		if (ds == writedate_d0) 
			fmt_d = 'Heute';
		else 
			if (ds == writedate_dm1) 
				fmt_d = 'Gestern';
			else 
				if (ds == writedate_d1) 
					fmt_d = 'Morgen';
				else 
					if (fmt.match(/T/)) 
						fmt_t = 0;
	}
	return (fmt_d ? d.strftime(fmt_d) : '') + (fmt_d && fmt_t ? ', ' : '') + (fmt_t ? d.strftime(fmt_t) : '');
}
function writedate(ts, fmt, tzoff)
{
	document.write(returndate(ts, fmt, tzoff));
}
writedate_init();

function str_repeat(str,cnt){
	var ret = "";
	for(var x=0;x<cnt;x++){
		ret += str;
	}
	return ret;
}

function getObjInnerText(obj){
	return (obj.innerText) ? obj.innerText : (obj.textContent) ? obj.textContent : "";
}

function var_dump(element, limit, depth, debug) {
	depth = depth?depth:0;
	limit = limit?limit:1;
	debug = debug?debug:console;
	verbose = true;
         
	returnString = (depth?"\n":'')+str_repeat("\t",depth)+"<ol>\n";
     
	for(property in element) {
		returnString += str_repeat("\t",depth+1);
        
		//Property domConfig isn't accessable
		if (property != 'domConfig') {
			returnString += '<li><strong>'+ property + '</strong>';
			if(verbose && debug!=console) returnString += ' <small>(' + (typeof element[property]) +')</small>';
                 
			if (typeof element[property] == 'number' || typeof element[property] == 'boolean')
				returnString += ' : <em>' + element[property] + "</em>";
				
			else if (typeof element[property] == 'string' && element[property])
				returnString += ': <div style="background:#C9C9C9;border:1px solid black; overflow:auto;"><code>' +
					element[property].replace(/</g, '&lt;').replace(/>/g, '&gt;') + "</code></div>";
             
			else if ((typeof element[property] == 'object') && (depth <limit))            
				returnString += var_dump(element[property], limit, (depth + 1));
            				     
			returnString += (returnString.substr(returnString.length-1)=="\n" ? str_repeat("\t",depth+1) :'')+"</li>\n";
		}   
	}
	
	returnString += "\n"+str_repeat("\t",depth)+"</ol>\n";
     
	if(depth == 0) {
		  
		if(debug == console && console.log){
			console.log(returnString.replace(/<[^>]+>/g,''));
		}else{
			returnString = returnString.replace(/\n+>/g,"\n");
			if(typeof debug == "object" && debug.innerHTML){
				debug.innerHTML = returnString;
			}else{
				if (typeof debug == 'string') {
					var debug_c = document.getElementById(debug);
					if (debug_c && debug_c.innerHTML) {
						debug_c.innerHTML = returnString;
					}else{
						var div = document.createElement("div");
						div.id = debug;
						with(div.style){
							width = "300px";
							height = "300px";
							border = "solid red 2px;";
							background = "white";
							color = "black";
							position = "absolute";
							left = "200px";
							top = "50px";
							overflow = "auto";
							zIndex = 100;
						}
				
						document.body.appendChild(div);
						div.innerHTML = returnString;
					}
				} else {
					alert("cannot use " + debug + " for debugging");
				}
			}
		}
		
	}   
         
	return returnString;
}

function findChildren(startNode,searchname,searchtype){
		
	if(!searchtype){
		var searchtype = "id";
	}
	if (!returnArray) {
		var returnArray = new Array();
	}
	
	if(typeof startNode=='string'){
		startNode = document.getElementById(startNode);
	}
	
	if(!startNode || typeof startNode == undefined || typeof startNode != 'object'){
		return false;
	}
	
	switch (searchtype.toLowerCase()) {
		case "tag":
		case "tagname":
			if (startNode.tagName.toLowerCase() == searchname.toLowerCase()) {
				returnArray.push(startNode);
				
			}
			break;
		case "id":
		default:
			if (startNode.id.toLowerCase() == searchname.toLowerCase()) {
				returnArray.push(startNode);
			}
			break;
	}
	
	if(startNode.childNodes && startNode.childNodes.length && startNode.childNodes.length>0){
		
		for(var x=0; x < startNode.childNodes.length; x++){
			var currentNode = startNode.childNodes[x];
			
			if(currentNode.nodeType==8 || currentNode.nodeType==3) continue; //ignore comments, text and scripts
			
			var more = findChildren(currentNode, searchname,searchtype); //recursion

			if (more && more.length) {
				returnArray = returnArray.concat(more);
			}
		}
	}
	
	return returnArray;
}

//findChildren(document.getElementById('myna'),'form','tagName');

function get_default(array,key,def_value,reg){
	if(typeof def_value == "undefined")
		def_value = false;
	if(typeof reg == "undefined")
		reg = false;
	if(typeof array[key] == "undefined")
		return def_value;
	if(!reg || reg.test(array[key]))
		return array[key];
	return def_value
}

function skipFunk(v){
	if(typeof v=='function')
		return true;
	return false;
}

function decode_utf8(utftext) { 
	var plaintext = ""; 
	var i=0; 
	var c=c1=c2=0;
	
	while(i<utftext.length) {
		c = utftext.charCodeAt(i);
		if (c<128) {
			plaintext += String.fromCharCode(c);
			i++;
		} else if((c>191) && (c<224)) {
			c2 = utftext.charCodeAt(i+1);
			plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
			i+=2;
		} else {
			c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
			plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
			i+=3;
		}
	}
	return plaintext;
} 

function purge(d) {
    var a = d.attributes, i, l, n;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            n = a[i].name;
            if (typeof d[n] === 'function') {
                d[n] = null;
            }
        }
    }
    a = d.childNodes;
    if (a) {
        l = a.length;
        for (i = 0; i < l; i += 1) {
            purge(d.childNodes[i]);
        }
    }
}

RegExp.escape = function(text) {
  if (!arguments.callee.sRE) {
    var specials = [
      '/', '.', '*', '+', '?', '|',
      '(', ')', '[', ']', '{', '}', '\\'
    ];
    arguments.callee.sRE = new RegExp(
      '(\\' + specials.join('|\\') + ')', 'g'
    );
  }
  return text.replace(arguments.callee.sRE, '\\$1');
}

function in_array(array,elm){
	for(var x=0; x<array.length; x++){
		if(skipFunk(array[x])) continue;
		if(array[x]==elm) return true;
	}
	return false;
}

Function.prototype.bind = function () {
    var method = this, args = $A(arguments), object = args.shift();
    return function () {
        return method.apply(object, args);
    };
};

Function.prototype.bindAsEventListener = function (object) {
    var method = this;
    return function (event) {
        return method.call(object, event || window.event);
    }
}

function cloneObj(o) {
     if(typeof(o) != 'object') return o;
     if(o == null) return o;
   
     var newO = new Object();
   
     for(var i in o) newO[i] = cloneObj(o[i]);
      return newO;
 }

function $A (iterable) {
    return Array.prototype.slice.apply(iterable);
}

function microsite(link){	
		
	if(!NA.content)
		NA.content = {};
	
	NA.content.microsite = {
		title: link.getAttribute("title") ? link.getAttribute("title") : link.innerHTML,
		url: link.getAttribute("href"),
		width: !isNaN(parseInt(link.getAttribute("width"))) ? parseInt(link.getAttribute("width")) : 500,
		height: !isNaN(parseInt(link.getAttribute("height"))) ? parseInt(link.getAttribute("height")) : 200,
		scrolling : link.getAttribute("scrolling") ? link.getAttribute("scrolling") : 'no'
	}
	loadYahoo(function(){YAHOO.microsite.show()});
	return false;
}

function parseJSON(jsonstr){ 
	var response = {};
	if (typeof jsonstr != 'undefined' && jsonstr && jsonstr!="") {
		try {
			response = YAHOO.lang.JSON.parse(jsonstr);
		} 
		catch (e) {
			response.html = "Could not handle response. Please try again later.";
			response.naalert = true;
		}
	}
	return response;
}
function na_option_set(name, value)
{
	var req = YAHOO.util.Connect.asyncRequest('POST', "/popups/options.php",
		na_option_callback, "n="+encodeURIComponent(name)+"&v="+encodeURIComponent(value));
}

function na_option_get(name)
{
	var v = document.cookie;
	if ((p = v.search('opt=')) == -1)
		return false;
	v = v.substring(p+4+8);
	if ((p = v.search(';')) != -1)
		v = v.substring(0, p);
	v = unescape(v);
	if ((p = v.search(name+'=')) == -1)
		return false;
	v = v.substring(p+name.length+1);
	if ((p = v.search('&')) != -1)
		v = v.substring(0, p);
	return v;
}

var na_option_callback = {
	success: function(o) {
		var uri = window.location.pathname;
		if (uri == "/index.php" || uri == "/" || uri == "") {
			window.location = "/home.php";
		}else {
			window.location.reload();
		}
	},
	failure: function(o) {
		naalert(o.status+"\n"+o.statusText+"\nSorry, an error occured, please try again later",YAHOO.nadialog);
	}
};

function Rating(overlay, value, interval){

	this._ob = $(overlay); //object we are working on
	this._initvalue = (isNaN(value)) ? parseInt(this._ob.style.width) : value; //initial value
	this._interval = (isNaN(interval)) ? 20 : interval; //value per id
}
	
Rating.prototype._id2nr = function (id){
	var id_re = /(\d+)/;
	id_re.exec(id);
	return RegExp.$1;
}
	
Rating.prototype.submit = function (id){
	id = this._id2nr(id);
	dialog('newblog',false,false,{rating:1,value:id});
}
	
Rating.prototype.set = function (id){
	id = this._id2nr(id);
	this._ob.style.width = (id * this._interval)+'%';
	this._initvalue = (id * this._interval);
}
	
Rating.prototype.upd = function (id){
	id = this._id2nr(id);
	this._ob.style.width = (id * this._interval)+'%';
	
}

Rating.prototype.reset = function (){
	this._ob.style.width = this._initvalue+'%';
}
	
Rating.prototype.getRating = function (){
	if(this._interval > 0){
		return Math.ceil(parseInt(this._ob.style.width) / this._interval);
	}else{
		return parseInt(this._ob.style.width);
	}
}
function hoverNavi(elm,over){
	var navidiv = elm.parentNode.parentNode.parentNode;
	if(!NA.content)
		NA.content = {};
	if(typeof NA.content.naviActive == "undefined")
		NA.content.naviActive = navidiv.className; 
	
	if(over){
		navidiv.className = elm.parentNode.className;
	}else{
		navidiv.className = NA.content.naviActive;
	}
}

function menu_changesearch(type){
	Menus.closeM('search');
	$('searchtype').value = type;
	var value = "";
	switch(type){
		case "user" :
			$('searchicon').className = "user";
			value = "Usersuche";
			break;
		case "news" :
			$('searchicon').className = "news";
			value = "Newssuche";
			break;
		case "event" :
			$('searchicon').className = "event";
			value = "Eventsuche";
			break;
		case "location" :
			$('searchicon').className = "location";
			value = "Spotsuche";
			break;
		default :
			$('searchicon').className = "all";
			value = "Suche...";
			break;
	}
	var field = $('searchfield');
	switch(field.value){
		case "Suche...":
		case "Usersuche":
		case "Newssuche":
		case "Eventsuche":
		case "Spotsuche":
			field.value = value;
			break;
	}
}

var Menu = function(){
	var easing = (YAHOO.env.ua.ie) ? false : YAHOO.util.Easing.easeOut,
		regionsize = 140, 
		searchsize = 160, 
		langsize = 140, 
		region = {
			o: [
				new YAHOO.util.Anim('select_region', {top: {by: regionsize}}, 1, easing), 
				new YAHOO.util.Anim('main', {top: {by: regionsize + 20}}, 1, easing)],
			c: [
				new YAHOO.util.Anim('select_region', {top: {by: -(regionsize)}}, 1, easing), 
				new YAHOO.util.Anim('main', {top: { by: -(regionsize + 20)}}, 1, easing)]
			}, 
		search = { 
			o: [
				new YAHOO.util.Anim('select_search', {top: {by: (searchsize)}}, 1, easing), 
				new YAHOO.util.Anim('rightbox', {top: {by: searchsize-10}}, 1, easing)],
			c: [
				new YAHOO.util.Anim('select_search', {top: {by: -(searchsize)}}, 1, easing), 
				new YAHOO.util.Anim('rightbox', {top: {by: -(searchsize-10)}}, 1, easing)]
		}, 
		lang = {
			o: [
				new YAHOO.util.Anim('select_language', {top: {by: langsize}}, 1, easing), 
				new YAHOO.util.Anim('rightbox', {top: {by: -(langsize)}}, 1, easing)],
			c: [
				new YAHOO.util.Anim('select_language', {top: {by: -(langsize)}}, 1, easing), 
				new YAHOO.util.Anim('rightbox', {top: {by: -(langsize)}}, 1, easing)]
		};
		
		
	this.closeTimer =7000;
	this.currentOpen = false;
	this.currentClosing = false;
	this.runningtimer = false;
	this.queuedClose = false; 
	this.queuedOpen = false;
	this.idmap = {
		mynaregion : 'select_region',
		region : 'select_region',
		flag : 'select_language',
		search : 'select_search'
	}
		
	YAHOO.namespace("anim");
	
	YAHOO.anim.region = region;
	YAHOO.anim.search = search;
	YAHOO.anim.lang = lang;
}

Menu.prototype.installHandler = function(){
	var ids = ['mynaregion','region','flag','searchadditional'],
		temp;
		
	YAHOO.util.Event.removeListener(ids, "click");		
	YAHOO.util.Event.addListener(ids,'click',this.toggle,this);
	
	//install complete handlers
	for(var x in YAHOO.anim){
		if(skipFunk(YAHOO.anim[x])) continue;
		temp = YAHOO.anim[x];
		for(var y=0;y<temp.o.length;y++){
			temp.o[y].onComplete.subscribe(this.onOpen,this);
		}		
		for(var y=0;y<temp.c.length;y++){
			temp.c[y].onComplete.subscribe(this.onClose,this);
		}		
	}
}

Menu.prototype.toggle = function(e,self){
	var target = YAHOO.util.Event.getTarget(e),
		self = self || this,
		which;
	YAHOO.util.Event.stopEvent(e);
	
	//toggle requested
	switch(target.id){
		case 'mynaregion':
		case 'region':
			which = 'region';
		break;
		case 'flag':
			which = 'lang';
		break;
		case 'searchadditional':
		case 'search':
			which = 'search';
		break;
	}
	//close if open
	if (self.isOpen()) {
		if(self.currentOpen && self.currentOpen!=which){
			self.queuedClose = function(){
				self.openM(which);
			};
		}
		self.closeM(self.currentOpen);
	} else {
		self.openM(which);
	}
}

Menu.prototype.openM = function(which){
	if(which=='mynaregion') which = 'region';
	if(which=='searchadditional') which = 'search';
	var anim = YAHOO.anim[which];
	show($(this.idmap[which]));
	this.currentOpen = which;
	if(anim.o){
		for(var x=0;x<anim.o.length;x++){
			anim.o[x].animate();
		}	
	}
	anim.isOpen = true;
}

Menu.prototype.onOpen = function(e,arg,self){
	if (!self.runningtimer) {
		if(na_option_get && na_option_get('region')!=false) 
			self.runningtimer = window.setTimeout(self.closeM.bind(self), self.closeTimer);
	}
	if(typeof self.queuedOpen =='function'){
		self.queuedOpen();
		self.queuedOpen = false;
	}
}

Menu.prototype.closeM = function(which){
	if(!which && this.currentOpen)
		which = this.currentOpen;
	
	if (!which) {
		which = this.isOpen();		
	}
	if (!which) {
		console.log("got no which");
		return;
	}

	var anim = YAHOO.anim[which];
	
	this.currentClosing = which;
	
	if (this.runningtimer) {
		window.clearTimeout(this.runningtimer);
		this.runningtimer = null;
	}
		
	if(anim.c){
		for(var x=0;x<anim.c.length;x++){
			anim.c[x].animate();
		}	
	}
	anim.isOpen = false;
}

Menu.prototype.onClose = function(e,arg,self){
	if (self.currentClosing) {
		hide(self.idmap[self.currentClosing]);
		self.currentClosing = false;
	}
	if(typeof self.queuedClose =='function'){
		self.queuedClose();
		self.queuedClose = false;
	}
	self.currentOpen = false;
}

Menu.prototype.isOpen = function(){
	var temp;
	for (var x in YAHOO.anim) {
		if (skipFunk(YAHOO.anim[x])) continue;
		temp = YAHOO.anim[x];
		if (temp.isOpen) {
			this.currentOpen = x;
			return x;
		}
	}
	return false;
}

var Menus;
function initMenu(elm){
	if (typeof Menus != 'object') {
		if (YAHOO && YAHOO.util && YAHOO.util.Anim) {
			Menus = new Menu();
			Menus.installHandler();
			if(elm && !(YAHOO.env.ua.ie)){
				Menus.openM(elm);
			}
		} else {
			window.setTimeout('initMenu()', 500);
		}
	}
}
var popupBase = "/popups/"; //basedir where popups are (with trailing slash/)
var dialog_or_regexp = /^or_/;
var dialogButtonsDisabled = new Array(); //keeps track of buttons to disable after click, ie prevent doubleposts

//button handlers
var dialog_handleCancel = function() {
	YAHOO.nadialog.cancel();
}
var dialog_handleSubmit = function(){
	var submit = true;
	if (YAHOO.nadialog.preSubmit) {
		submit = YAHOO.nadialog.preSubmit();
		YAHOO.nadialog.preSubmit = null;
	}
	
	if (submit) 
		YAHOO.nadialog.submit();
}	
var timerfunc = function(id,display){
	var bid = $(id+"-button");
	if(/\(\d+\)$/.test(bid.innerHTML)){
		bid.innerHTML = bid.innerHTML.replace(/\s\(\d+\)$/," ("+display+")");
	}else{
		bid.innerHTML = bid.innerHTML+" ("+display+")"; 
	}
}
						
//submit handlers
var dialog_onSuccess = function(o) {
	response = parseJSON(o.responseText);
	//naalert(response);
	if(response.status == AJAXSTATUS.success){
		if(response.instructions){
			for(var x=0;x<response.instructions.length;x++){
				//var t = response.instructions[x].split(":");
				var t = response.instructions[x].match(/([^:]+):(.*)/);
				if(dialog_or_regexp.test(t[1])){ 
					switch(t[1]){
						case "or_ParentReload" : 
							if(t[2] == "true")
								YAHOO.globals.dialog.refresh = true;
							else 
								YAHOO.globals.dialog.refresh = false;
							break;
						case "or_ParentBack" : 
							if(t[2] == "true")
								YAHOO.globals.dialog.back = true; 
							break;
						case "or_KeepVisible" :
							if(t[2] == "true")
								YAHOO.globals.dialog.keep_visible = true; 
							break;
						case "or_Location" :
							if(t[2])
								window.location.href = t[2];
							break;
						case "or_Function" :
							eval((t[2]));
							break;
						case "or_ForceReload":
							document.location.reload();
							response.html = "";
							break;
						case "or_FacebookDialog":
							eval((t[2]));
							break;
					}
				}
			}
		}
		if(YAHOO.globals.dialog.refresh){
			YAHOO.nadialog.hide();
			if(response.html && response.html!=""){ 
				naalert(response.html,false,true,(!isNaN(parseInt(response.naalertAutoDismiss))) ? response.naalertAutoDismiss : null);
			}else{			
				document.location.reload();
			}
		}else if(YAHOO.globals.dialog.back){
			history.back();
		}else if(!YAHOO.globals.dialog.keep_visible){
			YAHOO.nadialog.hide();
			if (response.html && response.html != "") {
				naalert(response.html, false, (YAHOO.globals.dialog.refresh) ? true : false,(!isNaN(parseInt(response.naalertAutoDismiss))) ? response.naalertAutoDismiss : null);
			}
		}
		
	}else{
		naalert(response.html,YAHOO.nadialog,null,(!isNaN(parseInt(response.naalertAutoDismiss))) ? response.naalertAutoDismiss : null);	
	}
}

var dialog_onFailure = function(o) {
	naalert(o.status+"\n"+o.statusText+"\nSorry, an error occured, please try again later",YAHOO.nadialog);
}

//pre display
var dialog_insertCallback = {
	success: function(o) {
		var response = parseJSON(o.responseText);
		if(response.instructions){
			for(var x=0;x<response.instructions.length;x++){
				var t = response.instructions[x].split(":");
				if(t.length >= 2){
					if(dialog_or_regexp.test(t[0])){ 
						switch(t[0]){
							case "or_ParentReload" : 
								if(t[1] == "true")
									YAHOO.globals.dialog.refresh = true; 
								break;
							case "or_KeepVisible" :
								if(t[1] == "true")
									YAHOO.globals.dialog.keep_visible = true; 
								break;
							case "or_PreSubmit" :
								eval("(YAHOO.nadialog.preSubmit = "+t[1]+")");
								break;
							case "or_Function" :
								eval((t[1]));
								break;
							case "or_ForceReload":
								document.location.reload();
								return;
								break;
							case "or_NoESCKey":
								if(t[1] == "true")
									YAHOO.globals.dialog.noESC = true;
								break;
						}
					}else{ 
						if (t[1] == "false") {
							t[1] = false;
						} else if (t[1] == "true") {
							t[1] = true;
						}
						YAHOO.nadialog.cfg.setProperty(t[0],t[1]);
					}
				}
			}
		}
		
		if(response.naalert || response.status==AJAXSTATUS.error){
			YAHOO.waiting.hide();
			naalert(response.html,null,null,(!isNaN(parseInt(response.naalertAutoDismiss))) ? response.naalertAutoDismiss : null);
		}else{
			
			//remove old buttons
			if (YAHOO.nadialog && YAHOO.nadialog.footer && YAHOO.nadialog.footer.firstChild && YAHOO.nadialog.footer.firstChild.childNodes) {
				while (YAHOO.nadialog.footer.firstChild.childNodes.length) {
					var p = YAHOO.nadialog.footer.firstChild;
					p.removeChild(p.firstChild);
				}
			}
			
			with(YAHOO.nadialog){
				setHeader(response.header);
				setBody(response.html);
				render(document.body);
				if(!form.action){
					form.action = popupBase+YAHOO.nadialog.cfg.name+'.php';
				}
				if(response.postRender){
					eval(response.postRender);
				}
			}
			if (response.instructions) {
				for (var x = 0; x < response.instructions.length; x++) {
					var t = response.instructions[x].split(":");
					if (t.length >= 2 && t[0] == "or_PostRender") {
						eval((t[1]));
					}
				}
			}
			var keylisteners = new Array;
			//insert new buttons
			if(response.buttons){
				YAHOO.globals.buttonhandlers = new Array(); 
				for(var b=0;b<response.buttons.length;b++){
					var oButton = new YAHOO.widget.Button({ 
						id: response.buttons[b].id,  
						type: "button",  
						isDefault: response.buttons[b].checked,
						label: response.buttons[b].label,  
						container:  YAHOO.nadialog.footer.firstChild
					});
					
					
					var bh = "";
					//eval("bh = function(){dialogButtonsDisabled.push(this._button);this._button.disabled=true;"+response.buttons[b].onclick+"}");
					eval("bh = function(){if(this._button){dialogButtonsDisabled.push(this._button);this._button.disabled=true;}"+response.buttons[b].onclick+"}");
					oButton.addListener('click',bh);
					
					if(response.buttons[b].checked==true){
						var kl1 = new YAHOO.util.KeyListener(document, { keys:13 }, { 
							fn: bh,
							scope:YAHOO.nadialog,
							correctScope:true 
						});
						keylisteners.push(kl1);
					}

					if(response.buttons[b].timer && response.buttons[b].timer !='false'){						
						for(var x=0;x<response.buttons[b].timer;x++){
							window.setTimeout("timerfunc('"+response.buttons[b].id+"',"+(response.buttons[b].timer-x)+")",x*1000);
						}					
						window.setTimeout(function(){bh()},response.buttons[b].timer*1000);
					}
				}
			}
			
			if (!YAHOO.globals.dialog.noESC) {
				var kl2 = new YAHOO.util.KeyListener(document, {keys: 27}, {
					fn: YAHOO.nadialog.hide,
					scope: YAHOO.nadialog,
					correctScope: true
				});
				keylisteners.push(kl2);
			}
			
			if(keylisteners.length>0)
				YAHOO.nadialog.cfg.queueProperty("keylisteners", keylisteners);
			YAHOO.nadialog.render(document.body);
			//YAHOO.waiting.hide();
			//document.body.style.cursor='default';
			YAHOO.util.Dom.removeClass(document.body,'wait');
			YAHOO.nadialog.show();		
		}
		
	}, 
	failure: function(o) {
		console.log(o);
		naalert(o.status+"\n"+o.statusText+"\nSorry, an error occured, please try again later",YAHOO.nadialog);
	} 
}




function naalert (text,callingDialog,reload_onclose,timer){
	if(!text){
		text = "Bitte versuche es später noch einmal.";
	}
	if(YAHOO.widget && YAHOO.widget.SimpleDialog){
		if(callingDialog)
			callingDialog.hide();
						
		var okHandler = function(){
			this.hide();
			this.destroy();
			if(callingDialog) callingDialog.show();
			if(reload_onclose) document.location.reload();
			if(dialogButtonsDisabled.length>0){
				for(var x=0;x<dialogButtonsDisabled.length;x++){
					dialogButtonsDisabled[x].disabled = false;
				}
			}
		}
		
		var effect = (YAHOO.env.ua.ie) ? false : {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.45};
		var warnDialog = new YAHOO.widget.SimpleDialog("warning", { 
				width: "500px", 
				effect:effect, 
				fixedcenter:true,
				modal:true,
			    visible:false,
				draggable:false,
				icon: YAHOO.widget.SimpleDialog.ICON_WARN,
				buttons: [{ text:"ok", handler:okHandler, isDefault:true } ] 
			});
		warnDialog.setHeader("Achtung!");
		warnDialog.setBody(text.toString());
		var kl = new YAHOO.util.KeyListener(document, { keys:[27,13] }, { 
				fn:okHandler,
				scope:warnDialog,
				correctScope:true 
			}, "keyup" );
		
		
		warnDialog.cfg.queueProperty("keylisteners", kl);
		warnDialog.render(document.body);

		
		YAHOO.util.Dom.removeClass(document.body,'wait');
		warnDialog.show();
		warnDialog.element.style.position ='absolute';
		
		//install timer if needed		
		if(typeof timer !='undefined' && timer && !isNaN(timer)){
			var buttoncfg = warnDialog.cfg.config.buttons.value;
			var buttonid = "";
			for(var x in buttoncfg){
				if(skipFunk(buttoncfg[x])) continue;
				if(buttoncfg[x].isDefault){
					buttonid = buttoncfg[x].htmlButton.id;
					break;
				}
			}				
			if(buttonid){
				for(var x=0;x<timer;x++){
					window.setTimeout("timerfunc('"+buttonid+"',"+(timer-x)+")",x*1000);
				}
				window.setTimeout(okHandler.bind(warnDialog),timer*1000);		
			}
		}
	}else{
		alert(text);
	}
}

var T=1;
function dialog(name,ctype,cid,arg){
	
	loadYahoo(function(){
		if(!YAHOO.nadialog){ 
			//YAHOO is not finished loading. wait a little longer
			//window.setTimeout(function(){dialog(name,ctype,cid,arg)},25);
			return false;
		}
		
		var param_a = new Array();
		var param_s = "";
		
		if(!NA.content) NA.content = {};
				
		//YAHOO.waiting.show();
		//window.setTimeout('YAHOO.waiting.hide()',1000*60*2); //2minutes max
		//document.body.style.cursor='wait';
		YAHOO.util.Dom.addClass(document.body,'wait');
		
		var cidANDctype = false;
		if (ctype && cid) {
			param_a.push("ctype=" + ctype);
			param_a.push("cid=" + cid);
			cidANDctype = true;
		}
		
		// add vars from NA.content global object
		for (var x in NA.content) {
			
			if (x != "btype") {
				if (!cidANDctype || (x != "ctype" && x != "cid"))
					param_a.push(x + "=" + NA.content[x]);
			}
		}
		
		// add vars given as arg
		if(!arg) arg = {};
		for(var x in arg){
			param_a.push(x+"="+arg[x]);
		}
		// build get string
		if(param_a.length>0){
			param_s += param_a.join("&");
		}
		
		//YAHOO.util.Connect.setDefaultPostHeader("application/x-www-form-urlencoded; charset=ISO-8859-1");
		//YAHOO.util.Connect.setDefaultXhrHeader("Pragma", "no-cache");
		//YAHOO.util.Connect.setDefaultXhrHeader("Cache-Control", "must-revalidate");
		//YAHOO.util.Connect.setDefaultXhrHeader("If-Modified-Since", document.lastModified);
		var transaction = YAHOO.util.Connect.asyncRequest('POST', popupBase+name+'.php', dialog_insertCallback, param_s);
		
		with(YAHOO.nadialog){
			cfg.name = name;
			cfg.ctype = ctype;
			cfg.cid = cid;
		}
	});
}

// config vars
var tabswitch_timeout = 5000; //timeout between div changes
var tabswitch_maxtabs = 3; //number of tabs to show

// script vars. DO NOT CHANGE
var tabswitch_divs = new Array(); //array to hold divs that should be switched
var tabswitch_inited = false; //is divs array populated
var tabswitch_on = new Array(); //which div. auto increments
var tabswitch_running = new Array(); //interval
var tabswitch_called = false; //if script is already executed. needed if we have more than one teaserbox that needs script and set onload.


function tabswitch_init(){
	var teaser_re = /\bblo_3ts\b/;
	var content_re = /\btab_div_\d+\b/;
	 
	var tdivs = document.getElementsByTagName("div");
	var id_counter = 0;
	var t_elm;
	var link;
	
	//ids to add events to
	var links = new Array();
	var divs = new Array();
	
	for(var x=0; x<tdivs.length; x++){
		if(teaser_re.test(tdivs[x].className)){
			if(!tdivs[x].id || tdivs[x].id==""){
				tdivs[x].setAttribute("id","blo_3ts_"+id_counter);
				id_counter++;
			}
			var id = tdivs[x].id; 
			var container = tdivs[x].firstChild;
			
			var tabs = document.createElement("div"); //tab container
			tabs.className = "tabs";
			
			t_elm = document.createElement("ul"); //tab ul-parant
			t_elm.className = "tab_ul";
			tabs.appendChild(t_elm);
			
			
			var cdivs = container.getElementsByTagName("div");
			
			var tab_counter = 0;
			for(var y=0; y<cdivs.length; y++){
				if(content_re.test(cdivs[y].className)){
					if(tab_counter < tabswitch_maxtabs){ 
						link = document.createElement("a");
						link.setAttribute("href","javascript:void(0)");
						link.setAttribute("onfocus","this.blur()");
						
						var c_id = "link_"+id+"_"+(tab_counter+1); 
						link.id = c_id;
						links.push(c_id);
						link.innerHTML = tab_counter+1;
 
						t_elm = document.createElement("li");
						if(!tab_counter)
							t_elm.className = "tab tab_active";
						else
							t_elm.className = "tab";
						t_elm.appendChild(link);

						
						tabs.firstChild.appendChild(t_elm);
					}
					if(!tabswitch_divs[tdivs[x].id])
						tabswitch_divs[tdivs[x].id] = new Array();
					
					YAHOO.util.Event.addListener(cdivs[y],'mouseover',tabswitch_mouseover);
					YAHOO.util.Event.addListener(cdivs[y],'mouseout',tabswitch_mouseout);
					
					tabswitch_divs[tdivs[x].id].push(cdivs[y]);
					
					tabswitch_on[tdivs[x].id] = 1;
					tab_counter++;
				}
			}
			
			if(tab_counter > 1){//only add tabs if we have more than one content divs
				container.insertBefore(tabs,container.firstChild);
			}			
		}
	}
	
	//now we add all events	
	YAHOO.util.Event.addListener(links,'mouseover',tabswitch_mouseover);
	YAHOO.util.Event.addListener(links,'mouseout',tabswitch_mouseout);
	
	tabswitch_inited = true;
}

function tabswitch_mouseover(){
	var linkid = this.id;
	if(!linkid){
		var boxid = this.parentNode.parentNode.parentNode.id;
		tabswitch_stop(boxid);
	}else{
		var boxid = this.parentNode.parentNode.parentNode.parentNode.parentNode.id;
		var nr = parseInt(this.innerHTML)-1;		
		tabswitch_openDiv(boxid,nr,false);
	}
}

function tabswitch_mouseout(){
	if(!this.id){
		var boxid = this.parentNode.parentNode.parentNode.id;
	}else{
		var boxid = this.parentNode.parentNode.parentNode.parentNode.parentNode.id;
	}
	tabswitch_run(boxid);
}


function tabswitch_switchTabs(id){
	if(!tabswitch_inited){
		tabswitch_init();
	}

	tabswitch_openDiv(id,tabswitch_on[id],true);
	
	tabswitch_on[id]++;
	if(tabswitch_on[id] >= tabswitch_divs[id].length){
		tabswitch_on[id] = 0;
	}
}

function tabswitch_openDiv(id,nr,autostart){
	if(!tabswitch_inited){
		tabswitch_init();
	}
	
	if(!autostart){
		tabswitch_stop(id);
	}
	
	var content_re = /\btab_div_(\d+)\b/;
	
	for(var x=0; x<tabswitch_divs[id].length; x++){
		content_re.exec(tabswitch_divs[id][x].className);
		if(RegExp.$1 == nr){
			tabswitch_divs[id][x].style.display = "block";
		}else{
			tabswitch_divs[id][x].style.display = "none";
		}
	}
	
	var box = document.getElementById(id);
	var ul = box.firstChild.firstChild.firstChild;
	for(var x=0; x< ul.childNodes.length; x++){
		var current = ul.childNodes[x];
		current.className = current.className.replace(/\btab_active\b/,"");
		if(parseInt(current.firstChild.innerHTML)-1 == nr){
			current.className += " tab_active";
			tabswitch_on[id] = nr;
		}
	}
	
	
	if(autostart){
		tabswitch_running[id] = window.setTimeout("tabswitch_switchTabs('"+id+"')", tabswitch_timeout);
	}
}

function tabswitch_run(id){
	if(!tabswitch_running[id] && tabswitch_divs[id].length>1){
		tabswitch_running[id] = window.setTimeout("tabswitch_switchTabs('"+id+"')", tabswitch_timeout);
	}
		
}

function tabswitch_stop(id){
	if(tabswitch_running[id]){
		window.clearTimeout(tabswitch_running[id]);
		tabswitch_running[id] = false;
	}
}

function tabswitch_start_all(){
	if(!tabswitch_called){
		tabswitch_called = true;
		if(!tabswitch_inited){
			tabswitch_init();
		}
		
		for(var id in tabswitch_divs){ 
			tabswitch_run(id);
		}
	}
}

function tabswitch_stop_all(){
	
	for(var id in tabswitch_divs){ 
		tabswitch_stop(id);
	}
	tabswitch_called = false;
}
//YAHOO.util.Event.onDOMReady(tabswitch_start_all);
YAHOO.util.Event.onContentReady('header',tabswitch_start_all);
// config vars

NA.notes_parents = {
	'2':{elem:"a",prefix:'u',type:'user',css_class:"user"},
	'3':{elem:"a",prefix:'e',type:'event',css_class:["event","ticketevent"]},
	'4':{elem:"a",prefix:'l',type:'location',css_class:"location"},
	'5':{elem:"a",prefix:'n',type:'news',css_class:"news"},
	'6':{elem:"a",prefix:'m',type:'mgallery_obj',css_class:"mgallery_one"},
	'8':{elem:"a",prefix:'mg',type:'mgallery',css_class:"mgallery"},
	'10':{elem:"a",prefix:'p',type:'press',css_class:"press"}
}

function notes_init(){
	if(typeof NA.notes =='undefined'){
		window.setTimeout("notes_init()",200);//set loop to wait for NA.notes
		return false;
	}
	
	if(typeof NA.notes == 'string')
		return false;
		
		
	for(var ctype in NA.notes_parents){
		var idre = /\b([a-z]+)(\d+)\b/;
			
		var FoundElements = new Array();
		var len = 0;
		var c_el = {};
		
		var id_counter=0;
		
		if (typeof NA.notes_parents[ctype].css_class == 'object') {
			for (var x = 0; x < NA.notes_parents[ctype].css_class.length; x++) {
				FoundElements = FoundElements.concat(YAHOO.util.Dom.getElementsByClassName(NA.notes_parents[ctype].css_class[x], NA.notes_parents[ctype].elem, "main"));
			}
		} else if(typeof NA.notes_parents[ctype].css_class == 'string') {
			FoundElements = YAHOO.util.Dom.getElementsByClassName(NA.notes_parents[ctype].css_class, NA.notes_parents[ctype].elem, "main");
		}
		len = FoundElements.length;
		
		for(var x=0;x<len;x++){
			c_el = FoundElements[x];
			idre.exec(c_el.className);
			var prefix = RegExp.$1;
			var id = RegExp.$2;
			
			
			if(c_el.firstChild == c_el.lastChild && 
				!c_el.firstChild.tagName &&  
				prefix==NA.notes_parents[ctype].prefix && 
				NA.notes && 
				NA.notes[ctype] && 
				NA.notes[ctype][id]){
					var noteEl = document.createElement("img");
					noteEl.setAttribute("src","/theme/common/pix/spacer.gif");
					noteEl.className="note";
					noteEl.onclick = new Function("dialog('note', '"+NA.notes_parents[ctype].type+"', '"+id+"');return false;");
					
					noteEl.id = NA.notes_parents[ctype].prefix+id+"_"+id_counter;
					id_counter++
					
					c_el.insertBefore(noteEl,c_el.firstChild);
					
					notes_yahooNote(NA.notes[ctype][id],noteEl.id);
			}
		}
	}
}

function notes_yahooNote(text,id){
	myTooltip = new YAHOO.widget.Tooltip("note_"+id, { 
		context:id, 
		text:text,
		showDelay:500 } );	
}
YAHOO.util.Event.onDOMReady(notes_init);
function Reloader(){
	/* configuration Array
	 *  - compulsory properties: 
	 *  	- cssClass		: string defining css of box to be refreshed
	 *  	- reloadid		: string defining id that has also be set in reloader template. The template figures out what to fetch
	 *  	- interval		: int defining how often box should be refreshed in milliseconds
	 *  - optional properties:
	 *  	- containerid	: if set will optimize speed of boxsearch as only this container will be included in search
	 *  	- page			: if set will refresh box only if this equals window.location.pathname
	 *  	- parentClass	: regexp parent cssClass should match.
	 *  	- parentId		: parent should have this id.
	 */
	this.conf =[
		{
			cssName : "bc bcm_locations bct_show bcmt_locations_show", 
			reloadid : "loc_facts",
			interval : 1000 * 60 * 60 * 5,
			containerid : "content",
			parentId : "loc_facts"
		},
		{
			cssName : "bc bcm_locations bct_show bcmt_locations_show", 
			reloadid : "loc_open",
			interval : 1000 * 60 * 60 * 5,
			containerid : "content",
			parentId : "loc_open"
		},
		{
			cssName : "bc bcm_locations bct_show bcmt_locations_show", 
			reloadid : "loc_details",
			interval : 1000 * 60 * 60 * 5,
			containerid : "content",
			parentId : "loc_details"
		},
		{
			cssName : "bc bcm_blog bct_list bcmt_blog_list", 
			reloadid : "cncall",
			interval : 1000 * 60,
			containerid : "rightbox",
			parentId : "cncall"
		},
		{
			cssName : "bc bcm_blog bct_list bcmt_blog_list", 
			reloadid : "cncpiccomments",
			interval : 1000 * 60,
			containerid : "rightbox",
			parentId : "cncpiccomments"
		},
		{
			cssName : "bc bcm_blog bct_list bcmt_blog_list", 
			reloadid : "cncloccomments",
			interval : 1000 * 60,
			containerid : "rightbox",
			parentId : "cncloccomments"
		},
		{
			cssName : "bc bcm_blog bct_list bcmt_blog_list", 
			reloadid : "cncnewscomments",
			interval : 1000 * 60,
			containerid : "rightbox",
			parentId : "cncnewscomments"
		},
		{
			cssName : "bc bcm_blog bct_list bcmt_blog_list", 
			reloadid : "cnceventcomments",
			interval : 1000 * 60,
			containerid : "rightbox",
			parentId : "cnceventcomments"
		},
		{
			cssName : "bc bcm_user bct_list bcmt_user_list", 
			reloadid : "lastlogin",
			interval : 1000 * 60 * 5,
			parentClass: /\blastlogin\b/,
			containerid : "main"
		},
		{
			cssName : "bc bcm_user bct_list bcmt_user_list", 
			reloadid : "newuser",
			interval : 1000 * 60 * 10,
			parentClass: /\bnewuser\b/,
			containerid : "main"
		},
		{
			cssName : "bc bcm_mailsystem bct_folder bcmt_mailsystem_folder", 
			reloadid : "mailfolder",
			interval : 1000 * 60,
			page : "/community/mailbox.php",
			containerid : "main"
		},
		{
			cssName : "bc bcm_mailsystem bct_list bcmt_mailsystem_list", 
			reloadid : "mailbox",
			interval : 1000 * 60,
			page : "/community/mailbox.php",
			containerid : "main"
		},
		{
			cssName : "bc bcm_base bct_myna bcmt_base_myna", 
			reloadid : "myna",
			interval : 1000 * 60 * 60,
			page : "/community/inviter.php",
			parentId: "myna",
			containerid : "main"
		},
		{
			cssName : "bc bcm_base bct_myna bcmt_base_myna", 
			reloadid : "myna",
			interval : 1000 * 60,
			page : "/community/mailbox.php",
			parentId: "myna",
			containerid : "main"
		},
		{
			cssName : "bc bcm_base bct_myna bcmt_base_myna", 
			reloadid : "myna",
			interval : 1000 * 60 * 3,
			parentId: "myna",
			containerid : "main"
		}/*,
		{
			cssName : "bc bcm_base bct_rightfooter bcmt_base_rightfooter", 
			reloadid : "rightfooter",
			interval : 1000 * 60 * 3,
			parentId: "rightfooter",
			containerid : "main"
		}
		*/
	];
	
	this.ParentRE = /\bbl\b/; //className that Parents should have to confirm box start
		
	//private vars
	this.refreshElms = new Array(); // elements that are found according to config
	this.runningInts = new Array(); // interval references of currently running intervals
}

Reloader.prototype.init = function(){
	var origConf = this.conf;
	this.conf = new Array();
	var dontAdd = new Array();
	
	for (var x = 0; x < origConf.length; x++) {
		//for testing only
		//origConf[x].interval = 1000*10;
		
		if(origConf[x].page && origConf[x].page == window.location.pathname){
			this.conf.push(origConf[x])
			dontAdd.push(origConf[x].reloadid);		
		}
	}
	for (var x = 0; x < origConf.length; x++) {
		if(typeof origConf[x].page=="undefined" || !origConf[x].page){
			var found = false;
			for(var y=0;y<dontAdd.length; y++){
				if(origConf[x].reloadid == dontAdd[y]){
					found = true;
					break;
				}				
			}
			if (!found) {
				this.conf.push(origConf[x])
				dontAdd.push(origConf[x].reloadid);
			}		
		}
	}
	dontAdd = null;
	origConf = null;
	this.setup();
}

Reloader.prototype.setup = function(){
	for(var x=0; x<this.conf.length;x++){
		var current_conf = this.conf[x];
		var elements = new Array();
		elements = YAHOO.util.Dom.getElementsByClassName(current_conf.cssName,"div",(typeof current_conf.containerid=="undefined" || !current_conf.containerid) ? false : current_conf.containerid);
		for(var y=0; y<elements.length;y++){
		 	if(this.ParentRE.test(elements[y].parentNode.className)){
				var add = true;
				if(typeof current_conf.parentClass !="undefined" && current_conf.parentClass && !current_conf.parentClass.test(elements[y].parentNode.className)){
					add = false;
				}
				if(typeof current_conf.parentId !="undefined" && current_conf.parentId && current_conf.parentId!=elements[y].parentNode.id){
					add = false;
				}
				
				if(add)
					this.refreshElms.push({ 
						elm : elements[y].parentNode, 
						interval : current_conf.interval, 
						reloadid  : current_conf.reloadid});	
			}
		}
	}
	
	var me = this;
	var cf;
	for (var x = 0; x < this.refreshElms.length; x++) {
		
		var ref = this.Timeouts(this,x);
				
		this.runningInts.push(ref);	
	}
	
	elements = null;
}

Reloader.prototype.Timeouts = function(me,idx){
	if(YAHOO.env.ua.ie){
		var cf = function(){
			me.refresh(idx,me);
		}
		
		var ref = window.setTimeout(cf, me.refreshElms[idx].interval);
	}else{
		var ref = window.setTimeout(me.refresh, me.refreshElms[idx].interval, idx, me); //only FF, Opera support. no IE
	}
	
	return ref;
}

Reloader.prototype.refresh = function(idx,me){
	me.request(me.refreshElms[idx].reloadid,me.refreshElms[idx].elm,idx);
	me = null;
}

Reloader.prototype.request = function(reloadid,elm,idx,vars){
	var reinit = false;
	if(typeof idx == 'undefined' || idx==null || idx===false){
		reinit = true;
		for(var x=0;x<this.refreshElms.length;x++){
			if(this.refreshElms[x].elm == elm){
				idx = x;
				break;
			}
		}
	}

	var trans_obj = {
		success : this.update,
		failure : function(o){},
		argument: [this,elm,reloadid,idx,reinit]
	};
	
	
	var getvars = 'reloadid='+reloadid;
	var pos = window.location.href.indexOf("?"); 
	if (pos > -1) {
		getvars += "&" + window.location.href.substr(pos + 1);
	}	
	if(typeof vars != "undefined"){
		getvars +="&"+vars;
	}
	
	var transaction = YAHOO.util.Connect.asyncRequest('GET', '/popups/reloader.php?'+getvars, trans_obj);
}

Reloader.prototype.remapElms = function(ref,idx){
	this.refreshElms[idx].elm = null; 
	this.refreshElms[idx].elm = ref;
	var me = this;
	var index = idx;
	try{
		this.Timeouts(this,idx);
		this.runningInts[idx] = ref;
	} finally {
		//me = null;
	}
}

Reloader.prototype.update = function(response){
	var self = response.argument[0]; //actually "this"
	var elm = response.argument[1]; // reference to the real element in DOM to be refreshed
	var reloadid = response.argument[2]; // 
	var idx = response.argument[3]; // current index of refreshing element
	var reinit = response.argument[4]; 
	var html = response.responseText.replace(/[\n\r\t]/g,'');
	html = html.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
	//console.log(html);	
	
	//replace writedate function with parsed date
	var regexpstr = "<script[^\\v]*?writedate\\((\\d+),'(.*?)',(.*?)\\);[^\\v]*?\\/script><noscript>[^\\v]*?\\/noscript>"; //regexp for datescript
	var re = new RegExp(regexpstr,"gi");
	var re2 = new RegExp(regexpstr,"i");
	var dualscript = /\/script>[^\v]*?<script/i;
	var res;
	var newres;
	while (res = re.exec(html)) {
		//if we find something like <script>...</script> <script>...</script><noscript>...</noscript> which regexp does, we have to eliminate first script
		while(res && dualscript.test(res[0])){
			newres = res[0].replace(/<script[^\v]*?<\/script>/i,"");
			res = re2.exec(newres);
		}
		var d = returndate(parseInt(res[1]), res[2], parseInt(res[3]));
		
		var reg = new RegExp(res[0].replace(/[^A-Za-z0-9<>= ]/g, '[^\v]'),"g");
		html = html.replace(reg,d)
	}
	
			
	//rerender email adresses if found
	var t = /<script[^\v]*?\/\*reloader_reexec\*\/([^\v]*?)<\/script>/gi;
	var emails = new Array();
	while (res = t.exec(html)) {
		emails.push(res[1]); //need to eval this later, ie. after new html is in DOM
		var re = new RegExp(RegExp.escape(res[0]),"g");
		html = html.replace(re, '');		
	}
	
	
	
	
	//strip remaining js. NA.content is already set, forms already initialized.
	//TODO: maybe leave tagging, if we reload picturebox. not testet
	html = html.replace(/<script[^\v]*?\/script>/gi,"");
			
	if (html && elm.parentNode) {
		var newElm = document.createElement("div");
		
		newElm.innerHTML = html;
		var newChild = newElm.firstChild;
		
		//getForm and replace with old form if available
		var newForms = findChildren(newChild,'form','tagName');
				
		if(newForms && newForms.length){
			for(var x=0;x<newForms.length; x++){
				var oldForm = document.getElementById(newForms[x].id);
				
				if(oldForm){
					//purge(oldForm);
					var ref = newForms[x].parentNode.replaceChild(oldForm,newForms[x]);
					ref = null;
				}else{
					//maybe we need more time. try again
					oldForm = $(newForms[x].id);
				
					if (oldForm) {
						var ref = newForms[x].parentNode.replaceChild(oldForm,newForms[x]);
						ref = null;
					}else if(!YAHOO.env.ua.ie && console && console.log){
						console.log(newForms[x].id);
					}
				}
			}
		} 
		
		
		//if (elm.parentNode) { //sometimes this elm is not found
			var ref = elm.parentNode.replaceChild(newChild, elm);
			ref = null;
			for(var x=0;x<emails.length;x++){
				eval(emails[x]);
			}
			if(!reinit)
			self.remapElms(newChild, idx);
			
			//re-render FaceBookMarkupLanguage
			if (typeof FB!='undefined' &&  FB &&  FB.XFBML &&  FB.XFBML.Host && FB.XFBML.Host.parseDomTree )
				setTimeout( FB.XFBML.Host.parseDomTree, 100 );
		//}
	}else
	if(!elm.parentNode){
		//console.log("not found "+reloadid);
	}
	
	if(reinit){
		for(var x=0;x<r.runningInts.length;x++){
			var t = r.runningInts[x];
			if(t && !isNaN(t))
				window.clearTimeout(t);
		}
		r = new Reloader();
		r.init();
	}		
	self = null;
	elm = null;
}
//reloader is started in yahooloader
//for yui2.8
var UploadField = function(){
	// Variable for holding the selected file id.
	this.fileID;
	this.uploader;
	this.fid;
	this.fObj;
	//id's for various elements
	this.containerId;
	this.overlayId;
	this.selectId;
	this.selectLinkId;
	this.uploadLinkId;
	this.progressReport;
	this.progressId;
	this.uploadFileId;
	this.isUploaded = false;
	this.isEmpty = true;
	this.isUploading = false;
	this.overlayWidth = 110;
	this.overlayHeight = 20;
	this.uploadLink = false;//should uploadlink be shown
	this.buttonSprite = "/direct/images/fileupload.png"; //null to show text link
	
};

UploadField.prototype.init = function(fid,filelist){
	
	this.fid = fid;
	this.filelist = filelist;
	
	this.containerId = "uplContainer_"+fid;
	this.overlayId = "uplOverlay_"+fid;
	this.selectId = "uplSelect_"+fid;
	this.selectLinkId = "uplLink_"+fid;
	this.uploadLinkId = "uplUpload_"+fid;
	this.progressId = "uplProgress_"+fid;
	this.uploadFileId = "uplUploadFile_"+fid;
	
}

UploadField.prototype.buildField = function(appendelm){
	// div-frame
	var fr = document.createElement("div"), //css-frame
		topl = document.createElement("div"),
		bottomr = document.createElement("div"),
		bottoml = document.createElement("div"),
		topr = document.createElement("div"),
		up = document.createElement("div"), //container element
		upO = document.createElement("div"), //overlay container
		upH = document.createElement("input"), //hidden field
		upP = document.createElement("div"); //progress field
	
	up.id = this.containerId;
	upO.id = this.overlayId;
	upH.id = this.uploadFileId;
	upP.id = this.progressId;
		
	fr.className = " feltextarea_fr";
	topl.className = "topl";
	bottomr.className = "bottomr";
	bottoml.className = "bottoml";
	topr.className = "topr";
	upP.className = "uplProgress";
	
	upO.style.width = this.overlayWidth+"px";
	upO.style.height = this.overlayHeight+"px";
	
	upH.type = "hidden";
	
	fr.appendChild(topl);
	topl.appendChild(bottomr);
	bottomr.appendChild(bottoml);
	bottomr.appendChild(topr);
	fr.appendChild(topl);
	up.appendChild(upO);
	
	if (!this.buttonSprite) {
		var upS = document.createElement("div");
		upS.id = this.selectId;
		upS.innerHTML = "<a href='#' id='" + this.selectLinkId + "'>Durchsuchen</a>";
		upS.style.overflow = "hidden";
		up.appendChild(upS);
	}			
		
	bottomr.appendChild(upP);
	bottomr.appendChild(up);
	if (this.uploadLink) {
		var upU = document.createElement("a");
		upU.id = this.uploadLinkId;
		upU.innerHTML = "Upload File";
		bottomr.appendChild(upU);
	}
	bottomr.appendChild(upH);
	
	appendelm.appendChild(fr);
	return upH;
	
}

UploadField.prototype.load = function(){
	
	//load swfuploader
	var aURLs = new Array(NA.theme_url+"/lib/yahoo/build/element/element-min.js",
				NA.theme_url+"/lib/yahoo/build/uploader/uploader-min.js");
	
	var uploadSuccessHandler = function(o){		
			//var uiLayer = YAHOO.util.Dom.getRegion(this.selectLinkId);
			//var overlay = YAHOO.util.Dom.get(this.overlayId);
			//YAHOO.util.Dom.setStyle(overlay, 'width', uiLayer.right-uiLayer.left + "px");
			//YAHOO.util.Dom.setStyle(overlay, 'height', uiLayer.bottom-uiLayer.top + "px");
			
			// Custom URL for the uploader swf file (same folder).
			//YAHOO.widget.Uploader.SWFURL = NA.theme_url+"/lib/yahoo/build/uploader/assets/uploader.swf";
			YAHOO.widget.Uploader.SWFURL = "/uploader.swf";
		
		    // Instantiate the uploader and write it to its placeholder div.
			this.uploader = new YAHOO.widget.Uploader(this.overlayId,this.buttonSprite,true);
			this.addHandlers();
	}
	
	if (typeof YAHOO.widget.Uploader == 'undefined' || YAHOO.widget.Uploader == null) {
		YAHOO.util.Get.script(aURLs, {
			onSuccess: uploadSuccessHandler,
			varName: ["YAHOO.widget","YAHOO.widget.Uploader"],
			scope: this
		});
	}else{
		uploadSuccessHandler();
	}
	
}

UploadField.prototype.addHandlers = function(){
	
	this.uploader.addListener('contentReady', function(){
		// Allows the uploader to send log messages to trace, as well as to YAHOO.log
		//uploader.setAllowLogging(true);
		
		// Disallows multiple file selection in "Browse" dialog.
		this.uploader.setAllowMultipleFiles(false);
		
		// New set of file filters.
		//var ff = new Array({description:"Images", extensions:"*.jpg;*.png;*.gif"});
		                   //{description:"Videos", extensions:"*.avi;*.mov;*.mpg"});
		                   
		// Apply new set of file filters to the uploader.
		if(!this.filelist){
			this.filelist = new Array();
		}
		this.uploader.setFileFilters(this.filelist);
	}.bind(this));
	
	
	this.uploader.addListener('fileSelect', function(event){
		for (var file in event.fileList) {
		    if(YAHOO.lang.hasOwnProperty(event.fileList, file)) {
				this.fileID = event.fileList[file].id;
			}
		}
		
		this.progressReport = document.getElementById(this.progressId);
		this.progressReport.innerHTML = event.fileList[this.fileID].name;
		this.isEmpty = false;
	},this,true);
	
	
	this.uploader.addListener('uploadStart', function(event){
		this.progressReport.innerHTML = "Starte upload...";
	}.bind(this));
	
	
	this.uploader.addListener('uploadProgress', function(event){
		prog = Math.round(100*(event["bytesLoaded"]/event["bytesTotal"]));
		this.progressReport.innerHTML = prog + "% hochgeladen...";
	}.bind(this));
	
	
	this.uploader.addListener('uploadCancel', function(event){
		
	});
	
	
	this.uploader.addListener('uploadComplete', function(event){
		this.progressReport.innerHTML = "Upload fertig.";
	}.bind(this));
	
	
	this.uploader.addListener('uploadCompleteData', function(event,self){
		if (event.data) {
			document.getElementById(self.uploadFileId).value = event.data;
			self.isUploaded = true;
		}
	},this);
	
	
	this.uploader.addListener('uploadError', function(event){
		this.progressReport.innerHTML = "Upload fehler.";
	}.bind(this));
	
	
    this.uploader.addListener('rollOver', function(){
		//YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get(this.selectLinkId), 'color', "#FFFFFF");
	}.bind(this));
	
	
    this.uploader.addListener('rollOut', function(){
		//YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get(this.selectLinkId), 'color', "#0000CC");
	}.bind(this));
	
	
    this.uploader.addListener('click', function(){
		
	});


    this.uploader.addListener('uploadResponse', function(){
		this.progressReport = event.data;		
	}.bind(this));
	
	
	//YAHOO.util.Event.addListener(this.uploadLinkId,'click',this.doUpload,this,true);
}

UploadField.prototype.doUpload = function(){
	var file = this.fileID;
	if (file != null) {
		this.uploader.upload(file, "/popups/form_filedispatcher.php", "POST");
		this.isUploading = true;
	}
}

function buildBreadcrumbNavi(){
//	if (window.location.href.indexOf('/home.php')>0) {
//		return;
//	}
	
	var html = new Array(),
		sub = $('breadcrumb'),
		link="",
		text="",
		titleRe = /Nachtagenten\s*-[^-]+-\s*(.+?)(?:(?:\s-\s)|$)/i,
		title="";
	
	var region = get_default(REGIONS,NA.region,'Startseite');
	if(!sub || !region){
		window.setTimeout("buildBreadcrumbNavi()",50);
		return;
	}
	html.push("<a href='/home.php'>"+region+"</a>");
	
	switch(sub.className){
		case "magazin":
			link = "/magazin";
			text = "Magazin";
		break;
		case "fotos":
			link = "/fotos";
			text = "Fotos";
		break;
		case "events":
			link = "/events";
			text = "Events";
		break;
		case "locations":
			link = "/locations";
			text = "Spots";
		break;
		case "community":
			link = "/community";
			text = "Community";
		break;
		case "tickets":
			link = "/tickets";
			text = "Tickets";
		break;
		case "shopping":
			link = "/shopping";
			text = "Shopping";
		break;
		case "myna":
			link = "/myna";
			text = "MY:NA";
		break;
	}
	if(link && text)
		html.push("<a href='"+link+"'>"+text+"</a>");
	
	if( (NA && NA.content && NA.content.cid && NA.content.ctype) &&
		(NA.breadcrumb && (!NA.breadcrumb.forceStatic || NA.breadcrumb.forceStatic==false)) 
	){
			
		var trans_obj = {
				success : breadcrumb_complete,
				failure : function(o){},
				argument: [html]
			},
			getvars = '';
			
		getvars +="ctype="+NA.content.ctype;
		getvars +="&cid="+NA.content.cid;

		var transaction = YAHOO.util.Connect.asyncRequest('GET', '/popups/breadcrumb.php?'+getvars, trans_obj);
	}else{
		html = breadcrumb_getStatic(html);
		html = breadcrumb_getTabHeading(html);
		breadcrumb_complete({argument:[html]});
	}		
}

function breadcrumb_complete(response){
	var html = response.argument[0],
		div = $('breadcrumb'),
		resp = response.responseText;
	
	if (resp) {
		resp = resp.replace(/[\n\r\t]/g, '').replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "");
		resp = parseJSON(resp);
		html = html.concat(resp);
	}	
	
	html = breadcrumb_getStaticPost(html);
	
	div.innerHTML = "Du bist: "+html.join(" &rsaquo;&rsaquo; ");
}

function breadcrumb_getTabHeading(html){

	var bl = YAHOO.util.Dom.getElementsByClassName('bc', 'div', 'content');
	
	//get box
	if (bl.length == 1){ 
		bl = bl[0];
	
		//get heading
		for (var x = 0; x < bl.childNodes.length; x++) {
			if(bl.childNodes[x].tagName == 'H2'){
				html.push(bl.childNodes[x].innerHTML);
				break;
			}
		}
	}
		
	
	return html;
}

function breadcrumb_getStatic(html){

	if(NA.breadcrumb && NA.breadcrumb.length){
		for (var x = 0; x < NA.breadcrumb.length; x++) {
			html.push(NA.breadcrumb[x]);
		}	
	}
		
	return html;
}

function breadcrumb_getStaticPost(html){

	if(NA.breadcrumb_post && NA.breadcrumb_post.length){
		for (var x = 0; x < NA.breadcrumb_post.length; x++) {
			html.push(NA.breadcrumb_post[x]);
		}	
	}
		
	return html;
}
