

/* include js file: /js/swfObject/swfobject.js */

/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();

/* include js file: /js/swfAddress/swfaddress.js */

/** * SWFAddress 2.4: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/> * * SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> * */if(typeof asual=="undefined"){var asual={}}if(typeof asual.util=="undefined"){asual.util={}}asual.util.Browser=new function(){var b=navigator.userAgent.toLowerCase(),a=/webkit/.test(b),e=/opera/.test(b),c=/msie/.test(b)&&!/opera/.test(b),d=/mozilla/.test(b)&&!/(compatible|webkit)/.test(b),f=parseFloat(c?b.substr(b.indexOf("msie")+4):(b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]);this.toString=function(){return"[class Browser]"};this.getVersion=function(){return f};this.isMSIE=function(){return c};this.isSafari=function(){return a};this.isOpera=function(){return e};this.isMozilla=function(){return d}};asual.util.Events=new function(){var c="DOMContentLoaded",j="onstop",k=window,h=document,b=[],a=asual.util,e=a.Browser,d=e.isMSIE(),g=e.isSafari();this.toString=function(){return"[class Events]"};this.addListener=function(n,l,m){b.push({o:n,t:l,l:m});if(!(l==c&&(d||g))){if(n.addEventListener){n.addEventListener(l,m,false)}else{if(n.attachEvent){n.attachEvent("on"+l,m)}}}};this.removeListener=function(p,m,n){for(var l=0,o;o=b[l];l++){if(o.o==p&&o.t==m&&o.l==n){b.splice(l,1);break}}if(!(m==c&&(d||g))){if(p.removeEventListener){p.removeEventListener(m,n,false)}else{if(p.detachEvent){p.detachEvent("on"+m,n)}}}};var i=function(){for(var m=0,l;l=b[m];m++){if(l.t!=c){a.Events.removeListener(l.o,l.t,l.l)}}};var f=function(){if(h.readyState=="interactive"){function l(){h.detachEvent(j,l);i()}h.attachEvent(j,l);k.setTimeout(function(){h.detachEvent(j,l)},0)}};if(d||g){(function(){try{if((d&&h.body)||!/loaded|complete/.test(h.readyState)){h.documentElement.doScroll("left")}}catch(m){return setTimeout(arguments.callee,0)}for(var l=0,m;m=b[l];l++){if(m.t==c){m.l.call(null)}}})()}if(d){k.attachEvent("onbeforeunload",f)}this.addListener(k,"unload",i)};asual.util.Functions=new function(){this.toString=function(){return"[class Functions]"};this.bind=function(f,b,e){for(var c=2,d,a=[];d=arguments[c];c++){a.push(d)}return function(){return f.apply(b,a)}}};var SWFAddressEvent=function(d){this.toString=function(){return"[object SWFAddressEvent]"};this.type=d;this.target=[SWFAddress][0];this.value=SWFAddress.getValue();this.path=SWFAddress.getPath();this.pathNames=SWFAddress.getPathNames();this.parameters={};var c=SWFAddress.getParameterNames();for(var b=0,a=c.length;b<a;b++){this.parameters[c[b]]=SWFAddress.getParameter(c[b])}this.parameterNames=c};SWFAddressEvent.INIT="init";SWFAddressEvent.CHANGE="change";SWFAddressEvent.INTERNAL_CHANGE="internalChange";SWFAddressEvent.EXTERNAL_CHANGE="externalChange";var SWFAddress=new function(){var _getHash=function(){var index=_l.href.indexOf("#");return index!=-1?_ec(_dc(_l.href.substr(index+1))):""};var _getWindow=function(){try{top.document;return top}catch(e){return window}};var _strictCheck=function(value,force){if(_opts.strict){value=force?(value.substr(0,1)!="/"?"/"+value:value):(value==""?"/":value)}return value};var _ieLocal=function(value,direction){return(_msie&&_l.protocol=="file:")?(direction?_value.replace(/\?/,"%3F"):_value.replace(/%253F/,"?")):value};var _searchScript=function(el){if(el.childNodes){for(var i=0,l=el.childNodes.length,s;i<l;i++){if(el.childNodes[i].src){_url=String(el.childNodes[i].src)}if(s=_searchScript(el.childNodes[i])){return s}}}};var _titleCheck=function(){if(_d.title!=_title&&_d.title.indexOf("#")!=-1){_d.title=_title}};var _listen=function(){if(!_silent){var hash=_getHash();var diff=!(_value==hash);if(_safari&&_version<523){if(_length!=_h.length){_length=_h.length;if(typeof _stack[_length-1]!=UNDEFINED){_value=_stack[_length-1]}_update.call(this,false)}}else{if(_msie&&diff){if(_version<7){_l.reload()}else{this.setValue(hash)}}else{if(diff){_value=hash;_update.call(this,false)}}}if(_msie){_titleCheck.call(this)}}};var _bodyClick=function(e){if(_popup.length>0){var popup=window.open(_popup[0],_popup[1],eval(_popup[2]));if(typeof _popup[3]!=UNDEFINED){eval(_popup[3])}}_popup=[]};var _swfChange=function(){for(var i=0,id,obj,value=SWFAddress.getValue(),setter="setSWFAddressValue";id=_ids[i];i++){obj=document.getElementById(id);if(obj){if(obj.parentNode&&typeof obj.parentNode.so!=UNDEFINED){obj.parentNode.so.call(setter,value)}else{if(!(obj&&typeof obj[setter]!=UNDEFINED)){var objects=obj.getElementsByTagName("object");var embeds=obj.getElementsByTagName("embed");obj=((objects[0]&&typeof objects[0][setter]!=UNDEFINED)?objects[0]:((embeds[0]&&typeof embeds[0][setter]!=UNDEFINED)?embeds[0]:null))}if(obj){obj[setter](value)}}}else{if(obj=document[id]){if(typeof obj[setter]!=UNDEFINED){obj[setter](value)}}}}};var _jsDispatch=function(type){this.dispatchEvent(new SWFAddressEvent(type));type=type.substr(0,1).toUpperCase()+type.substr(1);if(typeof this["on"+type]==FUNCTION){this["on"+type]()}};var _jsInit=function(){if(_util.Browser.isSafari()){_d.body.addEventListener("click",_bodyClick)}_jsDispatch.call(this,"init")};var _jsChange=function(){_swfChange();_jsDispatch.call(this,"change")};var _update=function(internal){_jsChange.call(this);if(internal){_jsDispatch.call(this,"internalChange")}else{_jsDispatch.call(this,"externalChange")}_st(_functions.bind(_track,this),10)};var _track=function(){var value=(_l.pathname+(/\/$/.test(_l.pathname)?"":"/")+this.getValue()).replace(/\/\//,"/").replace(/^\/$/,"");var fn=_t[_opts.tracker];if(typeof fn==FUNCTION){fn(value)}else{if(typeof _t.pageTracker!=UNDEFINED&&typeof _t.pageTracker._trackPageview==FUNCTION){_t.pageTracker._trackPageview(value)}else{if(typeof _t.urchinTracker==FUNCTION){_t.urchinTracker(value)}}}};var _htmlWrite=function(){var doc=_frame.contentWindow.document;doc.open();doc.write("<html><head><title>"+_d.title+"</title><script>var "+ID+' = "'+_getHash()+'";<\/script></head></html>');doc.close()};var _htmlLoad=function(){var win=_frame.contentWindow;var src=win.location.href;_value=(typeof win[ID]!=UNDEFINED?win[ID]:"");if(_value!=_getHash()){_update.call(SWFAddress,false);_l.hash=_ieLocal(_value,TRUE)}};var _load=function(){if(!_loaded){_loaded=TRUE;if(_msie&&_version<8){var frameset=_d.getElementsByTagName("frameset")[0];_frame=_d.createElement((frameset?"":"i")+"frame");if(frameset){frameset.insertAdjacentElement("beforeEnd",_frame);frameset[frameset.cols?"cols":"rows"]+=",0";_frame.src="javascript:false";_frame.noResize=true;_frame.frameBorder=_frame.frameSpacing=0}else{_frame.src="javascript:false";_frame.style.display="none";_d.body.insertAdjacentElement("afterBegin",_frame)}_st(function(){_events.addListener(_frame,"load",_htmlLoad);if(typeof _frame.contentWindow[ID]==UNDEFINED){_htmlWrite()}},50)}else{if(_safari){if(_version<418){_d.body.innerHTML+='<form id="'+ID+'" style="position:absolute;top:-9999px;" method="get"></form>';_form=_d.getElementById(ID)}if(typeof _l[ID]==UNDEFINED){_l[ID]={}}if(typeof _l[ID][_l.pathname]!=UNDEFINED){_stack=_l[ID][_l.pathname].split(",")}}}_st(_functions.bind(function(){_jsInit.call(this);_jsChange.call(this);_track.call(this)},this),1);if(_msie&&_version>=8){_d.body.onhashchange=_functions.bind(_listen,this);_si(_functions.bind(_titleCheck,this),50)}else{_si(_functions.bind(_listen,this),50)}}};var ID="swfaddress",FUNCTION="function",UNDEFINED="undefined",TRUE=true,FALSE=false,_util=asual.util,_browser=_util.Browser,_events=_util.Events,_functions=_util.Functions,_version=_browser.getVersion(),_msie=_browser.isMSIE(),_mozilla=_browser.isMozilla(),_opera=_browser.isOpera(),_safari=_browser.isSafari(),_supported=FALSE,_t=_getWindow(),_d=_t.document,_h=_t.history,_l=_t.location,_si=setInterval,_st=setTimeout,_dc=decodeURI,_ec=encodeURI,_frame,_form,_url,_title=_d.title,_length=_h.length,_silent=FALSE,_loaded=FALSE,_justset=TRUE,_juststart=TRUE,_ref=this,_stack=[],_ids=[],_popup=[],_listeners={},_value=_getHash(),_opts={history:TRUE,strict:TRUE};if(_msie&&_d.documentMode&&_d.documentMode!=_version){_version=_d.documentMode!=8?7:8}_supported=(_mozilla&&_version>=1)||(_msie&&_version>=6)||(_opera&&_version>=9.5)||(_safari&&_version>=312);if(_supported){if(_opera){history.navigationMode="compatible"}for(var i=1;i<_length;i++){_stack.push("")}_stack.push(_getHash());if(_msie&&_l.hash!=_getHash()){_l.hash="#"+_ieLocal(_getHash(),TRUE)}_searchScript(document);var _qi=_url?_url.indexOf("?"):-1;if(_qi!=-1){var param,params=_url.substr(_qi+1).split("&");for(var i=0,p;p=params[i];i++){param=p.split("=");if(/^(history|strict)$/.test(param[0])){_opts[param[0]]=(isNaN(param[1])?/^(true|yes)$/i.test(param[1]):(parseInt(param[1])!=0))}if(/^tracker$/.test(param[0])){_opts[param[0]]=param[1]}}}if(_msie){_titleCheck.call(this)}if(window==_t){_events.addListener(document,"DOMContentLoaded",_functions.bind(_load,this))}_events.addListener(_t,"load",_functions.bind(_load,this))}else{if((!_supported&&_l.href.indexOf("#")!=-1)||(_safari&&_version<418&&_l.href.indexOf("#")!=-1&&_l.search!="")){_d.open();_d.write('<html><head><meta http-equiv="refresh" content="0;url='+_l.href.substr(0,_l.href.indexOf("#"))+'" /></head></html>');_d.close()}else{_track()}}this.toString=function(){return"[class SWFAddress]"};this.back=function(){_h.back()};this.forward=function(){_h.forward()};this.up=function(){var path=this.getPath();this.setValue(path.substr(0,path.lastIndexOf("/",path.length-2)+(path.substr(path.length-1)=="/"?1:0)))};this.go=function(delta){_h.go(delta)};this.href=function(url,target){target=typeof target!=UNDEFINED?target:"_self";if(target=="_self"){self.location.href=url}else{if(target=="_top"){_l.href=url}else{if(target=="_blank"){window.open(url)}else{_t.frames[target].location.href=url}}}};this.popup=function(url,name,options,handler){try{var popup=window.open(url,name,eval(options));if(typeof handler!=UNDEFINED){eval(handler)}}catch(ex){}_popup=arguments};this.getIds=function(){return _ids};this.getId=function(index){return _ids[0]};this.setId=function(id){_ids[0]=id};this.addId=function(id){this.removeId(id);_ids.push(id)};this.removeId=function(id){for(var i=0;i<_ids.length;i++){if(id==_ids[i]){_ids.splice(i,1);break}}};this.addEventListener=function(type,listener){if(typeof _listeners[type]==UNDEFINED){_listeners[type]=[]}_listeners[type].push(listener)};this.removeEventListener=function(type,listener){if(typeof _listeners[type]!=UNDEFINED){for(var i=0,l;l=_listeners[type][i];i++){if(l==listener){break}}_listeners[type].splice(i,1)}};this.dispatchEvent=function(event){if(this.hasEventListener(event.type)){event.target=this;for(var i=0,l;l=_listeners[event.type][i];i++){l(event)}return TRUE}return FALSE};this.hasEventListener=function(type){return(typeof _listeners[type]!=UNDEFINED&&_listeners[type].length>0)};this.getBaseURL=function(){var url=_l.href;if(url.indexOf("#")!=-1){url=url.substr(0,url.indexOf("#"))}if(url.substr(url.length-1)=="/"){url=url.substr(0,url.length-1)}return url};this.getStrict=function(){return _opts.strict};this.setStrict=function(strict){_opts.strict=strict};this.getHistory=function(){return _opts.history};this.setHistory=function(history){_opts.history=history};this.getTracker=function(){return _opts.tracker};this.setTracker=function(tracker){_opts.tracker=tracker};this.getTitle=function(){return _d.title};this.setTitle=function(title){if(!_supported){return null}if(typeof title==UNDEFINED){return}if(title=="null"){title=""}title=_dc(title);_st(function(){_title=_d.title=title;if(_juststart&&_frame&&_frame.contentWindow&&_frame.contentWindow.document){_frame.contentWindow.document.title=title;_juststart=FALSE}if(!_justset&&_mozilla){_l.replace(_l.href.indexOf("#")!=-1?_l.href:_l.href+"#")}_justset=FALSE},10)};this.getStatus=function(){return _t.status};this.setStatus=function(status){if(!_supported){return null}if(typeof status==UNDEFINED){return}if(status=="null"){status=""}status=_dc(status);if(!_safari){status=_strictCheck((status!="null")?status:"",TRUE);if(status=="/"){status=""}if(!(/http(s)?:\/\//.test(status))){var index=_l.href.indexOf("#");status=(index==-1?_l.href:_l.href.substr(0,index))+"#"+status}_t.status=status}};this.resetStatus=function(){_t.status=""};this.getValue=function(){if(!_supported){return null}return _dc(_strictCheck(_ieLocal(_value,FALSE),FALSE))};this.setValue=function(value){if(!_supported){return null}if(typeof value==UNDEFINED){return}if(value=="null"){value=""}value=_ec(_dc(_strictCheck(value,TRUE)));if(value=="/"){value=""}if(_value==value){return}_justset=TRUE;_value=value;_silent=TRUE;_update.call(SWFAddress,true);_stack[_h.length]=_value;if(_safari){if(_opts.history){_l[ID][_l.pathname]=_stack.toString();_length=_h.length+1;if(_version<418){if(_l.search==""){_form.action="#"+_value;_form.submit()}}else{if(_version<523||_value==""){var evt=_d.createEvent("MouseEvents");evt.initEvent("click",TRUE,TRUE);var anchor=_d.createElement("a");anchor.href="#"+_value;anchor.dispatchEvent(evt)}else{_l.hash="#"+_value}}}else{_l.replace("#"+_value)}}else{if(_value!=_getHash()){if(_opts.history){_l.hash="#"+_dc(_ieLocal(_value,TRUE))}else{_l.replace("#"+_dc(_value))}}}if((_msie&&_version<8)&&_opts.history){_st(_htmlWrite,50)}if(_safari){_st(function(){_silent=FALSE},1)}else{_silent=FALSE}};this.getPath=function(){var value=this.getValue();if(value.indexOf("?")!=-1){return value.split("?")[0]}else{if(value.indexOf("#")!=-1){return value.split("#")[0]}else{return value}}};this.getPathNames=function(){var path=this.getPath(),names=path.split("/");if(path.substr(0,1)=="/"||path.length==0){names.splice(0,1)}if(path.substr(path.length-1,1)=="/"){names.splice(names.length-1,1)}return names};this.getQueryString=function(){var value=this.getValue(),index=value.indexOf("?");if(index!=-1&&index<value.length){return value.substr(index+1)}};this.getParameter=function(param){var value=this.getValue();var index=value.indexOf("?");if(index!=-1){value=value.substr(index+1);var p,params=value.split("&"),i=params.length,r=[];while(i--){p=params[i].split("=");if(p[0]==param){r.push(p[1])}}if(r.length!=0){return r.length!=1?r:r[0]}}};this.getParameterNames=function(){var value=this.getValue();var index=value.indexOf("?");var names=[];if(index!=-1){value=value.substr(index+1);if(value!=""&&value.indexOf("=")!=-1){var params=value.split("&"),i=0;while(i<params.length){names.push(params[i].split("=")[0]);i++}}}return names};this.onInit=null;this.onChange=null;this.onInternalChange=null;this.onExternalChange=null;(function(){var _args;if(typeof FlashObject!=UNDEFINED){SWFObject=FlashObject}if(typeof SWFObject!=UNDEFINED&&SWFObject.prototype&&SWFObject.prototype.write){var _s1=SWFObject.prototype.write;SWFObject.prototype.write=function(){_args=arguments;if(this.getAttribute("version").major<8){this.addVariable("$swfaddress",SWFAddress.getValue());((typeof _args[0]=="string")?document.getElementById(_args[0]):_args[0]).so=this}var success;if(success=_s1.apply(this,_args)){_ref.addId(this.getAttribute("id"))}return success}}if(typeof swfobject!=UNDEFINED){var _s2r=swfobject.registerObject;swfobject.registerObject=function(){_args=arguments;_s2r.apply(this,_args);_ref.addId(_args[0])};var _s2c=swfobject.createSWF;swfobject.createSWF=function(){_args=arguments;var swf=_s2c.apply(this,_args);if(swf){_ref.addId(_args[0].id)}return swf};var _s2e=swfobject.embedSWF;swfobject.embedSWF=function(){_args=arguments;if(typeof _args[8]==UNDEFINED){_args[8]={}}if(typeof _args[8].id==UNDEFINED){_args[8].id=_args[1]}_s2e.apply(this,_args);_ref.addId(_args[8].id)}}if(typeof UFO!=UNDEFINED){var _u=UFO.create;UFO.create=function(){_args=arguments;_u.apply(this,_args);_ref.addId(_args[0].id)}}if(typeof AC_FL_RunContent!=UNDEFINED){var _a=AC_FL_RunContent;AC_FL_RunContent=function(){_args=arguments;_a.apply(this,_args);for(var i=0,l=_args.length;i<l;i++){if(_args[i]=="id"){_ref.addId(_args[i+1])}}}}})()};

/* include js file: /js/jQuery/jquery.menus.min.js */

(function($){$.fn.ddMenu=function(options){DDMenu(this,options);};function setCookie(c_name,value,expiredays){var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+'='+escape(value)+
((expiredays==null)?'':';expires='+exdate.toGMTString())+';path=/';}
function getCookie(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+'=');if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(';',c_start);if(c_end==-1)c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}
return'';}
function ieTrim(txt){if(txt.charCodeAt(txt.length-1)==160){txt=txt.substring(0,(txt.length-1));}
return txt;}
function cookieManage(txt){var ns3=getCookie('nsMenu3');var ns2=getCookie('nsMenu2');var ns1=getCookie('nsMenu1');if(ns1!=''){if(ns2!=''){setCookie('nsMenu3',ieTrim(jQuery.trim(txt)),10);}else{setCookie('nsMenu2',ieTrim(jQuery.trim(txt)),10);setCookie('nsMenu3',0,0);}}else{setCookie('nsMenu1',ieTrim(jQuery.trim(txt),10));setCookie('nsMenu2',0,0);setCookie('nsMenu3',0,0);}}
function removeCookies(txt){txt=ieTrim(jQuery.trim(txt));var ns3=getCookie('nsMenu3');var ns2=getCookie('nsMenu2');var ns1=getCookie('nsMenu1');if(ns3==txt){setCookie('nsMenu3',0,0);}
if(ns2==txt){setCookie('nsMenu2',0,0);setCookie('nsMenu3',0,0);}
if(txt==ns1||txt=='1'){setCookie('nsMenu1',0,0);setCookie('nsMenu2',0,0);setCookie('nsMenu3',0,0);}}
function DDMenu(root,opts){opts=options(opts);var dis=false;function object(parent){function F(){}
F.prototype=parent;return new F();}
function disable(val){if(val!=2)
dis=val;return dis;}
function options(opts){var that=object($.fn.ddMenu.defaults);for(var i in opts){that[i]=opts[i];}
return that;}
function init(){disable(false);var self=$(root).wrap('<div class="'+opts.menuClass+'"><div class="'+opts.menuPanelClass+'"><div class="'+opts.scrollPaneClass+'"></div></div></div>');var pane=self.parents('.'+opts.scrollPaneClass);var panel=self.parents('.'+opts.menuPanelClass);var menu=self.parents('.'+opts.menuClass);decorateMenu(self);setOuterHeight(panel,menu.parent().height(),true);setOuterWidth(panel,menu.width(),true);self.find('.'+opts.itemClass+' > *:nth-child(1)').wrap('<div class="'+opts.labelClass+'"></div>').addClass(opts.textClass);self.find('.'+opts.itemClass+':has(.'+opts.subMenuClass+') > div.'+opts.labelClass).each(function(){var label=$(this);var height=label.height();label.append('<div class="'+opts.iconClass+'"> </div>');label.height(height);var iconDiv=label.children('.'+opts.iconClass);setOuterHeight(iconDiv,height,true);setOuterWidth(label.children('.'+opts.textClass),label.outerWidth()-iconDiv.outerWidth(true));});self.find('.'+opts.labelClass).each(function(){addInteraction($(this));});self.find('.'+opts.subMenuClass).hide();addTitle(panel,opts.rootTitle,false,true);setScrollPaneDimensions(panel);addScrollButtons(pane);choosePanel(menu);highlight(menu);function decorateMenu(element){if($.browser.msie){element.addClass(opts.subMenuClass).css('position','absolute');}else{element.addClass(opts.subMenuClass).css('position','relative');}
element.children().addClass(opts.itemClass).each(function(){if($(this).children().size()>1){decorateMenu($(this).children(':last'));}});}}
function drillDown(item){var panel=cloneSubmenu(item);var button=item.children(':eq(0)');var title=button.text();var href=button.find('a').clone().removeClass(opts.textClass).addClass(opts.titleLinkClass);var dir=opts.inDirection?opts.inDirection:opts.direction;var menu=item.parents('.'+opts.menuClass).append(panel);var newHeight;var menuHeight=menu.parent().height();var len=panel.find('li:eq(0)').nextAll().length;var childHeight=50+((len+1)*30);newHeight=childHeight;if(childHeight!=menuHeight){var size=menu.find('.bdc-dd-menu-panel').length;setOuterHeight(menu.parent(),newHeight,true);setOuterHeight(menu.find('div:eq(0)'),newHeight,true);setOuterHeight(menu,newHeight,true);}
var size=menu.find('.bdc-dd-menu-panel').length;var topPos=0;for(var i=1;i<size;i++){topPos+=newHeight;var pan=menu.find('.bdc-dd-menu-panel:eq('+i+')');setOuterHeight(pan.find('.bdc-dd-scroll-pane'),newHeight,true);setOuterHeight(pan,newHeight,true);pan.css('top','-'+topPos+'px');}
setOuterWidth(panel,menu.width(),true);var pos=getPanelPosition(menu,panel,dir);panel.css({position:'relative',left:pos.outside.left,top:pos.outside.top});panel.show();addTitle(panel,title,href,false);setScrollPaneDimensions(panel);addScrollButtons(panel.children('.'+opts.scrollPaneClass));highlight(item.parents('.'+opts.menuClass));panel.animate({left:pos.inside.left,top:pos.inside.top},opts.inDuration?opts.inDuration:opts.duration,opts.inEasing?opts.inEasing:opts.easing);}
function drillTop(panel){var menu=panel.parent();removeCookies('1');$(menu).find(':eq(0)').nextAll().remove();var newHeight;var menuHeight=menu.parent().height();var childHeight=50+((menu.find('li:eq(0)').nextAll().length+1)*30);newHeight=(childHeight>opts.minHeight)?childHeight:menuHeight;setOuterHeight(menu.parent(),newHeight,true);setOuterHeight(menu.find('div:eq(0)'),newHeight,true);setOuterHeight(menu,newHeight,true);}
function drillUp(panel){var menu=panel.parent();var dir=opts.outDirection?opts.outDirection:opts.direction;var pos=getPanelPosition(menu,panel,dir);removeCookies(panel.find('.bdc-dd-title-label:first').text());var newHeight;var menuHeight=menu.parent().height();var childHeight=50+((panel.prev().find('li:eq(0)').nextAll().length+1)*30);newHeight=childHeight;setOuterWidth(panel,menu.width(),true);function fixHeightPos(){setOuterHeight(menu.parent(),newHeight,true);setOuterHeight(menu.find('div:eq(0)'),newHeight,true);setOuterHeight(menu,newHeight,true);var size=menu.find('.bdc-dd-menu-panel').length;var topPos=0;for(var i=1;i<size-1;i++){topPos+=newHeight;var pan=menu.find('.bdc-dd-menu-panel:eq('+i+')');setOuterHeight(pan,newHeight,true);setOuterHeight(pan.find('.bdc-dd-scroll-pane'),newHeight,true);pan.css('top','-'+topPos+'px');}}
disable(true);panel.animate({left:pos.outside.left,top:pos.outside.top},opts.outDuration?opts.outDuration:opts.duration,opts.outEasing?opts.outEasing:opts.easing,function(){fixHeightPos();panel.remove();disable(false);});}
function choosePanel(menu){if(opts.initial!=null){var parts=opts.initial.split(opts.separator);var current=menu.children(':eq(0)');for(var i=0;i<parts.length;i++){if(i<parts.length-1){var label=current.find('.'+opts.labelClass+' .'+opts.textClass+":contains('"+parts[i]+"')");if(label){var submenu=label.parents('.'+opts.itemClass).children('.'+opts.subMenuClass);if(submenu){var panel=cloneSubmenu(submenu.parent());menu.append(panel);setOuterHeight(panel,menu.height(),true);setOuterWidth(panel,menu.width(),true);var dir=opts.inDirection?opts.inDirection:opts.direction;var pos=getPanelPosition(menu,panel,dir);panel.css({position:'relative',top:pos.inside.top,left:pos.inside.left});panel.show();addTitle(panel,parts[i],false,false);setScrollPaneDimensions(panel);addScrollButtons(panel.children('.'+opts.scrollPaneClass));current=panel;}}}}}}
function getPanelPosition(menu,panel,dir){var left,top;var index=panel.prevAll().size();var offset=(panel.outerHeight()+getMarginGap(panel))*index;switch(dir){case'west':left=-panel.outerWidth(true);top=-offset;break;case'north':left=0;top=-(menu.outerHeight()+offset);break;case'south':left=0;top=panel.outerHeight(true)-offset;break;default:left=menu.outerWidth();top=-offset;break;}
return{outside:{top:top,left:left},inside:{top:-offset,left:0}}}
function getMarginGap(panel){var top=getWidth(panel,'margin-top');var bottom=getWidth(panel,'margin-bottom');return top>bottom?top:bottom;}
function highlight(menu){if(opts.initial!=null&&menu.find('.'+opts.labelInitialClass).size()==0){var parts=opts.initial.split(opts.separator);var current=menu.children('.'+opts.menuPanelClass+':eq(0)');for(var i=0,count=parts.length;i<count;i++){if(i==count-1){current.children('.'+opts.scrollPaneClass).children('.'+opts.subMenuClass).children('.'+opts.itemClass).children('.'+opts.labelClass).each(function(){if($(this).find('.'+opts.textClass).text()==parts[i]){replaceClass($(this),opts.labelClass,opts.labelInitialClass);$(this).hover(function(){replaceClass($(this),opts.labelInitialClass,opts.labelInitialHoverClass);},function(){replaceClass($(this),opts.labelInitialHoverClass,opts.labelInitialClass);});}});}
else{var next=current.next();if(!next)
return;var present=false;next.children('.'+opts.titleClass).find('.'+opts.titleLabelClass).each(function(){if($(this).text()==parts[i]){present=true;return false;}});if(!present)
return;else
current=next;}}}}
function cloneSubmenu(item){var panel=$('<div class="'+opts.menuPanelClass+'"><div class="'+opts.scrollPaneClass+'"></div></div>');var menu=item.children('.'+opts.subMenuClass+':last').clone(true).show();panel.children('.'+opts.scrollPaneClass).append(menu);return panel;}
function addTitle(panel,title,href,root){var markup='<div class="'+opts.titleClass+'">';if(!root){markup+='<div class="'+opts.titleIconClass+'"> </div>';markup+='<div class="'+opts.titleIconBackClass+'"> </div>';markup+='<a class="'+opts.titleLinkClass+'"> </a>';}
markup+='<div class="'+opts.titleLabelClass+'">'+title+'</div></div>';panel.prepend(markup);var titleDiv=panel.find('.'+opts.titleClass);if(root){replaceClass(titleDiv,opts.titleClass,opts.titleRootClass);}
else{var label=titleDiv.find('.'+opts.titleLabelClass);var icon=titleDiv.find('.'+opts.titleIconClass);var back=titleDiv.find('.'+opts.titleIconBackClass);var link=titleDiv.find('.'+opts.titleLinkClass);link.replaceWith(href);icon.click(function(){drillTop(panel);return false;});back.click(function(){drillUp(panel);return false;});titleDiv.hover(function(){replaceClass($(this),opts.titleClass,opts.titleHoverClass);},function(){replaceClass($(this),opts.titleHoverClass,opts.titleClass);}).click(function(){});setOuterHeight(icon,label.outerHeight(),true);setOuterWidth(label,titleDiv.outerWidth()-(icon.size()==0?0:icon.outerWidth(true)));label.css('margin-right',icon.outerWidth({margin:true}));}}
function addInteraction(label){if(label.children().size()==1){label.hover(function(){replaceClass($(this),opts.labelClass,opts.labelHoverClass);},function(){replaceClass($(this),opts.labelHoverClass,opts.labelClass);});}
else{var link=label.find('a[href].'+opts.textClass);if(link.size()==1){link.hover(function(){replaceClass($(this),opts.textClass,opts.textHoverClass);},function(){replaceClass($(this),opts.textHoverClass,opts.textClass);}).click(function(){if(!disable(2)){disable(true);cookieManage(label.text());drillDown(label.parent());setTimeout(function(){disable(false);},500);}});label.find('div.'+opts.iconClass).hover(function(){replaceClass($(this),opts.iconClass,opts.iconHoverClass);},function(){replaceClass($(this),opts.iconHoverClass,opts.iconClass);}).click(function(){if(!disable(2)){disable(true);cookieManage(label.text());drillDown(label.parent());setTimeout(function(){disable(false);},500);}});}
else{label.hover(function(){replaceClass($(this),opts.labelClass,opts.labelHoverClass);},function(){replaceClass($(this),opts.labelHoverClass,opts.labelClass);}).click(function(){});}}}
function addScrollButtons(pane){var submenu=pane.children('.'+opts.subMenuClass);if(submenu.height()>pane.height()){var up=$('<div class="'+opts.scrollUpClass+'"> </div>');var down=$('<div class="'+opts.scrollDownClass+'"> </div>');pane.prepend(down).prepend(up);var position=getScrollPosition(pane,submenu);up.hover(function(){replaceClass($(this),opts.scrollUpClass,opts.scrollUpHoverClass);},function(){replaceClass($(this),opts.scrollUpHoverClass,opts.scrollUpClass);replaceClass($(this),opts.scrollUpClickClass,opts.scrollUpClass);up.scroll=false;}).mousedown(function(){replaceClass($(this),opts.scrollUpHoverClass,opts.scrollUpClickClass);up.scroll=true;scrollUp(submenu,up,down,position);}).mouseup(function(){replaceClass($(this),opts.scrollUpClickClass,opts.scrollUpHoverClass);up.scroll=false;});down.hover(function(){replaceClass($(this),opts.scrollDownClass,opts.scrollDownHoverClass);},function(){replaceClass($(this),opts.scrollDownHoverClass,opts.scrollDownClass);replaceClass($(this),opts.scrollDownClickClass,opts.scrollDownClass);down.scroll=false;}).mousedown(function(){replaceClass($(this),opts.scrollDownHoverClass,opts.scrollDownClickClass);down.scroll=true;scrollDown(submenu,up,down,position);}).mouseup(function(){replaceClass($(this),opts.scrollDownClickClass,opts.scrollDownHoverClass);down.scroll=false;});up.hide();}}
function scrollUp(submenu,up,down,position){if(up.scroll){var newTop=getWidth(submenu,'top')+2;submenu.css('top',newTop);down.show();if(newTop>=position.start){submenu.css('top',position.start);up.hide();up.scroll=false;}
else{setTimeout(function(){scrollUp(submenu,up,down,position)},opts.scrollSpeed);}}}
function scrollDown(submenu,up,down,position){if(down.scroll){var newTop=getWidth(submenu,'top')-2;submenu.css('top',newTop);up.show();if(newTop<=position.end){submenu.css('top',position.end);down.hide();down.scroll=false;}
else{setTimeout(function(){scrollDown(submenu,up,down,position)},opts.scrollSpeed);}}}
function getScrollPosition(pane,submenu){var initialTop=getWidth(submenu,'top');var submenuHeight=submenu.outerHeight(true);var paneHeight=pane.height();if(submenuHeight<=paneHeight){return{start:initialTop,end:initialTop};}
return{start:initialTop,end:initialTop-(submenuHeight-paneHeight)};}
function setOuterHeight(elements,height,margins){elements.each(function(){var element=$(this);var outside=0;var props=['border-top-width','border-bottom-width','padding-top','padding-bottom'];if(margins){props.push('margin-top');props.push('margin-bottom');}
for(var i=0;i<props.length;i++){if(props[i]){outside+=getWidth(element,props[i]);}}
var tmp=parseInt($(element).css("height"))-parseInt(outside);element.height(height-outside);});}
function setOuterWidth(elements,width,margins){elements.each(function(){var element=$(this);var outside=0;var props=['border-left-width','border-right-width','padding-left','padding-right'];if(margins){props.push('margin-left');props.push('margin-right');}
for(var i=0;i<props.length;i++){outside+=getWidth(element,props[i]);}
element.width(width-outside);});}
function setScrollPaneDimensions(panel){var pane=panel.children('.'+opts.scrollPaneClass);setOuterHeight(pane,(panel.parent().parent().height()),true);setOuterWidth(pane,panel.width(),true);}
function removeComments(node){var i=0;var children=node.childNodes;var x;while((x=children[i++])){switch(x.nodeType){case 1:removeComments(x);break;case 8:node.removeChild(x);i--;break;}}}
function replaceClass(element,oldClass,newClass){if(element.hasClass(oldClass)){element.removeClass(oldClass);element.addClass(newClass);}}
function getWidth(element,property){if(property!='top'){var value=$(element).css(""+property+"");if(isNaN(value)){value=0;}}else{var value=$(element).css(""+property+"");if(value=="auto"&&property=='top'){value=0;$(element).css({"top":"0px"});}}
if(value!=NaN&&value!=''){return parseInt(value,10);}else{return 0;}}
init();return this;}
$.fn.ddMenu.defaults={minHeight:200,rootTitle:'AES Menu',initial:null,separator:'|',scrollSpeed:10,duration:500,inDuration:null,outDuration:null,easing:'swing',inEasing:null,outEasing:null,direction:'east',inDirection:null,outDirection:null,menuClass:'bdc-dd-menu',menuPanelClass:'bdc-dd-menu-panel',scrollPaneClass:'bdc-dd-scroll-pane',scrollUpClass:'bdc-dd-scroll-up',scrollUpHoverClass:'bdc-dd-scroll-up-hover',scrollUpClickClass:'bdc-dd-scroll-up-click',scrollDownClass:'bdc-dd-scroll-down',scrollDownHoverClass:'bdc-dd-scroll-down-hover',scrollDownClickClass:'bdc-dd-scroll-down-click',subMenuClass:'bdc-dd-sub-menu',titleClass:'bdc-dd-title',titleRootClass:'bdc-dd-title-root',titleHoverClass:'bdc-dd-title-hover',titleRootHoverClass:'bdc-dd-title-root-hover',titleLabelClass:'bdc-dd-title-label',titleIconClass:'bdc-dd-title-icon',titleIconBackClass:'bdc-dd-title-back-icon',titleLinkClass:'bdc-dd-title-link',itemClass:'bdc-dd-item',labelClass:'bdc-dd-label',labelHoverClass:'bdc-dd-label-hover',labelInitialClass:'bdc-dd-label-initial',labelInitialHoverClass:'bdc-dd-label-initial-hover',textClass:'bdc-dd-text',textHoverClass:'bdc-dd-text-hover',iconClass:'bdc-dd-icon',iconHoverClass:'bdc-dd-icon-hover'};})(jQuery);

/* include js file: /js/jQuery/jquery.select.js */

/*jquery.select_skin.js */
/*
 * jQuery select element skinning
 * version: 1.0.2 (17/01/2009)
 * @requires: jQuery v1.2 or later
 * adapted from Derek Harvey code
 *   http://www.lotsofcode.com/javascript-and-ajax/jquery-select-box-skin.htm
 * Licensed under the GPL license:
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Copyright 2009 Colin Verot
 */

function ltrim(str){
    str = str.replace(/&nbsp;/gi, '');
    str = str.replace(/&#32;/gi, '');
	str = str.replace(/\xa0/gi,'');
    str = jQuery.trim(str);
    return str;
}

(function ($) {

    $.fn.select_skin = function (w) {
        return $(this).each(function(i) {
            s = $(this);
            if (s.hasClass('hiddenSelect')) {
            	return null;
            }

            // create the container
            s.wrap('<div class="cmf-skinned-select"></div>');
            c = s.parent();
            c.children().before('<div class="cmf-skinned-text">&nbsp;</div>').each(function() {
                if (this.selectedIndex >= 0) $(this).prev().text(ltrim(this.options[this.selectedIndex].innerHTML.unescapeHTML().strip().replace(/^\s+/,"")));
            });
            c.width(s.outerWidth()-2);
            c.height(s.outerHeight()-2);

            // skin the container
            c.css('background-color', s.css('background-color'));
            c.css('position', 'relative');

            // hide the original select
            s.css( { 'opacity': 0,  'position': 'relative', 'z-index': 100 } );
            s.addClass('hiddenSelect');

            // get and skin the text label
            var t = c.children().prev();
            t.height(c.outerHeight()-s.css('padding-top').replace(/px,*\)*/g,"")-s.css('padding-bottom').replace(/px,*\)*/g,"")-t.css('padding-top').replace(/px,*\)*/g,"")-t.css('padding-bottom').replace(/px,*\)*/g,"")-2);
            t.width(c.innerWidth()-s.css('padding-right').replace(/px,*\)*/g,"")-s.css('padding-left').replace(/px,*\)*/g,"")-t.css('padding-right').replace(/px,*\)*/g,"")-t.css('padding-left').replace(/px,*\)*/g,"")-c.innerHeight());
            t.css('color', s.css('color'));
            t.css('font-size', s.css('font-size'));
            t.css('font-family', s.css('font-family'));
            t.css('font-style', s.css('font-style'));
            t.css( { 'opacity': 100, 'overflow': 'hidden', 'position': 'absolute', 'text-indent': '0px', 'z-index': 1, 'top': 0, 'left': 0 } );

            // add events
            c.children().click(function() {
                t.text(ltrim(this.options[this.selectedIndex].innerHTML.unescapeHTML().strip()));
            });
            c.children().change(function() {
                t.text(ltrim(this.options[this.selectedIndex].innerHTML.unescapeHTML().strip()));
            });
        });
    }
}(jQuery));

/* include js file: /js/jQuery/jquery.treeview.min.js */

;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)
callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)
this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").removeClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}
return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">div").click(function(event){toggler.apply($(this).next());}).add($("a",this));if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}
this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}
if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}
function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}
$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}
function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}
function serialize(){function binary(arg){return arg?1:0;}
var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}
function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}
this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}
break;}
branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}
return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery);

/* include js file: /js/jQuery/jquery.impromptu.min.js */

jQuery.extend({ImpromptuDefaults:{prefix:'jqi',buttons:{Ok:true},loaded:function(){},submit:function(){return true;},callback:function(){},opacity:0.6,zIndex:999,overlayspeed:'slow',promptspeed:'fast',show:'fadeIn',focus:0,useiframe:false,top:'100px',persistent:true},SetImpromptuDefaults:function(o){jQuery.ImpromptuDefaults=jQuery.extend({},jQuery.ImpromptuDefaults,o);},prompt:function(m,o){o=jQuery.extend({},jQuery.ImpromptuDefaults,o);var ie6=(jQuery.browser.msie&&jQuery.browser.version<7);var b=jQuery(document.body);var w=jQuery(window);var msgbox='<div class="'+o.prefix+'box" id="'+o.prefix+'box">';if(o.useiframe&&((jQuery.browser.msie&&jQuery('object, applet').length>0)||ie6))
msgbox+='<iframe src="javascript:;" class="'+o.prefix+'fade" id="'+o.prefix+'fade"></iframe>';else{if(ie6)jQuery('select').css('visibility','hidden');msgbox+='<div class="'+o.prefix+'fade" id="'+o.prefix+'fade"></div>';}
msgbox+='<div class="'+o.prefix+'" id="'+o.prefix+'"><div class="'+o.prefix+'container"><div class="'+o.prefix+'close">X</div><div class="'+o.prefix+'message">'+m+'</div><div class="'+o.prefix+'buttons" id="'+o.prefix+'buttons">';jQuery.each(o.buttons,function(k,v){msgbox+='<button name="'+o.prefix+'button'+k+'" id="'+o.prefix+'button'+k+'" value="'+v+'">'+k+'</button>'});msgbox+='</div></div></div></div>';var jqib=b.append(msgbox).children('#'+o.prefix+'box');var jqi=jqib.children('#'+o.prefix);var jqif=jqib.children('#'+o.prefix+'fade');var getWindowScrollOffset=function(){return(document.documentElement.scrollTop||document.body.scrollTop)+'px';};var getWindowSize=function(){var size={width:window.innerWidth||(window.document.documentElement.clientWidth||window.document.body.clientWidth),height:window.innerHeight||(window.document.documentElement.clientHeight||window.document.body.clientHeight)};return size;};var ie6scroll=function(){jqib.css({top:getWindowScrollOffset()});};var fadeClicked=function(){if(o.persistent){var i=0;jqib.addClass(o.prefix+'warning');var intervalid=setInterval(function(){jqib.toggleClass(o.prefix+'warning');if(i++>1){clearInterval(intervalid);jqib.removeClass(o.prefix+'warning');}},100);}
else removePrompt();};var escapeKeyClosePrompt=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27)removePrompt();};var positionPrompt=function(){var wsize=getWindowSize();jqib.css({position:(ie6)?"absolute":"fixed",height:wsize.height,width:"100%",top:(ie6)?getWindowScrollOffset():0,left:0,right:0,bottom:0});jqif.css({position:"absolute",height:wsize.height,width:"100%",top:0,left:0,right:0,bottom:0});jqi.css({position:"absolute",top:o.top,left:"50%",marginLeft:((((jqi.css("paddingLeft").split("px")[0]*1)+jqi.width())/2)*-1)});};var stylePrompt=function(){jqif.css({zIndex:o.zIndex,display:"none",opacity:o.opacity});jqi.css({zIndex:o.zIndex+1,display:"none"});jqib.css({zIndex:o.zIndex});}
var removePrompt=function(callCallback,clicked,msg){jqi.remove();if(ie6)b.unbind('scroll',ie6scroll);w.unbind('resize',positionPrompt);jqif.fadeOut(o.overlayspeed,function(){jqif.unbind('click',fadeClicked);jqif.remove();if(callCallback)o.callback(clicked,msg);jqib.unbind('keypress',escapeKeyClosePrompt);jqib.remove();if(ie6&&!o.useiframe)jQuery('select').css('visibility','visible');});}
positionPrompt();stylePrompt();jQuery('#'+o.prefix+'buttons').children('button').click(function(){var msg=jqi.children('.'+o.prefix+'container').children('.'+o.prefix+'message');var clicked=o.buttons[jQuery(this).text()];if(o.submit(clicked,msg))
removePrompt(true,clicked,msg);});if(ie6)w.scroll(ie6scroll);jqif.click(fadeClicked);w.resize(positionPrompt);jqib.keypress(escapeKeyClosePrompt);jqi.find('.'+o.prefix+'close').click(removePrompt);jqif.fadeIn(o.overlayspeed);jqi[o.show](o.promptspeed,o.loaded);jqi.find('#'+o.prefix+'buttons button:eq('+o.focus+')').focus();return jqib;}});

/* include js file: /js/jQuery/jquery.flexbox.js */

/// <reference path="jquery-1.2.6-vsdoc.js" />

/*!
* jQuery FlexBox $Version: 0.9.2.2 $
*
* Copyright (c) 2008 Noah Heldman and Fairway Technologies (http://www.fairwaytech.com/flexbox)
* Licensed under Ms-PL (http://www.codeplex.com/flexbox/license)
*
* $Date: 2008-12-17 03:07:04 PM $
* $Rev: 0.9.2.2 $
*/
(function($) {
    $.flexbox = function(inp, o) {

        // TODO: in straight type-ahead mode (showResults: false), if noMatchingResults, dropdown appears after new match
        // TODO: consider having options.mode (select, which replaces html select; combobox; suggest; others?)
        // TODO: highlightMatches uses the case of whatever you typed in to replace the match string, which can look funny
        // TODO: handle pageDown and pageUp keys when scrolling through results
        // TODO: on resize (at least when wrapping within a table), the arrow is pushed down to the next line
        // TODO: check for boundary/value problems (such as minChars of -1) and alert them
        // TODO: add options for advanced paging template
        // TODO: general cleanup and refactoring, commenting
        // TODO: detailed Exception handling, logging
        // TODO: FF2, up arrow from bottom has erratic scroll behavior (if multiple flexboxes on page)
        // TODO: FF2 (and maybe IE7): if maxVisibleRows == number of returned rows, height is a bit off (maybe set to auto?)
        // TODO: escape key only works from input box (this might be okay)
        // TODO: make .getJSON parameters (object and callback function) configurable (e.g. when calling yahoo image search)
        // TODO: escape key reverts to previous value (FF only?) (is this a good thing?)

        // TEST: allow client-side paging (return all data initially, set paging:{pageSize:#}, and ensure maxCacheBytes is > 0)
        // TEST: accept json object as first parameter to flexbox instead of page source, and have it work like a combobox
        // TEST: implement no results template
        // TEST: implement noResultsText and class
        // TEST: watermark color should be configurable (and so should default input color)
        // TEST: exception handling and alerts for common mistakes
        // TEST: first example should use defaults ONLY
        // TEST: add property initialValue, so you can set it when the flexbox loads
        // TEST: handle hidden input value for form submissions
        // TEST: how can we allow programmatically setting the field value (and therefore hidden value).  add jquery function?
        // TEST: use pageSize parameter as threshold to switch from no paging to paging based on results
        // TEST: if you type in an input value that matches the html, it might display html code (try typing "class" in the input box)
        // TEST: don't require all paging subprops (let default override)
        // TEST: when tabbing from one ffb to another, the previous ffb results flash...
        // TEST: IE7: when two non-paging ffbs right after each other, with only a clear-both div between them, the bottom ffb jumps down when selecting a value, then jumps back up on mouseover
        // TEST: FF2, make sure we scroll to top before showing results (maxVisibleRows only)
        // TEST: if maxVisibleRows is hiding the value the user types in to the input, scroll to that value (is this even possible?)
        // TEST: make sure caching supports multiple ffbs uniquely
        // TEST: when entering a number in the paging input box, the results are displayed twice

        var timeout = false, 	// hold timeout ID for suggestion results to appear
        cache = [], 		    // simple array with cacheData key values, MRU is the first element
        cacheData = [],         // associative array holding actual cached data
        cacheSize = 0, 		    // size of cache in bytes (cache up to o.maxCacheBytes bytes)
        delim = '\u25CA',       // use an obscure unicode character (lozenge) as the cache key delimiter
        scrolling = false,
        pageSize = o.paging.pageSize,
        
        $div = $(document.createElement('div')).attr('id', $(inp).attr('id') + '_div');
        $div = $div.css('position', 'relative').css('z-index', 0);  
        
        $div.insertAfter($(inp));

        // The hiddenField MUST be appended to the div before the input, or IE7 does not shift the dropdown below the input field (it overlaps)
        var $hdn = $(document.createElement('input'))
            .attr('type', 'hidden')
            .attr('id', $(inp).attr('id'))
            .attr('name', $(inp).attr('name'))
            .val(o.initialValue)
            .appendTo($div);

        $(inp).remove();        
      
        var $input = $(document.createElement('input'))
            .attr('id', $div.attr('id') + '_input')
            .attr('autocomplete', 'off') 
            .addClass(o.inputClass)
            .css('width', o.width + 'px')
            .appendTo($div)
            .click(function(e) {
                if (o.watermark !== '' && this.value === o.watermark)
                    this.value = '';
                else
                    this.select();
            })
            .focus(function(e) {
                $(this).removeClass('watermark');
            })
            .blur(function(e) {
                setTimeout(function() { if (!$input.attr('active')) hideResults(); }, 200);
            })
            .keypress(processKey);

        if (o.initialValue !== '') {
        	// ZAAN
        	var initValue = o.initialValueText ? o.initialValueText : o.initialValue;
        	/*
            for (var i = 0; i < o.source[o.resultsProperty].length; i++) {
                var data = o.source[o.resultsProperty][i];
                if (data.id == o.initialValue) {
                	initValue = data.name;
                }
            } 
            */       	
            $input.val(initValue).removeClass('watermark');
        } else
            $input.val(o.watermark).addClass('watermark');

        if ($.browser.msie)
            $input.keydown(processKey);

        var arrowWidth = 0;
        if (o.showArrow && o.showResults) {
            var arrowClick = function() {
                if ($ctr.is(':visible')) {
                    hideResults();
                }
                else {
                    $input.focus();
                    if (o.watermark !== '' && $input.val() === o.watermark)
                        $input.val('');
                    else
                        $input.select();
                    if (timeout)
                        clearTimeout(timeout);
                    timeout = setTimeout(function() { flexbox(1, true, o.arrowQuery, true); }, o.queryDelay);
                }
            };
            var $arrow = $(document.createElement('span'))
                .attr('id', $div.attr('id') + '_arrow')
                .addClass(o.arrowClass)
                .addClass('out')
                .hover(function() {
                    $(this).removeClass('out').addClass('over');
                }, function() {
                    $(this).removeClass('over').addClass('out');
                })
                .mousedown(function() {
                    $(this).removeClass('over').addClass('active');
                })
                .mouseup(function() {
                    $(this).removeClass('active').addClass('over');
                })
                .click(arrowClick)
                .appendTo($div);
            arrowWidth = $arrow.outerWidth();
            $input.css('width', (o.width - $arrow.width()) + 'px');
        }
        if (!o.allowInput) $input.click(arrowClick); // simulate <select> behavior

        var left = ($.browser.msie && $.browser.version.substr(0, 1) === '6')
            ? -($input.outerWidth() + arrowWidth)
            : 0;
        var $ctr = $(document.createElement('div'))
            .attr('id', $div.attr('id') + '_ctr')
            .css('width', ($input.outerWidth() + arrowWidth - 2) + 'px') // TODO: The -2 here might be because of the border... try to fix
            .css('top', $input.outerHeight())
            .css('left', left)
            .addClass(o.containerClass)
            .appendTo($div)
            .hide();

        var $content = $(document.createElement('div'))
            .addClass(o.contentClass)
            .appendTo($ctr)
            .scroll(function() {
                scrolling = true;
            });

        var $paging = $(document.createElement('div')).appendTo($ctr);

        function processKey(e) {
            // handle modifiers
            var mod = 0;
            if (typeof (e.ctrlKey) !== 'undefined') {
                if (e.ctrlKey) mod |= 1;
                if (e.shiftKey) mod |= 2;
            } else {
                if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
                if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
            }
            // if the keyCode is one of the modifiers, bail out (we'll catch it on the next keypress)
            if (/16$|17$/.test(e.keyCode)) return; // 16 = Shift, 17 = Ctrl

            var tab = e.keyCode === 9;
            var tabWithModifiers = e.keyCode === 9 && mod > 0;
            var backspace = e.keyCode === 8; // we will end up extending the delay time for backspaces...

            // tab is a special case, since we want to bubble events...
            if (tab) if (getCurr()) selectCurr();

            // handling up/down/escape/right arrow/left arrow requires results to be visible
            // handling enter requires that AND a result to be selected
            if ((/27$|38$|39$|37$/.test(e.keyCode) && $ctr.is(':visible')) ||
				(/13$|40$/.test(e.keyCode)) || !o.allowInput) {

                if (e.preventDefault) e.preventDefault();
                if (e.stopPropagation) e.stopPropagation();

                e.cancelBubble = true;
                e.returnValue = false;

                switch (e.keyCode) {
                    case 38: // up
                        prevResult();
                        break;
                    case 40: // down
                        if ($ctr.is(':visible')) nextResult();
                        else flexboxDelay(true);
                        break;
                    case 13: // enter
                        if (getCurr()) selectCurr();
                        else flexboxDelay(true);
                        break;
                    case 27: //	escape
                        hideResults();
                        break;
                    case 39: // right arrow
                        $('#' + $div.attr('id') + 'n').click();
                        break;
                    case 37: // left arrow
                        $('#' + $div.attr('id') + 'p').click();
                        break;
                    default:
                        if (!o.allowInput) { return; }
                }
            } else if (!tab && !tabWithModifiers) { // skip tab key and any modifiers
                flexboxDelay(false, backspace);
            }
        }

        function flexboxDelay(simulateArrowClick, increaseDelay) {
            if (timeout) clearTimeout(timeout);
            var delay = increaseDelay ? o.queryDelay * 5 : o.queryDelay;
            timeout = setTimeout(function() { flexbox(1, simulateArrowClick, ''); }, delay);
        }

        function flexbox(p, arrowOrPagingClicked, prevQuery, arrowSearch) {
            var q = prevQuery && prevQuery.length > 0 ? prevQuery : $.trim($input.val());
        	q = arrowSearch ? prevQuery : q;
            
            if (q.length >= o.minChars || arrowOrPagingClicked) {
                $content.html('').attr('scrollTop', 0);
                var cached = checkCache(q, p);
                if (cached) {
                	// ZAAN modification (instead of trim was here q)
                    displayItems(cached.data, $.trim($input.val()));
                    showPaging(p, cached.t);
                }
                else {
                    pageSize = pageSize === undefined ? 0 : pageSize;

                    var params = { q: q, p: p, s: pageSize, contentType: 'application/json; charset=utf-8' };
                    var callback = function(data, overrideQuery) {
                        if (overrideQuery === true) q = overrideQuery; // must compare to boolean because by default, the string value "success" is passed when the jQuery $.getJSON method's callback is called
                        var totalResults = parseInt(data[o.totalProperty]);

                        // Handle client-side paging, if any paging configuration options were specified
                        if (isNaN(totalResults) && o.paging) {
                            if (o.maxCacheBytes <= 0) alert('The "maxCacheBytes" configuration option must be greater\nthan zero when implementing client-side paging.');
                            totalResults = data.results.length;

                            var pages = totalResults / pageSize;
                            if (totalResults % pageSize > 0) pages = parseInt(++pages);

                            for (var i = 1; i <= pages; i++) {
                                var pageData = {};
                                pageData[o.totalProperty] = totalResults;
                                pageData[o.resultsProperty] = data.results.splice(0, pageSize);
                                // ZAAN modification (instead of trim was here q)
                                if (i === 1) totalSize = displayItems(pageData, $.trim($input.val()));
                                updateCache(q, i, pageSize, totalResults, pageData, totalSize);
                            }
                        }
                        else {
                        	// ZAAN modification (instead of trim was here q)
                            var totalSize = displayItems(data, $.trim($input.val()));
                            updateCache(q, p, pageSize, totalResults, data, totalSize);
                        }
                        showPaging(p, totalResults);
                    };
                    if (typeof (o.source) === 'object') callback(o.source, '');
                    else if (o.method.toUpperCase() == 'POST') $.post(o.source, params, callback, "json");
                    else $.getJSON(o.source, params, callback);
                }
            } else
                hideResults();
        }

        function showPaging(p, totalResults) {
            $paging.html('').removeClass(o.paging.cssClass); // clear out for threshold scenarios
            $content.css('height', 'auto');
            if (o.showResults && o.paging && totalResults > pageSize) {
                var pages = totalResults / pageSize;
                if (totalResults % pageSize > 0) pages = parseInt(++pages);
                outputPagingLinks(pages, p, totalResults);
            }
        }

        function handleKeyPress(e, page, totalPages) {
            if (/^13$|^39$|^37$/.test(e.keyCode)) {
                if (e.preventDefault)
                    e.preventDefault();
                if (e.stopPropagation)
                    e.stopPropagation();

                e.cancelBubble = true;
                e.returnValue = false;

                switch (e.keyCode) {
                    case 13: // Enter
                        if (/^\d+$/.test(page) && page <= totalPages)
                            flexbox(page, true);
                        else
                            alert('Please enter a page number less than or equal to ' + totalPages);
                        // TODO: make this alert a function call, and a customizable parameter
                        break;
                    case 39: // right arrow
                        $('#' + $div.attr('id') + 'n').click();
                        break;
                    case 37: // left arrow
                        $('#' + $div.attr('id') + 'p').click();
                        break;
                }
            }
        }

        function handlePagingClick(e) {
            $input.attr('active', true);
            flexbox(parseInt($(this).attr('page')), true, $input.attr('pq')); // pq == previous query
            return false;
        }

        function outputPagingLinks(totalPages, currentPage, totalResults) {
            // TODO: make these configurable images
            var first = '&lt;&lt;',
            prev = '&lt;',
            next = '&gt;',
            last = '&gt;&gt;',
            more = '...';

            $paging.addClass(o.paging.cssClass);

            // set up our base page link element
            var $link = $(document.createElement('a'))
                .attr('href', '#')
                .addClass('page')
                .click(handlePagingClick),
            $span = $(document.createElement('span')).addClass('page'),
            divId = $div.attr('id');

            // show first page
            if (currentPage > 1) {
                $link.clone(true).attr('id', divId + 'f').attr('page', 1).html(first).appendTo($paging);
                $link.clone(true).attr('id', divId + 'p').attr('page', currentPage - 1).html(prev).appendTo($paging);
            }
            else {
                $span.clone(true).html(first).appendTo($paging);
                $span.clone(true).html(prev).appendTo($paging);
            }

            if (o.paging.style === 'links') {
                var maxPageLinks = o.paging.maxPageLinks;
                // show page numbers
                if (totalPages <= maxPageLinks) {
                    for (var i = 1; i <= totalPages; i++) {
                        if (i === currentPage) {
                            $span.clone(true).html(currentPage).appendTo($paging);
                        }
                        else {
                            $link.clone(true).attr('page', i).html(i).appendTo($paging);
                        }
                    }
                }
                else {
                    if ((currentPage + parseInt(maxPageLinks / 2)) > totalPages) {
                        startPage = totalPages - maxPageLinks + 1;
                    }
                    else {
                        startPage = currentPage - parseInt(maxPageLinks / 2);
                    }

                    if (startPage > 1) {
                        $link.clone(true).attr('page', startPage - 1).html(more).appendTo($paging);
                    }
                    else {
                        startPage = 1;
                    }

                    for (var i = startPage; i < startPage + maxPageLinks; i++) {
                        if (i === currentPage) {
                            $span.clone(true).html(i).appendTo($paging);
                        }
                        else {
                            $link.clone(true).attr('page', i).html(i).appendTo($paging);
                        }
                    }

                    if (totalPages > (startPage + maxPageLinks)) {
                        $link.clone(true).attr('page', i).html(more).appendTo($paging);
                    }
                }
            }
            else if (o.paging.style === 'input') {
                var $pagingBox = $(document.createElement('input'))
                    .addClass('box')
                    .click(function(e) {
                        $input.attr('active', true);
                        this.select();
                    })
                    .keypress(function(e) {
                        return handleKeyPress(e, this.value, totalPages);
                    })
                    .val(currentPage)
                    .appendTo($paging);
            }

            if (currentPage < totalPages) {
                var blort = $link.clone(true).attr('id', divId + 'n').attr('page', +currentPage + 1).html(next).appendTo($paging);
                $link.clone(true).attr('id', divId + 'l').attr('page', totalPages).html(last).appendTo($paging);
                // prevents flashing dropdown when retrieving data between pages
                $content.css('height', ($row.outerHeight() * pageSize) + 'px');
            }
            else {
                $span.clone(true).html(next).appendTo($paging);
                $span.clone(true).html(last).appendTo($paging);
                $content.css('height', 'auto');
            }

            var startingResult = (currentPage - 1) * pageSize + 1;
            var endingResult = (startingResult > (totalResults - pageSize)) ? totalResults : startingResult + pageSize - 1;

            if (o.paging.showSummary) {
                var summaryData = {
                    "start": startingResult,
                    "end": endingResult,
                    "total": totalResults,
                    "page": currentPage,
                    "pages": totalPages
                };
                var html = o.paging.summaryTemplate.applyTemplate(summaryData);
                $(document.createElement('span'))
                    .addClass(o.paging.summaryClass)
                    .html(html)
                    .appendTo($paging);
            }
        }

        function checkCache(q, p) {
            var key = q + delim + p; // use null character as delimiter
            if (cacheData[key]) {
                for (var i = 0; i < cache.length; i++) { // TODO: is it possible to not loop here?
                    if (cache[i] === key) {
                        // pull out the matching element (splice), and add it to the beginning of the array (unshift)
                        cache.unshift(cache.splice(i, 1)[0]);
                        return cacheData[key];
                    }
                }
            }
            return false;
        }

        function updateCache(q, p, s, t, data, size) {
            if (o.maxCacheBytes > 0) {
                while (cache.length && (cacheSize + size > o.maxCacheBytes)) {
                    var cached = cache.pop();
                    cacheSize -= cached.size;
                }
                var key = q + delim + p; // use null character as delimiter
                cacheData[key] = {
                    q: q,
                    p: p,
                    s: s,
                    t: t,
                    size: size,
                    data: data
                }; // add the data to the cache at the hash key location
                cache.push(key); // add the key to the MRU list
                cacheSize += size;
            }
        }

        function displayItems(d, q) {
            var totalSize = 0;

            if (!d)
                return;

            if (parseInt(d[o.totalProperty]) === 0 && o.noResultsText && o.noResultsText.length > 0) {
                $content.addClass(o.noResultsClass).html(o.noResultsText);
                $ctr.show();
                return;
            } else $content.removeClass(o.noResultsClass);

            for (var i = 0; i < d[o.resultsProperty].length; i++) {
                var data = d[o.resultsProperty][i],
                result = o.resultTemplate.applyTemplate(data),
                exactMatch = q === result,
                selectedMatch = false,
                hasHtmlTags = false;
                
                if (!exactMatch && o.highlightMatches && q !== '') {
                    var pattern = q,
                    replaceString = '<span class="' + o.matchClass + '">' + q + '</span>';
                    if (result.match('<(.|\n)*?>')) { // see if the content contains html tags
                        hasHtmlTags = true;
                        pattern = '(>)([^<]*?)(' + q + ')((.|\n)*?)(<)'; // TODO: look for a better way
                        replaceString = '$1$2<span class="' + o.matchClass + '">$3</span>$4$6';
                    }
                    result = result.replace(new RegExp(pattern, o.highlightMatchesRegExModifier), replaceString);
                }

                // write the value of the first match to the input box, and select the remainder,
                // but only if autoCompleteFirstMatch is set, and there are no html tags in the response
                if (o.autoCompleteFirstMatch && !hasHtmlTags && i === 0) {
                    var firstMatch = data[o.displayValue];
                    if (q.length > 0 && firstMatch.indexOf(q) === 0) {
                        $input.attr('pq', q); // pq == previous query
                        $input.val(firstMatch);
                        selectedMatch = selectRange(q.length, $input.val().length);
                    }
                }

                if (!o.showResults) return;

                $row = $(document.createElement('div'))
                    .attr('id', data[o.displayValue])
                    .attr('val', data[o.hiddenValue])
                    .addClass('row')
                    .html(result)
                    .click(function(e) { $input.attr('active', true); })
                    .appendTo($content);

                // remove the border from the bottom of the last result if paging is off
                if ((!o.paging || (o.paging && pageSize > d[o.totalProperty])) && i === d[o.resultsProperty].length - 1) {
                    $row.css('border-bottom', 'none');
                }

                if (exactMatch || selectedMatch) {
                    $row.addClass(o.selectClass);
                }
                totalSize += result.length;
            }

            if (totalSize === 0) {
                hideResults();
                return;
            }

            $ctr.parent().css('z-index', 50);
            $ctr.show();

            $content
				.children('div')
				.mouseover(function() {
				    $content.children('div').removeClass(o.selectClass);
				    $(this).addClass(o.selectClass);
				})
				.click(function(e) {
				    e.preventDefault();
				    e.stopPropagation();
				    selectCurr();
				});

            if (o.maxVisibleRows > 0) {
                //var maxHeight = $row.outerHeight() * o.maxVisibleRows;
                var maxHeight = Math.round($row.parent()[0].scrollHeight / d[o.totalProperty]) * o.maxVisibleRows;
                $content.css('maxHeight', maxHeight);
            }
            else
                $content.css('height', 'auto');

            return totalSize;
        }

        function selectRange(s, l) {
            var tb = $input[0];
            if (tb.createTextRange) {
                var r = tb.createTextRange();
                r.moveStart('character', s);
                r.moveEnd('character', l - tb.value.length);
                r.select();
            } else if (tb.setSelectionRange) {
                tb.setSelectionRange(s, l);
            }
            tb.focus();
            return true;
        }

        String.prototype.applyTemplate = function(d) {
            try {
                if (d === '') return this;
                return this.replace(/{([^{}]*)}/g,
                    function(a, b) {
                        var r;
                        if (b.indexOf('.') !== -1) { // handle dot notation in {}, such as {Thumbnail.Url}
                            var ary = b.split('.');
                            var obj = d;
                            for (var i = 0; i < ary.length; i++)
                                obj = obj[ary[i]];
                            r = obj;
                        }
                        else
                            r = d[b];
                        if (typeof r === 'string' || typeof r === 'number') return r; else throw (a);
                    }
                );
            } catch (ex) {
                alert('Invalid JSON property ' + ex + ' found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.');
            }
        };

        function hideResults() {
            $input.attr('active', false); // for input blur
            $div.css('z-index', 0);
            $ctr.hide();
        }

        function getCurr() {
            if (!$ctr.is(':visible'))
                return false;

            var $curr = $content.children('div.' + o.selectClass);

            if (!$curr.length)
                $curr = false;

            return $curr;
        }

        function selectCurr() {
            $curr = getCurr();
            if ($curr) {
                $input.val(ltrim($curr.attr('id').unescapeHTML().strip().replace(/^\s+/,""))).focus();
                $hdn.val($curr.attr('val'));
                hideResults();

                if (o.onSelect) {
                    $input.attr('hiddenValue', $hdn.val());
                    o.onSelect.apply($input[0]);
                }
            }
        }

        function nextResult() {
            $curr = getCurr();

            if ($curr && $curr.next().length > 0) {
                $curr
					.removeClass(o.selectClass)
					.next()
						.addClass(o.selectClass);
                var scrollPos = $content.attr('scrollTop'),
                curr = $curr[0],
                parentBottom, bottom, height;
                if ($.browser.mozilla && parseInt($.browser.version) <= 2) {
                    parentBottom = document.getBoxObjectFor($content[0]).y + $content.attr('offsetHeight');
                    bottom = document.getBoxObjectFor(curr).y + $curr.attr('offsetHeight');
                    height = document.getBoxObjectFor(curr).height;
                }
                else { // IE and FF3
                    parentBottom = $content[0].getBoundingClientRect().bottom;
                    var rect = curr.getBoundingClientRect();
                    bottom = rect.bottom;
                    height = bottom - rect.top;
                }
                if (bottom >= parentBottom)
                    $content.attr('scrollTop', scrollPos + height);
            }
            else if (!$curr)
                $content.children('div:first-child').addClass(o.selectClass);
        }

        function prevResult() {
            $curr = getCurr();

            if ($curr && $curr.prev().length > 0) {
                $curr
					.removeClass(o.selectClass)
					.prev()
						.addClass(o.selectClass);
                var scrollPos = $content.attr('scrollTop'),
                curr = $curr[0],
                parent = $curr.parent()[0],
                parentTop, top, height;
                if ($.browser.mozilla && parseInt($.browser.version) <= 2) {
                    height = document.getBoxObjectFor(curr).height;
                    parentTop = document.getBoxObjectFor($content[0]).y - (height * 2); // TODO: this is not working when i add another control...
                    top = document.getBoxObjectFor(curr).y - document.getBoxObjectFor($content[0]).y;
                }
                else { // IE and FF3
                    parentTop = parent.getBoundingClientRect().top;
                    var rect = curr.getBoundingClientRect();
                    top = rect.top;
                    height = rect.bottom - top;
                }
                if (top <= parentTop)
                    $content.attr('scrollTop', scrollPos - height);
            }
            else if (!$curr)
                $content.children('div:last-child').addClass(o.selectClass);
        }
    };

    $.fn.flexbox = function(source, options) {
        if (!source)
            return;

        try {
            var defaults = $.fn.flexbox.defaults;
            var o = $.extend({}, defaults, options);

            for (var prop in o) {
                if (defaults[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
            }

    		if(this.get(0).tagName == 'SELECT') {
    			o.source = fillDataFromSelect(o, this);
    		}            
    		else {
    			o.source = source;
    		}
    		
            if (options) {
                o.paging = (options.paging || options.paging == null) ? $.extend({}, defaults.paging, options.paging) : false;

                for (var prop in o.paging) {
                    if (defaults.paging[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
                }

                if (options.displayValue && !options.hiddenValue) {
                    o.hiddenValue = options.displayValue;
                }
            }

            this.each(function() {
                new $.flexbox(this, o);
            });
           
            return this;
        } catch (ex) {
            if (typeof ex === 'object') alert(ex.message); else alert(ex);
        }
    };

    // plugin defaults - added as a property on our plugin function so they can be set independently
    $.fn.flexbox.defaults = {
        method: 'GET', // One of 'GET' or 'POST'
        queryDelay: 100, // num of milliseconds before query is run.
        allowInput: true, // set to false to disallow the user from typing in queries
        containerClass: 'ffb',
        contentClass: 'ffb-content',
        selectClass: 'ffb-sel',
        inputClass: 'ffb-input',
        arrowClass: 'ffb-arrow',
        matchClass: 'ffb-match',
        noResultsText: 'No matching results', // text to show when no results match the query
        noResultsClass: 'ffb-no-results', // class to apply to noResultsText
        showResults: true, // whether to show results at all, or just typeahead
        autoCompleteFirstMatch: true, // whether to complete and highlight the first matching value
        highlightMatches: true, // whether all matches within the string should be highlighted with matchClass
        highlightMatchesRegExModifier: 'i', // 'i' for case-insensitive, 'g' for global (all occurrences), or combine
        minChars: 1, // the minimum number of characters the user must enter before a search is executed
        showArrow: true, // set to false to simulate google suggest
        arrowQuery: '', // the query to run when the arrow is clicked
        onSelect: false, // function to run when a result is selected.  this.getAttribute('hiddenValue') gets you the value of options.hiddenValue
        maxCacheBytes: 32768, // in bytes, 0 means caching is disabled
        resultTemplate: '{name}', // html template for each row (put json properties in curly braces)
        displayValue: 'name', // json element whose value is displayed on select
        hiddenValue: 'id', // json element whose value submitted when form is submitted
        initialValue: '', // what should the value of the input field be when the form is loaded?
        initialValueText: '', // what should the value of the input field be when the form is loaded?
        watermark: '', // text that appears when flexbox is loaded, if no initialValue is specified.  style with css class '.ffb-input.watermark'
        width: 200, // total width of flexbox.  auto-adjusts based on showArrow value
        resultsProperty: 'results', // json property in response that references array of results
        totalProperty: 'total', // json property in response that references the total results (for paging)
        maxVisibleRows: 0, // default is 0, which means it is ignored.  use either this, or paging.pageSize
        paging: {
            style: 'input', // or 'links'
            cssClass: 'paging', // prefix with containerClass (e.g. .ffb .paging)
            pageSize: 10, // acts as a threshold.  if <= pageSize results, paging doesn't appear
            maxPageLinks: 5, // used only if style is 'links'
            showSummary: true, // whether to show 'displaying 1-10 of 200 results' text
            summaryClass: 'summary', // class for 'displaying 1-10 of 200 results', prefix with containerClass
            summaryTemplate: 'Displaying {start}-{end} of {total} results' // can use {page} and {pages} as well
        }
    };

    $.fn.setValue = function(val) { 
        var id = '#' + this.attr('id');
        $(id + '_hidden,' + id + '_input').val(val).removeClass('watermark');
    };
    
    function fillDataFromSelect(options, element) {
    	var results = [];
    	element.children().each(function(i) {
    		if(this.tagName.toLowerCase() == 'option') {
    			var text = $(this).text(), val = this.getAttribute('value') || text;
    			var optionMap = {};
    			optionMap.id = val;
    			optionMap.name = text;
    			results[i] = optionMap;
    		}
    	});
    	return { "total": element.children().length, "results": results };
    }; 
})(jQuery);


/* include js file: /js/layout/engine.js */

var $j = jQuery.noConflict();

var system = {
    start: function() {
		this.notify();
        this.nav();
        this.selects();
        this.iAmStillAlive();
        this.wordWrap();
        this.buttonsTitle();
        this.friendsList();
        this.loginNewsfeed();
    },
    startNotLogged: function() {
        this.login();
        this.forgot();
        this.register();
    },
    startMessages: function() {
        this.messages();
    },
    startIvCalendar: function() {
        this.ivcalendar();
    },
    startMenu: function() {
    	this.menus();
    },
    startCategoryMap: function() {
        this.categoryMap();    	
    },
    startProfile: function() {
    	this.profileRoll();
    },
    nav: function(){
        if($j.browser.msie){
            $j('#nav .nav li, #main .notice, .memberBox p, #main .pagerNav div').hover(
                function(){ $j(this).addClass('hover') },
                function(){ $j(this).removeClass('hover') }
            );
        }
    },
    login: function(val) {
        $j('#top .loginButton').click(function(){ loginToggle(); });
        function loginToggle(){
            $j('#loginPanel').slideToggle('slow');
            return false;
        }
    },
    register: function() {
        $j('#registration .back').click(function(){ glownaToggle(); });
        function glownaToggle(){
            $j('#przewodnikOF').hide();
            $j('#przewodnikNF').hide();
            $j('#registrationF').hide();
            $j('#middleF').slideDown('fast');
            $j('#registrationWrap').addClass('strip');
            return false;
        }

        
		
		$j('#registration .row-1 .desc .more1').click(function(){ infoNSToggle(); });
        function infoNSToggle(){
            $j('#middleF').hide();
            $j('#registrationF').hide();
            $j('#przewodnikNF').hide();
            $j('#przewodnikOF').slideDown('fast');
            $j('#registrationWrap').removeClass('strip');
            return false;
        }

		$j('#registration .row-1 .desc. .more2').click(function(){ przewodnikToggle(); });
        function przewodnikToggle(){
            $j('#middleF').hide();
            $j('#registrationF').hide();
            $j('#przewodnikOF').hide();
            $j('#przewodnikNF').slideDown('fast');
            $j('#registrationWrap').removeClass('strip');
            return false;
        }        
		
		$j('#registration .row-1 .desc. .more2').click(function(){ przewodnikToggle(); });
        function przewodnikToggle(){
            $j('#middleF').hide();
            $j('#registrationF').hide();
            $j('#przewodnikOF').hide();
            $j('#przewodnikNF').slideDown('fast');
            $j('#registrationWrap').removeClass('strip');
            return false;
        }     
		
    },    
    forgot: function() {
        $j('#loginPanel .forgotPassword').click(function(){ clickForgot(); });
        function clickForgot(){
            $j('#loginPanel').slideUp('fast');
            new Ajax.Updater('loginPanel','/zapomniane_haslo', {asynchronous:false, evalScripts:true});
            $j('#loginPanel').addClass('passwordRecovery');            
            $j('#loginPanel').slideDown('slow');
            $j('#loginPanel .forgotPassword').unbind('click');
            $j('#loginPanel .forgotPassword').click(function(){ loginBack(); });
            return false;
        }
        function loginBack(){
            $j('#loginPanel').slideUp('fast');
            new Ajax.Updater('loginPanel','/formularz_logowania', {asynchronous:false, evalScripts:true});
            $j('#loginPanel').removeClass('passwordRecovery');            
            $j('#loginPanel').slideDown('slow');
            $j('#loginPanel .forgotPassword').unbind('click');
            $j('#loginPanel .forgotPassword').click(function(){ clickForgot(); });
            return false;
        }
    },
    selects: function(){
        if($j('body').is(":has(select)")) {
        	$j('select').select_skin();
        }
    },
    slide: function(el, mode){
        if(el.parents('.selectCategory').hasClass('hideCategory')){
            el.parents('.selectCategory').removeClass('hideCategory');
            el.hide();
            el.slideDown('slow');
        }else{
            if(mode == 'show')
                el.slideDown('slow');
            else
                el.slideUp('slow');
        }
        if($j.browser.msie){
            if(mode == 'show')
                $j('#main .content select').hide();
            else
                $j('#main .content select').show();
        }
    },
    menus: function(){
        if($j('#main').is(":has(#ddnav)")) {
            var height = 50 + ($j('#ddnav > ul').children().size()*30);
            $j('#main #ddnav').height(height);
            $j('#ddnav > ul').ddMenu();
            $j('#ddnav .bdc-dd-sub-menu > li:nth-child(2n-1)').addClass('dark');
            if($j('#ddnav li').hasClass('active')){
                var parents = $j('#ddnav .active').parents('li');
                parents.addClass('active');
                for(var i = 0; i < parents.length+1; i++){
                    $j('#ddnav .active:eq('+i+')').find('.bdc-dd-icon:first').click();
                }
            }
            // cookies for category remembering
            var ns3 = getCookie('nsMenu3'); var ns2 = getCookie('nsMenu2'); var ns1 = getCookie('nsMenu1');
            setCookie('nsMenu1', 0, 0); setCookie('nsMenu2', 0, 0); setCookie('nsMenu3', 0, 0);
            var urlpath = window.location.pathname;
            if(urlpath && urlpath != '/' && urlpath.substr(urlpath.length-4, 4) != 'moje'){
                if(ns1 != ''){ $j('#ddnav a:contains("'+ns1+'")').click(); }
                if(ns2 != ''){ setTimeout("$j('#ddnav .bdc-dd-menu-panel:last a:contains(\""+ns2+"\")').click()", 1000); }
                if(ns3 != ''){ setTimeout("$j('#ddnav .bdc-dd-menu-panel:last a:contains(\""+ns3+"\")').click()", 1000); }
            }
        }
        if($j('#main').is(":has(.ddcat)")) {
            $j('.selectCategory .label').click(function(){
                var wrap = $j(this).parent();
                wrap.addClass('act');
                system.slide(wrap.find('.ddcat'), 'show');
            });
            $j('body').click(function(e){
                if($j(e.target).parents('.act').size() == 0) {
                    if($j('.selectCategory').hasClass('act')){
                        system.slide($j('.selectCategory .ddcat'), 'hide');
                    }
                }
            });

            for(var i = 0; i < $j('.ddcat li').size(); i++){
                $j('.ddcat li:eq('+i+')').attr('name', 'li_pos_'+i);
            }

            $j('.ddcat li a').click(function(){
                //alert($j(this).attr('class'));
                if($j(this).attr('class') != 'bdc-dd-sub-menu' && $j(this).attr('class') != 'bdc-dd-icon'){ // ?! - niewiem ie
                    $j('.ddcat .selcat').removeClass('selcat');
                    var name = $j(this).parent().parent().attr('name');
                    var parents = $j('.ddcat [name='+name+']:first').parents('li');
                    var cat = '';

                    parents.addClass('selcat');
                    for(var i = 0; i < parents.length; i++){
                        cat += '<a href="#">' + $j('.ddcat .selcat:eq('+i+')').find('.bdc-dd-text:first').text() + '</a> &raquo; ';
                    }
                    cat += '<a href="#">' + $j(this).text() + '</a>';

                    $j('#main .selectCategory').prev().replaceWith('<p>' + cat + '</p>');
                    system.slide($j(this).parents('.ddcat'), 'hide');
                }
                return false;
            });

            var ddcat = $j('.ddcat');
            var height = 50 + (ddcat.find(' > ul').children().size()*30);
            ddcat.height(height);
            ddcat.find(' > ul').ddMenu({rootTitle: 'Kategorie'});
            $j('.ddcat .bdc-dd-title-root').click(function(){
                system.slide($j(this).parents('.ddcat'), 'hide');
                return false;
            });
            $j('.ddcat .bdc-dd-icon').click(function(){
                $j('.ddcat .bdc-dd-title-link, .ddcat .bdc-dd-title-label').click(function(){
                system.slide($j(this).parents('.ddcat'), 'hide');
                    return false;
                });
            });

            if($j('.ddcat li').hasClass('active')){
                var parents = $j('.ddcat .active').parents('li');
                parents.addClass('active');
                for(var i = 0; i < parents.length+1; i++){
                    $j('.ddcat .active:eq('+i+')').find('.bdc-dd-icon:first').click();
                }
            }
        }
    },
    profileRoll: function(){
        $j('#profileDetails .toggle').click(function(){
            $j('#profileDetails .roll').slideToggle('slow');
            if($j(this).text() == 'zwiń')
                $j(this).text('więcej informacji');
            else
                $j(this).text('zwiń');
            $j(this).toggleClass('hide');
            return false;
        });
    },
    notify: function(){
        $j('#main .content .notify-3 .close, #main .notify-2 .close').click(function(){
            $j(this).parents('.content').fadeOut('slow');
            if ( '#' != this.href) {
                location.href = this.href;
            }
            return false;
        });
        $j('#main .notify-2 .accept').click(function(){
            if ( '#' != this.href) {
                location.href = this.href;
            }
            return false;
        });
        $j('#main #showPrompt').click(function(){
            // imo dynamic
            var title = 'Lorem ipsum dolor samit';
            var text = 'Lorem ipsum dolor samit ales assa, curus in malsu<br />Lorem ipsum dolor samit ales assa, curus in malsu<br />Lorem ipsum dolor samit ales assa, curus in malsu';
            var options = '<ul class="options"><li><a href="#">opcja 1</a></li><li><a href="#">opcja 2</a></li><li><a href="#">opcja 3</a></li></ul>';

            var msg = '<div class="notify-1"><h2 class="headerRed w120"><span>Powiadomienie</span><span class="rightBg"></span></h2><h3>' + title + '</h3>' + options + '<div class="description"><p>' + text + '</p></div></div>';
            // callback: http://trentrichardson.com/Impromptu/index.php
            $.prompt(msg,{ buttons: { Ok: true, Cancel: false }, top: '200px' });
        });
    },
    disableEsc: function(){
        $j('html').keypress(function (e) {
            if (e.which == 27 || e.which == 0) {
                setTimeout(function(){
                    $j('.headedit:not(:has(form))').removeClass('headedit');
                    $j('.descedit:not(:has(form))').removeClass('descedit');
                    $j('.placesedit:not(:has(form))').removeClass('placesedit');
                    $j('.priceedit:not(:has(form))').removeClass('priceedit');
                }, 500);
                if($j('#groupTags').hasClass('tagedit')){
                    $j('#groupTags').removeClass('tagedit');
                }
                if($j('#profileDetails .interests .row').hasClass('tagedit')){
                    $j('#profileDetails .interests .row').removeClass('tagedit');
                }
                if($j('.selectCategory').hasClass('act')){
                    system.slide($j('.selectCategory .ddcat'), 'hide');
                }
            }
        });
    },
    categoryMap: function(){ 
        $j(".categoryMap").treeview({ 
            collapsed: true
        }); 
        $j(".categoryMap div").mouseover(function(){ 
            $j(this).removeClass().addClass("categoryMenuVisible");
        });
        $j(".categoryMap div").mouseout(function(){ 
            $j(this).removeClass();
        });

        k = 1;
        $j(".expandAll").click(function(){            
            if (k == 1) {
                $j("#categoryMap ul li").removeClass().addClass("collapsable");
                $j("#categoryMap ul.submenu li").removeClass();
                $j(".expandAll").text("").text("zwiń wszystkie");
                k = 0
            }
            else {
                $j("#categoryMap ul li").removeClass().addClass("expandable");
                $j("#categoryMap ul.submenu li").removeClass();
                $j(".expandAll").text("").text("rozwiń wszystkie");
                k = 1
            }
        }); 
    },
    messages: function(){ 
        k=0;
        $j('#messages .message h2').click(function(){
            if(k==0){
                $j(this).addClass("open");
                k=1;
            }
            else {
                $j(this).removeClass();
                k=0;
            }
                system.readMessage($j(this).attr('message_id'));
            $j(this).next().slideToggle("slow");
            //$j(this).next().next().slideToggle("slow");
            $j(this).parent().next().next().slideToggle("slow");
            return false;
        });
        $j('.message .remove').click(function () {
            $j(this).parent().parent().parent().hide("slow");
            return false;
        }); 
        $j('#messageOptions #mOselectAll').click(function(){
            $j("input[id^='messagesCheck_']").attr('checked','checked');
            return false;
        });
        $j('#messageOptions #mOdeselectAll').click(function(){
            $j("input[id^='messagesCheck_']").attr('checked','');
            return false;
        });
    },
    readMessage: function(message_id){
        new Ajax.Request('/wiadomosci/odczytaj/' + message_id, {asynchronous:true, evalScripts:false});
    },
    messageClick: function(){ 
        $j('#messageReceivers a.del').click(function(){
            var rec = $j(this).attr('name');
            var val = $j('#message_recivers_ids').val();
            var idx = 0;
            if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
            {
                val = (',' + val).replace(',' + rec + ',', ',');
                $j('#message_recivers_ids').val(val.substr(1));
                system.messageText();
            }
            $j(this).parent().remove();
            return false;
        });
    },
    messageButton: function(){ 
        $j('#messageReceivers button').click(function () {
            var val = $j('#message_recivers_ids').val(); // + $j('#availableRecivers').val() + ',';
            var rec = $j('#availableRecivers').val();
            if(null != rec && (',' + val).indexOf(',' + rec + ',') < 0)
            {
                val += rec + ',';
                $j('#message_recivers_ids').val(val); 
                var ele = $j('<li>' + 
                                '<a href="#" class="tag">' + $j('#availableRecivers :selected').text() + '</a>' + 
                                '<a href="#" class="del" name="' + rec + '">x</a>' + 
                             '</li>');
/*                    click(function(){
                        var rec = $j(this).attr('name');
                        var val = $j('#message_recivers_ids').val();
                        var idx = 0;
                        if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
                        {
                            val = (',' + val).replace(',' + rec + ',', ''); //(idx == 0?'':','));
                            $j('#message_recivers_ids').val(val); 
                        }
                        $j(this).parent().remove();
                        return false;
                    }); */
                $j('#messageReceivers ul li.last').before(ele);
                $j('#messageReceivers a.del').click(function() {});
                system.messageClick();
                system.messageText();
            }
            return false;
        }); 
    },
    messageText: function(){ 
        $j('.cmf-skinned-text').each(function () {
            var val = $j('#message_recivers_ids').val();
            if(val.length <= 1)
            {
            	$j(this).html('Wybierz odbiorce');
            }
            else
            {
            	$j(this).html(' ');
            }
            return false;
        }); 
    },
    inviteClick: function(){ 
        $j('#inviteReceivers a.del').click(function(){
            var rec = $j(this).attr('name');
            var val = $j('#user_group_member_user_id').val();
            var idx = 0;
            if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
            {
                val = (',' + val).replace(',' + rec + ',', ',');
                $j('#user_group_member_user_id').val(val.substr(1)); 
            }
            $j(this).parent().remove();
            return false;
        });
    },
    inviteButton: function(){ 
        $j('#inviteReceivers button').click(function () {
            var val = $j('#user_group_member_user_id').val(); // + $j('#availableRecivers').val() + ',';
            var rec = $j('#user_group_member_recivers_ids').val();
            if((',' + val).indexOf(',' + rec + ',') < 0)
            {
                val += rec + ',';
                $j('#user_group_member_user_id').val(val); 
                var ele = $j('<li>' + 
                                '<a href="#" class="tag">' + $j('#user_group_member_recivers_ids :selected').text() + '</a>' + 
                                '<a href="#" class="del" name="' + rec + '">x</a>' + 
                             '</li>');
                $j('#inviteReceivers ul li.last').before(ele);
                $j('#inviteReceivers a.del').click(function() {});
                system.inviteClick();
            }
            return false;
        }); 
    },
    inviteAdvUClick: function(){ 
        $j('#inviteReceivers a.del').click(function(){
            var rec = $j(this).attr('name');
            var val = $j('#advertisement_invite_user_id').val();
            var idx = 0;
            if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
            {
                val = (',' + val).replace(',' + rec + ',', ',');
                $j('#advertisement_invite_user_id').val(val.substr(1)); 
            }
            $j(this).parent().remove();
            return false;
        });
    },
    inviteAdvUButton: function(){ 
        $j('#inviteReceivers button').click(function () {
            var val = $j('#advertisement_invite_user_id').val(); // + $j('#availableRecivers').val() + ',';
            var rec = $j('#advertisement_invite_users_ids').val();
            if((',' + val).indexOf(',' + rec + ',') < 0)
            {
                val += rec + ',';
                $j('#advertisement_invite_user_id').val(val); 
                var ele = $j('<li>' + 
                                '<a href="#" class="tag">' + $j('#advertisement_invite_users_ids :selected').text() + '</a>' + 
                                '<a href="#" class="del" name="' + rec + '">x</a>' + 
                             '</li>');
                $j('#inviteReceivers ul li.last').before(ele);
                $j('#inviteReceivers a.del').click(function() {});
                system.inviteAdvUClick();
            }
            return false;
        }); 
    },
    inviteAdvEClick: function(){ 
        $j('#inviteEmails a.del').click(function(){
            var rec = $j(this).attr('name');
            var val = $j('#advertisement_invite_email').val();
            var idx = 0;
            if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
            {
                val = (',' + val).replace(',' + rec + ',', ',');
                $j('#advertisement_invite_email').val(val.substr(1)); 
            }
            $j(this).parent().remove();
            return false;
        });
    },
    inviteAdvEButton: function(){ 
        $j('#inviteEmails button').click(function () {
            var val = $j('#advertisement_invite_email').val(); // + $j('#availableRecivers').val() + ',';
            var rec = $j('#advertisement_invite_emails').val();
            if((',' + val).indexOf(',' + rec + ',') < 0 && system.inviteAdvEValid(rec))
            {
                val += rec + ',';
                $j('#advertisement_invite_email').val(val); 
                var ele = $j('<li>' + 
                                '<a href="#" class="tag">' + rec + '</a>' + 
                                '<a href="#" class="del" name="' + rec + '">x</a>' + 
                             '</li>');
                $j('#inviteEmails ul li.last').before(ele);
                $j('#inviteEmails a.del').click(function() {});
                system.inviteAdvEClick();
                $j('#advertisement_invite_emails').val('');
            }
            return false;
        }); 
    },
    inviteAdvEValid: function(val){
    	var isValid = true;
    	
    	if(val == "") {
    		isValid = false;
    	}
    	else {
    		var reg = new RegExp("(^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})");
    		
    		if(!reg.test(val)) {
    			isValid = false;
    		}
    	}
          
    	return isValid;
    },
    
    ivcalendar: function(){
        $j('.calendar .download a').click( function(){
        	$j(this).parent().parent().find('.hidden').slideToggle('slow');
            return false;
        });
        $j('.calendar .name a').click( function(){
        	$j(this).parent().parent().find('.hidden').slideToggle('slow');
            return false;
        });    	
    },
    ivcalendarClick: function(){ 
        $j('#calendarEventMembers a.del').click(function(){
            var rec = $j(this).attr('name');
            var val = $j('#iv_calendar_event_members_ids').val();
            var idx = 0;
            if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
            {
                val = (',' + val).replace(',' + rec + ',', ',');
                $j('#iv_calendar_event_members_ids').val(val.substr(1)); 
            }
            $j(this).parent().remove();
            return false;
        });
    },
    ivcalendarButton: function(){ 
        $j('#calendarEventMembers button').click(function () {
            var val = $j('#iv_calendar_event_members_ids').val(); // + $j('#availableMembers').val() + ',';
            var rec = $j('#availableMembers').val();
            if((',' + val).indexOf(',' + rec + ',') < 0)
            {
                val += rec + ',';
                $j('#iv_calendar_event_members_ids').val(val); 
                var ele = $j('<li>' + 
                                '<a href="#" class="tag">' + $j('#availableMembers :selected').text() + '</a>' + 
                                '<a href="#" class="del" name="' + rec + '">x</a>' + 
                             '</li>');
/*                    click(function(){
                        var rec = $j(this).attr('name');
                        var val = $j('#message_members_ids').val();
                        var idx = 0;
                        if((idx = (',' + val).indexOf(',' + rec + ',')) >= 0)
                        {
                            val = (',' + val).replace(',' + rec + ',', ''); //(idx == 0?'':','));
                            $j('#message_members_ids').val(val); 
                        }
                        $j(this).parent().remove();
                        return false;
                    }); */
                $j('#calendarEventMembers ul li.last').before(ele);
                $j('#calendarEventMembers a.del').click(function() {});
                system.ivcalendarClick();
            }
            return false;
        }); 
    },

    
    friendsList: function(){
        $j(".memberBox").mouseover(function(){ 
            $j(this).find(".accept, .remove, .withdraw, .reject").css("display","inline");
        });
        $j(".memberBox").mouseout(function(){ 
            $j(this).find(".accept, .remove, .withdraw, .reject").css("display","none");
        });
    },
    iAmStillAlive: function(){
        yp_user_alive_updater = new PeriodicalExecuter(function() {
             new Ajax.Request('/ping');
         }, 360);
    },
    loginRequired: function() {
        $j('#opt-zaloguj_sie').click(function(){ loginToggle(); });
        function loginToggle(){
            $j('#loginPanel').slideToggle('slow');
            return false;
        }
    },
    competitionInfoBox: function(){
        if ($j(".competitionInfoContent").is(':visible')) {
        	$j(".competitionInfoBox .hideBox").text("zwiń").css("background-position","top right");
        	$j(".competitionInfoBox .botLink").slideDown("slow");
        	k = 0;
        }
        else {
        	$j(".competitionInfoBox .hideBox").text("rozwiń").css("background-position","bottom right");
        	k = 1;
        }
        
        $j(".competitionInfoBox .hideBox").click(function(){
            if(k==1){
                $j(".competitionInfoContent").slideDown("slow");
                $j(".competitionInfoBox .botLink").slideDown("slow");
                $j(".competitionInfoBox .hideBox").text("zwiń").css("background-position","top right");
                k=0;
                return false;
            }
            else{
                $j(".competitionInfoContent").slideUp("slow");
                $j(".competitionInfoBox .botLink").slideUp("slow");
                $j(".competitionInfoBox .hideBox").text("rozwiń").css("background-position","bottom right");
                k=1;
                return false;
            }
        });
    },
    loginNewsfeed: function(){
        m = $j('.loginNewsFeed p').html();
        k = 0;
        
        $j('.loginNewsFeed p').each( function(){
            if($(this).offsetWidth>215){ 
                $j('.loginNewsFeed p').css('width','215px');
                k = 1;
            }
        });
        
        if($j.browser.mozilla) {
            if(k == 1){
                $j('.loginNewsFeed p').each(function(){
                    $j(this).html('<marquee scrolldelay="9999999999" scrollamount="215">' + m + '</marquee>');
                });
                $j('.loginNewsFeed').hover(
                    function(){$j('.loginNewsFeed p marquee').attr('scrolldelay','1').attr('scrollamount','4');},
                    function(){$j('.loginNewsFeed p').html('<marquee scrolldelay="9999999999" scrollamount="215">' + m + '</marquee>');}
                )
            }
        }
        else {
            if(k == 1){
                $j('.loginNewsFeed').hover(
                    function(){
                        $j('.loginNewsFeed p').html('<marquee scrollamount="4">' + m + '</marquee>');
                    },
                    function(){
                        $j('.loginNewsFeed p').html(m);
                    }
                );
            }
            else {
                k = 0;
            };
        }
    },
    wordWrap: function() {
    		//Original by Micox - elmicoxcodes.blogspot.com
    		//Adapted to Prototype by Franco Sabbatini
    		 elementos = $$('.word-wrap');
    		 elementos.each(
    		    function(elemento){
    		     if(Prototype.Browser.Gecko){
    		      if(elemento.hasClassName('word-wrap')){
    		       texto = elemento.innerHTML.gsub(' ', 'Ø');
    		       elemento.innerHTML = ' ';
    		       original = elemento.style.display;
    		       elemento.style.display='block';
    		       largo = elemento.offsetWidth;
    		       elemento.style.display='table';
    		       elemento.innerHTML = texto;
    		       largo_total = elemento.offsetWidth;

    		       pos_quiebre = 0;
    		       caracteres = texto.length;
    		       texto = elemento.innerHTML.gsub('Ø', ' ');
    		       largo_caracteres = largo_total/caracteres;
    		       if(largo_total>largo){
    		        cantidad_quiebra = parseInt(largo/largo_caracteres);
    		        cantidad_quiebra = cantidad_quiebra - (parseInt(cantidad_quiebra/6));
    		        elemento.innerHTML = '';
    		        while(pos_quiebre<=caracteres){
    		          elemento.innerHTML = elemento.innerHTML +
    		texto.substring(pos_quiebre, pos_quiebre + cantidad_quiebra) + ' ';
    		          pos_quiebre += cantidad_quiebra;
    		        }
    		       } else {
    		        elemento.innerHTML = texto;
    		       }
    		       elemento.style.display = original;
    		      }
    		     }
    		    }
    		 );
    },
    taskList: function() {
        $j('.tasksItem .rollDescription, .tasksItem .more').click(function(){
            $j(this).parent().find('.taskDescription').toggle('slow',
                function(){
                    if( $j(this).parent().find('.taskDescription').css('display') == 'block' ){
                        $j(this).parent().find('.more').removeClass('more').addClass('less');
                    }
                    else {
                        $j(this).parent().find('.less').removeClass('less').addClass('more');
                    }
                }
            );
            return false;
        });
    },
    buttonsTitle: function(){
        $j('.accept').mouseover(function(){
            $j(this).attr('title','akceptuj')
        });
        $j('.edit, .dedit').mouseover(function(){
            $j(this).attr('title','edytuj')
        });
        $j('.close').mouseover(function(){
            $j(this).attr('title','zamknij')
        });
        $j('.remove').mouseover(function(){
            $j(this).attr('title','usuń')
        });
        $j('.editback').mouseover(function(){
            $j(this).attr('title','opuść tryb edycji')
        });
        $j('.save').mouseover(function(){
            $j(this).attr('title','zapisz')
        });
        $j('.cancel').mouseover(function(){
            $j(this).attr('title','anuluj')
        });
        $j('.dcancel').mouseover(function(){
            $j(this).attr('title','zamknij')
        });
    }
}

function showMiniProfile(v){
   $j.prompt($('profileCard-' + v).innerHTML,{ buttons: { Ok: false, Cancel: true}, prefix: 'miniProfil', top: '200px', zIndex: 1000 })
}

function showAbuseReport(){
    $j.prompt('<div id="reportNew"><div class="content"><h2 class="headerGreen w120"><span>zgłoszenie</span><span class="rightBg"></span></h2><form action=""><fieldset><div class="line scheme-4"><label for="field-36">typ zgłoszenia</label><select id="field-36"><option>dodaj</option></select></div><div class="line scheme-3"><label for="field-37">treść</label><textarea rows="" cols="" id="field-37"></textarea></div><div class="button"><input type="submit" value="wyślij" /></div></fieldset></form></div></div>',{ 
        buttons: { Ok: false, Cancel: true}, 
        prefix: 'reportNew', 
        top: '200px', 
        loaded:function(v,m){
            new Ajax.Updater('reportNew', '/frontend_dev.php/abuse/form', {
                asynchronous:true, 
                evalScripts:true 
            });
        }
    })
}

function showAjaxNotice(message) {
    $('notify-ac-text').innerHTML = '<p>'+message+'</p>';
    $j(document).ready(function(){ 
        $j.prompt($('notify-ajax-content').innerHTML,{ persistent: false, top: '200px' });
    })
}

function showPopup(innerHTML, prefix, callBack, ok, cancel)
{
    if(null == callBack)
    {
        $j.prompt(innerHTML, { buttons: { Ok: ok, Cancel: cancel}, prefix: prefix, top: '100px' });
    }
    else
    {
        $j.prompt(innerHTML, { callback: callBack, buttons: { Ok: ok, Cancel: cancel}, prefix: prefix, top: '100px' });
    }
} 

function closePopup(name)
{
    $j('#' + name).fadeOut('fast',function(){ $j(this).remove(); })
}

function closePopupByClick(name)
{
    $j('.' + name + 'close').click();
}

function breakTheFriendship(v,m){
    if (v) {
        location.href= breakFriendshipLink + v;      
    }
}

function pleaseLogin()
{
	response = new Ajax.Request('/zalogujsie', {asynchronous: false, evalScripts:false, onComplete: function (response) {
		$j.prompt(response.responseText,{ buttons: { Ok: false, Cancel: true}, persistent: false, prefix: 'login', top: '150px' })
	}});

	initFormValues();
}

function showLoginPanel()
{
	closePopup('loginbox');
	$j('#loginPanel').slideDown('slow');
}

var iv_chat_check_nb = 0;
function ivchatcheck(time, route, uroute, post, loader)
{
	new PeriodicalExecuter(function(ivchpe) {
    	new Ajax.Request(route, {
            asynchronous :true,
            evalScripts :true,
            onComplete : function (response, json) {
	    		if (json[0][0] == 'refresh' && json[0][1] == '1'){
	    			ivchpe.stop();
	    			iv_chat_check_nb =0;
	    			new Ajax.Updater('chat-list', uroute, {asynchronous:true, evalScripts:true, method:'get', onLoading:function(request, json){new Effect.Appear(loader, {});new Effect.Appear(loader, {});}, onSuccess:function(request, json){new Effect.Fade(loader, {});new Effect.Fade(loader, {});}});
	    		}else{
	    		}
	    		iv_chat_check_nb++;	    		
    		}
        });
    }, time);
}

function setCookie(c_name,value,expiredays){
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + '=' + escape(value)+
    ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString()) + ';path=/';
}

function getCookie(c_name){
    if (document.cookie.length > 0){
        c_start = document.cookie.indexOf(c_name + '=');
        if (c_start != -1){
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(';',c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return '';
}

$j(document).ready(function(){ system.start(); });


/* include js file: /js/layout/liveurls.stub.js */

/*
 * Live Url's @ plewus@euro-net.pl
 * Naspolke version 0.1, 19.08.2009
 */
var liveUrls = {
    start: function() {
        this.liveAdr(true);
        this.makeHashUrls();
        this.setCookie('nsHome', '', 0);
        this.setCookie('nsHistory', '', 0);
    },
    /*
     * Live url address change
     */
    liveAdr: function(e){},
    update: function(id, params){},
    makeHashUrls: function(){},
    manageHistory: function(val, page){},
    getCode: function(val){},
    setCookie: function(name, val, exp){},
    getCookie: function(name){}
}
$j(document).ready(function(){ liveUrls.start(); });

/* include js file: /js/IvAjaxValidationPlugin/IvAjaxValidation.js */

IvAjaxValidatorForms = Class.create( {
    initialize : function(form_name, json) {

        var forms_array = new Array();
        $$('form').each( function(s) {
            forms_array.push(s.id)
        });

        this.current_form = $(forms_array[forms_array.indexOf(form_name)]);

        this.current_form.getElements().findAll(this.findFormError).reverse()
                .each(this.turnOffTooltips);

        this.firstShown = false;
    },
    findFormError : function(element) {
        var error_field = Try.these( function() {
            element.up('div.line').previous('div.lineErrorWrapper').down(
                    'div.form_error');
            return true
        }) || false;
        return error_field;
    },
    turnOffTooltips : function(form_field) {

        // For tags compatibility
        if (!form_field.getAttribute('name')) return false;
        
        var parent_name = form_field.name;
        var reg = /^(.*)\[(.*)\]$/;
        var ar = reg.exec(form_field.name);

        var form_name_format = ar[1];
        var field_name = ar[2];

        var error_container = form_field.up('div.line').previous('div.lineErrorWrapper');
        var error_field = error_container.down('div.form_error');
        error_field.id = 'error_for_' + form_name_format + '_' + field_name;

        form_field.removeClassName('wrong');
        form_field.addClassName('correct');
        
        Try.these ( function () {
        	form_field.up('div.line').down('div.formDot').removeClassName('wrong');
        	form_field.up('div.line').down('div.formDot').addClassName('correct');
        })
        
        error_container.hide();
        error_container.removeClassName('infoBox');
        error_container.removeClassName('errorBox');
        error_field.innerHTML = "";
        error_field.removeClassName("lineError");
        error_field.removeClassName("lineInfo");
    },
    hideAllTooltips: function () {
        this.current_form.getElements().findAll(this.findFormError).reverse()
        .each(this.hideTooltip.bind(this));
        this.current_form.stopObserving('click');
    },
    hideTooltip: function (form_field) {
        var error_container = form_field.up('div.line').previous(
        'div.lineErrorWrapper');
        error_container.hide();
        form_field.observe('focus', this.showTooltip);
    },
    turnOnFocusError: function (form_field) {
        form_field.observe('focus', this.showTooltip);
    },
    showTooltip: function () {
        var error_container = this.up('div.line').previous(
        'div.lineErrorWrapper');
        
        if (navigator.userAgent.indexOf("Opera") == 0) {
            error_container.show();
        } else {
            new Effect.Appear(error_container, {
                duration :0.3
            });
        }
    },
    turnOnTooltip : function(element, value) {
        var error_field = this.current_form.down('#'+element);
        var error_container = error_field.up('div.lineErrorWrapper');

        if (error_field) {
            var parent_id = element.substr(10);
            var form_field = this.current_form.down('#'+parent_id);

            form_field.removeClassName('correct');
            form_field.addClassName('wrong');
            
            Try.these ( function () {
            	form_field.up('div.line').down('div.formDot').removeClassName('correct');
            	form_field.up('div.line').down('div.formDot').addClassName('wrong');
            });

            error_container.addClassName('errorBox');
            error_field.update("<span>" + value + "</span>");

            error_field.addClassName("lineError");
            error_field.show();

            if (!this.firstShown) {
                this.firstShown = true;
                this.current_form.getElements().findAll(this.findFormError).reverse()
                .each(this.hideTooltip.bind(this));
                form_field.focus();
                
                var self = this;
                Event.observe(this.current_form, 'click', function(event) { 
                	self.current_form.stopObserving('click');
                	self.hideTooltip(form_field);
                	}
                );
                
                if (navigator.userAgent.indexOf("Opera") == 0) {
                    error_container.show();
                } else {
                    new Effect.Appear(error_container, {
                        duration :0.3
                    });
                }
            }
        }
    }

});

IvAjaxValidator = Class.create( {
            initialize : function(form_field) {
                this.form_field = $(form_field);
                this.validation_enabled = $A(arguments)[1] || true;
                this.helpers_enabled = $A(arguments)[2] || true;

                if (this.form_field.hasClassName('text')) {

                    this.initializzed = true;

                    var reg = /^(.*)\[(.*)\]$/;
                    var ar = reg.exec(this.form_field.name);

                    this.form_name_format = ar[1];
                    this.field_name = ar[2];

                    this.error_container = this.form_field.up('div.line')
                            .previous('div.lineErrorWrapper');
                    this.error_field = this.error_container.down('div');
                    this.error_field.id = 'error_for_' + this.form_field.id;
                    this.field_dot = this.form_field.up('div.line').down('div.formDot');

                    if (this.validation_enabled) {
                        this.form_field.observe('blur', this.addValidation
                                .bind(this));
                    }

                    if (this.helpers_enabled) {
                        this.form_field.observe('focus', this.addHelpers
                                .bind(this));
                    }
                } else {
                    this.initializzed = false;
                    return false;
                }

            },
            isInitializzed : function() {
                return this.initializzed;
            },
            addValidation : function() {
            	var self = this;
            	var serialized_form = Try.these( function() {
		            return $(self.form_field.form.id).serialize();
            	}) || false;
            	if (!serialized_form) return false;
            	
                var params = "el=" + this.form_field.name + "&"
                        + serialized_form;
                var req = new Ajax.Request('/validate/element', {
                    asynchronous :true,
                    evalScripts :true,
                    onComplete :this.JsonUpdaterElement.bind(this),
                    parameters :params
                });
                this.error_container.hide();

            },
            addHelpers : function() {
                var next_last_wrapper = null;
                var prev_last_wrapper = null;

                var object = this;

                if (!this.isErrorVisible()) {
                    this.form_field.observe('keyup', this.delayedInput
                            .bind(object));

                    var tpl = new Template(
                            '<div class="lineInfoBox"><div class="lineInfoBorder">#{hint}</div></div>');

                    if (undefined != this.form_field.up('div.line').down(
                            'div.lineHelpWrapper')) {
                        this.markFieldClear();

                        this.help_container = this.form_field.up('div.line')
                                .down('div.lineHelpWrapper');
                        
                        if (this.help_container.innerHTML=='') return false;
                        this.error_container.addClassName('infoBox');
                        this.error_field.addClassName('lineInfo');
                        this.error_field.update(tpl.evaluate( {
                            hint :this.help_container.innerHTML
                        }));

                        // delay to better handle
                        var object = this;
                        window.setTimeout( function() {
                            new Effect.Appear(object.error_container, {
                                duration :0.3
                            });
                        }, 500);
                    }
                }
            },
            delayedInput : function() {
                var sec = 2; // 2 seconds default timeout

                if (this.form_field.checker) {
                    window.clearTimeout(this.form_field.checker);
                }

                var input = this.form_field;
                var object = this;
                this.form_field.checker = ( function(inp, val, f) {
                    if (inp.value == val)
                        f()
                }).delay(sec, input, input.value, object.addValidation
                        .bind(object));
            },
            markFieldClear : function() {
                this.form_field.removeClassName('wrong');
                this.form_field.addClassName('correct');
                
                var self = this;
                Try.these( function (){
                	self.field_dot.removeClassName('wrong');
                	self.field_dot.addClassName('correct');
                });

                this.error_container.hide();
                this.error_container.removeClassName('infoBox');
                this.error_container.removeClassName('errorBox');
                this.error_field.innerHTML = "";
                this.error_field.removeClassName("lineError");
                this.error_field.removeClassName("lineInfo");

                this.helper_show = false;
                this.error_show = false;

                this.form_field.stopObserving('focus');
                this.form_field.up('div.line').removeClassName('error');
            },
            JsonUpdaterElement : function(request, json) {
                this.markFieldClear();

                if (null != json) {
                    var numElementsInResponse = json.length;
                } else {
                    var numElementsInResponse = 0;
                }

                if (numElementsInResponse == 0) {
                    this.form_field
                            .observe('focus', this.addHelpers.bind(this));
                } else {

                    var elementId;
                    var elementText;

                    for ( var i = 0; i < numElementsInResponse; i++) {
                        elementId = json[i][0];
                        elementText = json[i][1];

                        this.form_field.removeClassName('correct');
                        this.form_field.addClassName('wrong');
                        
                        var self = this;
                        Try.these( function (){
                        	self.field_dot.removeClassName('correct');
                        	self.field_dot.addClassName('wrong');
                        });


                        this.error_container.addClassName('errorBox');
                        this.error_field.update("<span>" + elementText + "</span>");
                        this.error_field.addClassName("lineError");

                        this.form_field.observe('focus', this.showError.bind(this));
                        this.form_field.up('div.line').addClassName('error');
                    }
                }
            },
            showError : function() {
                this.error_field.show();
                this.error_show = true;

                if (navigator.userAgent.indexOf("Opera") == 0) {
                    this.error_container.show();
                } else {
                    new Effect.Appear(this.error_container, {
                        duration :0.3
                    });
                }
            },
            isErrorVisible : function() {
                if (this.error_field.hasClassName('lineError')) {
                    return true;
                } else {
                    return false;
                }
            },
            isHelperVisible : function() {
                return this.helper_show;
            }
        });

function IvAV_JSONUpdater(request, json, hidden_id, form_id) {
    current_form = new IvAjaxValidatorForms(form_id, json);

    var numElementsInResponse = json.length;

    if (numElementsInResponse == 0) {
        eval($(hidden_id).value);
    } else {
        var elementId;
        var elementText;

        for ( var i = 0; i < numElementsInResponse; i++) {
            elementId = json[i][0];
            elementText = json[i][1];

            current_form.turnOnTooltip(elementId, elementText);
        }
    }
}

function initFormValues() {
    $$('input[type=text]').each( function(s) {
        new IvAjaxValidator(s);
    });
    $$('input[type=password]').each( function(s) {
        new IvAjaxValidator(s);
    });
    $$('textarea').each( function(s) {
        new IvAjaxValidator(s);
    });
    $$('input[type=radio]').each( function(s) {
        new IvAjaxValidator(s);
    });
    $$('select').each( function(s) {
        new IvAjaxValidator(s);
    });
}

document.observe("dom:loaded", initFormValues);


/* include js file: /js/IvAjaxValidationPlugin/IvEditInPlace.js */

var eipFields = new Object();

IvPlaceEditor = Class.create({
  initialize: function(name, schema, renderer, saver) {
    this.field_schema = schema;
    this.field_name = name;
    this.render_url = renderer;
    this.save_url = saver;
    this.field_id_full = this.field_schema + '_' + this.field_name;
    this.field_name_full = schema + '[' + name + ']'; 
    this.div_name = 'eip_' + this.field_id_full ;
    this.field_outer_div = $(this.div_name);
    
    if (undefined == this.field_outer_div) {
        return false;
    }
    
    this.form = this.field_outer_div.up('form');

        this.addEditButton();

    if(this.field_name.slice(0, 4) == 'tags') this.activateTags();
    
    window.eipFields[this.field_name_full] = this;
  },
  activateField: function() {
        this.field_outer_div.stopObserving();
        //Event.stop(event);

        this.field_outer_div_content = this.field_outer_div.innerHTML;
        
        new Ajax.Updater(this.field_outer_div, this.render_url, { onComplete: this.shoutForCallback.bind(this), asynchronous: false, evalScripts: true, parameters: 'element=' + this.field_name + '&' + this.form.serialize()});

        this.form_field_control = this.getFormField();
        new IvAjaxValidator(this.form_field_control);
          
        this.form_value = this.getFormValue();

        Element.addClassName(this.field_outer_div, 'nowedit');
        Element.addClassName(this.field_outer_div.parentNode.parentNode.parentNode, 'neWrap');

        var self = this;
        Try.these( function () { return self.editButton.remove() } );
        this.addActionButtons();
        
        Try.these( function () { 
            this.form_field_control.focus();
            return true;
        });
  },
  shoutForCallback: function () {
    if(typeof window.editInPlaceOnComplete == 'function') {
        //function exists, so we can now call it
        editInPlaceOnComplete(this.field_id_full, this.field_name, this.field_schema);
    }
  },
  getFormField: function () {
    var outer_div = this.field_outer_div;
    return Try.these(
             function() { outer_div.down('input').id; return outer_div.down('input') },
             function() { outer_div.down('select').id; return outer_div.down('select') },
             function() { outer_div.down('textarea').id; return outer_div.down('textarea') }
          ) || false;
  },
  addActionButtons: function () {
        this.a_save = new Element('a', { href: '#' }).addClassName('save').update('save');
        this.a_cancel = new Element('a', { href: '#' }).addClassName('cancel').update('cancel');
        this.a_save.observe('click', this.saveField.bind(this));
        this.a_cancel.observe('click', this.restoreField.bind(this));
        if(this.field_name.slice(0, 4) != 'tags'){
            this.field_outer_div.appendChild(this.a_save);
            this.field_outer_div.appendChild(this.a_cancel);
            
            // observe keys events
            var self = this;
            Event.observe(this.form_field_control, 'keydown', function(ev) {
                if(ev.keyCode==Event.KEY_RETURN) {
                    if ('textarea' != self.form_field_control.type) {
                        self.saveField(ev);
                    }
                    return false;
                }
                else if (ev.keyCode==Event.KEY_ESC) {
                    self.restoreField(ev);
                    return false;
                }
            });
            
        }else{
            // this.field_outer_div.appendChild(this.a_save);
            // console.log(this.field_outer_div);
        }
  },
  addEditButton: function () {
        this.editButton = new Element('a', { 'href': '#', 'onclick': 'return false;' }).addClassName('edit').update('edytuj');
        this.editButton.observe('click', this.activateField.bind(this) );
        this.field_outer_div.parentNode.parentNode.parentNode.insert({ bottom: this.editButton} );        
        
  },
  saveField: function (event) {
    /*    if((this.field_name == 'first_name' || this.field_name == 'last_name') && this.getFormValue() == ''){
            //alert('To pole nie może być puste!');
            var field = this;
            $$('.lineErrorWrapper').each(function(e){ e.hide(); });
            $('error_for_' + field.field_id_full).addClassName('lineError');
            $('error_for_' + field.field_id_full).parentNode.show();
            return false;
        } */

            this.field_outer_div.stopObserving();
            this.a_save.stopObserving();
            this.a_cancel.stopObserving();
            if (event != null)  Event.stop(event);
            new Ajax.Updater(this.field_outer_div, this.save_url, {onLoading: this.savingActionStart(), onComplete: this.checkJson.bind(this), asynchronous: false, evalScripts: true, parameters: this.form.serialize() + '&element=' + this.field_name });

  },
  getFormValue: function ()
  {
    var ele = this;
    test = Try.these(
             function() { return ele.form.getInputs('radio','user_group['+ ele.field_name +']').find (function(radio) { return radio.checked }).value },
             function() { return $(ele.field_id_full).value }
          );
    return test;
  },
  restoreField: function (event) {
        Event.stop(event);
        var field = this;  
        Try.these( function () { 
            $('error_for_' + field.field_id_full).innerHTML = '';
            $('error_for_' + field.field_id_full).parentNode.hide();//removeClassName('lineError');
            return true;  } );

        this.field_outer_div.innerHTML = this.field_outer_div_content;
        this.field_outer_div.observe('click', this.activateField.bind(this));
        Element.removeClassName(this.field_outer_div, 'nowedit');
        Element.removeClassName(this.field_outer_div.parentNode.parentNode.parentNode, 'neWrap');
        this.addEditButton();

  },  
  savingActionStart: function () {
        var div = new Element('div', {className: 'loader'}).update('<img src=\"/images/page/loader_green.gif\" alt=\"\" />');
        Element.addClassName(this.field_outer_div, 'nowsave');
        this.field_outer_div.insert( { top: div} ); 
  },
  checkJson: function(request, json) {
    
    Element.removeClassName(this.field_outer_div, 'nowsave');
    
    if (null != json) {
        var responses = json;
        var resSize = responses.length;
        if (resSize > 0 && responses[0] != '')
        {
            this.addActionButtons();
            this.form_field_control = this.getFormField();
            new IvAjaxValidator(this.form_field_control);
            
            var field = this;
            $$('.lineErrorWrapper').each(function(e){ e.hide(); });
            $('error_for_' + field.field_id_full).addClassName('lineError');
            $('error_for_' + field.field_id_full).parentNode.show();            
        }
    }
    else
    {
        Element.removeClassName(this.field_outer_div, 'nowsave');
        Element.removeClassName(this.field_outer_div, 'nowedit');
        Element.removeClassName(this.field_outer_div.parentNode.parentNode.parentNode, 'neWrap');
        
        if(this.field_name.slice(0, 4) == 'tags') {
            this.activateField();    
        }
        else {
            this.addEditButton();
        }
    }
  },
  activateTags: function() {
    this.activateField();
  }
});


/* include js file: /IvFacebookPlatformPlugin/js/fbconnect.js */


/*
 * The facebook_onload statement is printed out in the PHP. If the user's logged in
 * status has changed since the last page load, then refresh the page to pick up
 * the change.
 *
 * This helps enforce the concept of "single sign on", so that if a user is signed into
 * Facebook when they visit your site, they will be automatically logged in -
 * without any need to click the login button.
 *
 * @param already_logged_into_facebook  reports whether the server thinks the user
 *                                      is logged in, based on their cookies
 *
 */
function facebook_onload(already_logged_into_facebook) {
  // user state is either: has a session, or does not.
  // if the state has changed, detect that and reload.
  FB.ensureInit(function() {
      FB.Facebook.get_sessionState().waitUntilReady(function(session) {
          var is_now_logged_into_facebook = session ? true : false;

          // if the new state is the same as the old (i.e., nothing changed)
          // then do nothing
          if (is_now_logged_into_facebook == already_logged_into_facebook) {
            return;
          }

          // otherwise, refresh to pick up the state change
          refresh_page();
        });
    });
}

/*
 * Our <fb:login-button> specifies this function in its onlogin attribute,
 * which is triggered after the user authenticates the app in the Connect
 * dialog and the Facebook session has been set in the cookies.
 */
function facebook_onlogin_ready() {
  // In this app, we redirect the user back to index.php. The server will read
  // the cookie and see that the user is logged in, and will deliver a new page
  // with content appropriate for a logged-in user.
  //
  // However, a more complex app could use this function to do AJAX calls
  // and/or in-place replacement of page contents to avoid a full page refresh.
  refresh_page();
}

/*
 * Do a page refresh after login state changes.
 * This is the easiest but not the only way to pick up changes.
 * If you have a small amount of Facebook-specific content on a large page,
 * then you could change it in Javascript without refresh.
 */
function refresh_page() {
  window.location = location.href.replace(/#.*/,"");
}

/*
 * Prompts the user to grant a permission to the application.
 */
function facebook_prompt_permission(permission) {
  FB.ensureInit(function() {
    FB.Connect.showPermissionDialog(permission);
  });
}

/*
 * Show the feed form. This would be typically called in response to the
 * onclick handler of a "Publish" button, or in the onload event after
 * the user submits a form with info that should be published.
 *
 */
function facebook_publish_feed_story(form_bundle_id, template_data) {
  // Load the feed form
  FB.ensureInit(function() {
          FB.Connect.showFeedDialog(form_bundle_id, template_data);
          //FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, FB.FeedStorySize.shortStory, FB.RequireConnect.promptConnect);

      // hide the "Loading feed story ..." div
      //$('feed_loading').style.visibility = "hidden";
  });
}

/*
 * If a user is not connected, then the checkbox that says "Publish To Facebook"
 * is hidden in the "add run" form.
 *
 * This function detects whether the user is logged into facebook but just
 * not connected, and shows the checkbox if that's true.
 */
function facebook_show_feed_checkbox() {
  FB.ensureInit(function() {
      FB.Connect.get_status().waitUntilReady(function(status) {
          if (status != FB.ConnectState.userNotLoggedIn) {
            // If the user is currently logged into Facebook, but has not
            // authorized the app, then go ahead and show them the feed dialog + upsell
            checkbox = $('publish_fb_checkbox');
            if (checkbox) {
              checkbox.style.visibility = "visible";
            }
          }
        });
    });
}
  
function fbs_click(shref) {
	 window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(shref),'sharer','toolbar=0,status=0,width=626,height=290');
	 return false;
}

function fbs_compose(title,msgin,url) {
	 window.open('http://www.facebook.com/inbox?compose=1&subject=' + escape(title) + '&message=' + escape(msgin + "\n")  + escape(url),'sharer','toolbar=0,status=0,width=626,height=360');
	 return false;
}

function facebook_share(url) {
	  FB.ensureInit(function() {
		  FB.Connect.showShareDialog(url, 'refresh_page');
	  });
	  return false;
} 

function facebook_msg(title,msgin,url) {
	var iframeDom=FB.XdComm.Server.singleton.createNamedHiddenIFrame('dialogontent','','fb_msg_iframe',null);
	iframeDom.src='http://www.facebook.com/inbox?compose=1&subject=' + title + '&message=' + escape(msgin + "\n")  + escape(url);
	var myDialog=new FB.UI.PopupDialog('Wyślij wiadomość',iframeDom,true,false).show();
	return false;
}

function facebook_invite(url) {
	var iframeDom=FB.XdComm.Server.singleton.createNamedHiddenIFrame('invcontent','','fb_msg_iframe',null);
	iframeDom.src= url;
	var myDialog=new FB.UI.PopupDialog('Zaproś',iframeDom,true,false).show();
	return false;
}