/*
Performer JavaScript library (http://performerjs.org)
Created by Chris Taylor (http://www.stillbreathing.co.uk)
Additional work by kourge and Danny Linkov
Version 1.0

This work is released under a Creative Commons Attribution-ShareAlike 3.0 licence

You are free:

* to Share — to copy, distribute and transmit the work
* to Remix — to adapt the work

Under the following conditions:

* Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
* Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.
* For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page: http://performerjs.org.
* Any of the above conditions can be waived if you get permission from the copyright holder.
* Nothing in this license impairs or restricts the author's moral rights.
*/
var Performer={version:"1.0",Scriptaculous:false,Prototype:false,jQuery:false,MooTools:false,Counter:0,Performer:function(){P.DetectLibrary();if(P.Scriptaculous||P.Prototype||P.jQuery||P.MooTools){P.Start()}},DetectLibrary:function(){if(window.Scriptaculous&&typeof window.Scriptaculous!="undefined"){P.Scriptaculous=true}else{if(window.Prototype&&typeof window.Prototype!="undefined"&&window.Prototype.Version){P.Prototype=true}else{if(window.MooTools&&typeof window.MooTools!="undefined"&&window.MooTools.version){P.MooTools=true}else{if(window.jQuery&&typeof window.jQuery!="undefined"){P.jQuery=true}}}}},Start:function(){P.domLoaded(function(){P.Debugging=false;P.Debug("Performer.Performer","function");P.Reloaders=[];P.Repeaters=[];P.Groups=null;P.Duplicators=[];P.TextValue=[];P.NewTextValue=[];P.Hash=parent.location.hash.replace(new RegExp("^[#]+","g"),"");P.Effects=["slideup","slidedown","blinddown","blindup","fadein","fadeout"];P.Init()})},Init:function(){P.CheckDebug();P.Debug("Performer.Init","function");P.DoTransformers();P.DoListeners();P.addClassName(P.$$("body")[0],"performer-enabled")},ReInit:function(el){P.Debug("Performer.ReInit","function");P.DoTransformers(el,true);P.DoListeners(el,true)},DoListeners:function(el,reinit){if(reinit===undefined){reinit=false}if(el===undefined){el=""}P.Listeners(el,"form.formchecker","CheckForm","submit",reinit);P.Listeners(el,".toggler","Toggle","click,keypress",reinit);P.Listeners(el,".switcher","Switch","click,keypress",reinit);P.Listeners(el,".loader","Load","click,keypress",reinit);P.Listeners(el,".deleter","Delete","click,keypress",reinit);P.Listeners(el,".toggleloader","ToggleLoad","click,keypress",reinit);P.Listeners(el,".sizer","Size","click,keypress",reinit);P.Listeners(el,".resizer","Resize","keypress",reinit);P.Listeners(el,".tabber","Tab","click,keypress",reinit);P.Listeners(el,".accordianer","Accordian","click,keypress",reinit);P.Listeners(el,".selector","Select","change,keypress",reinit);P.Listeners(el,".limiter","Limit","keyup,keydown",reinit);P.Listeners(el,".editor","Edit","click,keypress",reinit);P.Listeners(el,".uneditor","UnEdit","click,keypress",reinit);P.Listeners(el,".setter","Set","click,keypress",reinit);P.Listeners(el,".prompter","RemovePrompt","focus",reinit);P.Listeners(el,".prompter","CheckPrompt","blur",reinit);P.Listeners(el,".popper","Pop","click,keypress",reinit);P.Listeners(el,".passwordchecker","CheckPassword","keyup",reinit);P.Listeners(el,".matcher","Match","keyup",reinit);P.Listeners(el,".grouptoggler","GroupToggle","click,keypress",reinit);P.Listeners(el,".submitter","Submit","submit",reinit);P.Listeners(el,".looperforward","Loop","click,keypress",reinit);P.Listeners(el,".looperback","Loop","click,keypress",reinit);P.Listeners(el,".looperfirst","Loop","click,keypress",reinit);P.Listeners(el,".looperlast","Loop","click,keypress",reinit);P.Listeners(el,".tooltipper","Tooltip","mouseover,focus",reinit);P.Listeners(el,".popup","Tooltip","mouseover,focus",reinit);P.Listeners(el,".modalwindower","ModalWindow","click,keypress",reinit);P.Listeners(el,".modalwindowcloser","CloseModal","click,keypress",reinit);P.Listeners(el,".contextmenuer","ContextMenu","mouseup",reinit);P.Listeners(el,".styler","Style","click,keypress",reinit);P.Listeners(el,".duplicator","Duplicate","click,keypress",reinit);P.Listeners(el,".morpher","Morph","click,keypress",reinit);P.Listeners(el,"form.submitlocker","SubmitLock","submit",reinit);P.Listeners(el,"a.toggle-performer-debug","ToggleDebug","click,keypress",reinit);P.Listeners(el,".hooker-click","Hooker","click,keypress",reinit);P.Listeners(el,".hooker-keypress","Hooker","keypress",reinit);P.Listeners(el,".hooker-change","Hooker","change",reinit);P.Listeners(el,".hooker-mouseover","Hooker","mouseover",reinit);P.Listeners(el,".hooker-mouseout","Hooker","mouseout",reinit);P.Listeners(el,".hooker-submit","Hooker","submit",reinit);P.Listeners(el,".hooker-focus","Hooker","focus",reinit);P.Listeners(el,".hooker-blur","Hooker","blur",reinit)},DoTransformers:function(el,reinit){if(reinit===undefined){reinit=false}if(el===undefined||el==="performerjsdebugwrapper"){el=""}P.Transformers(el,".hider","Hide",reinit);P.Transformers(el,".shower","Show",reinit);P.Transformers(el,".focusser","Focus",reinit);P.Transformers(el,".limiter","LimitNotifier",reinit);P.Transformers(el,".reloader","Reload",reinit);P.Transformers(el,".preloader","Preload",reinit);P.Transformers(el,".prompter","SetPrompt",reinit);P.Transformers(el,".truncator","Truncate",reinit);P.Transformers(el,"ul.looper,ol.looper","InitLoop",reinit);P.Transformers(el,".tab","InitTabs",reinit);P.Transformers(el,".contextmenuer","DisableContextMenu",reinit);P.Transformers(el,".pager","Page",reinit);P.Transformers(el,".loadmorpher","Morph",reinit);P.Transformers(el,".loadtoggler","Toggle",reinit);P.Transformers(el,".loadgrouptoggler","GroupToggle",reinit);P.Transformers(el,".loadstyler","Style",reinit);P.Transformers(el,".loadmodalwindower","ModalWindow",reinit)},Listeners:function(el,classNames,f,event,reinit){var b=P.bind;var n=P.nodeName;var fe=P.forEach;var d=P.$$;var dbg=P.Debug;var cls=classNames.split(",");fe(cls,function(className){if(el!==undefined){el=el+" "}var els=d("body "+el+className);if(els){dbg("Performer.Listeners("+el+className+") - "+els.length+" elements found","function");fe(els,function(element){if(n(element)){fe(event.split(","),function(event){b(element,event,P[f])})}})}})},Transformers:function(el,classNames,f,reinit){var n=P.nodeName;var fe=P.forEach;var d=P.$$;var dbg=P.Debug;var cls=classNames.split(",");fe(cls,function(className){if(el!==undefined){el=el+" "}var els=d("body "+el+className);if(els){dbg("Performer.Transformers("+el+className+") - "+els.length+" elements found","function");fe(els,function(element){if(n(element)){P[f](element)}})}})},CheckDebug:function(){P.Debug("Performer.CheckDebug","function");var d=P.$$(".performer-debug");if(d){P.Debugging=true;P.PrepareDebug()}},classParam:function(classNames,paramName,defaultValue){var cls=null;var val=defaultValue;var i=classNames.length;while(i--){cls=classNames[i];if(cls&&cls.substring(0,paramName.length+1)==paramName+"-"){val=cls.replace(paramName+"-","")}}return val},Hooker:function(e){var el=P.eventElement(e);if(el&&P.getAttribute(el,"id")&&P.getAttribute(el,"class")){var t=e.type;var func=P.classParam(P.classNames(el),"func",null);if(eval("typeof("+func+")")=="function"){eval(func+"(el,e)")}}},Page:function(el){var elid=P.identify(el);el=P.$(elid);var cls=P.classNames(el);var selector=P.classParam(cls,"selector","");var children;if(selector.length>0){children=P.children(el,"#"+elid+"-"+selector)}else{children=P.children(el)}var pagesize=P.classParam(cls,"pagesize",10);var startpage=P.classParam(cls,"startpage",1);if(children.length>pagesize){var page=1;var i=0;var acn=P.addClassName;var h=P.Hide;P.forEach(children,function(el){if(i<page*pagesize&&i>=(page-1)*pagesize){}else{page++}acn(el,"pageelement");acn(el,"page"+page);h(el);i++});var s=P.Show;P.forEach(P.$$("#"+elid+" .page"+startpage),function(el){s(el)});var menu=P.BuildPageMenu(elid,page,startpage);P.insertAfter(el,menu);var links=P.$$("."+elid+"pagerlink");var b=P.bind;P.forEach(links,function(el){b(el,"click",P.ShowPage);b(el,"keypress",P.ShowPage)})}},BuildPageMenu:function(elid,page,startpage){var menu='<ul class="performer-pagination">';var currentpage="";for(var x=1;x<=page;x++){if(x==startpage){currentpage=" currentpage"}menu+='<li><a href="#'+elid+"-page"+x+'" class="'+elid+"pagerlink"+currentpage+'" id="'+elid+"-page"+x+'">'+x+"</a></li>";currentpage=""}menu+="</ul>";return menu},ShowPage:function(e){var el=P.eventElement(e);var elid=P.identify(el);var parts=elid.split("-page");var fe=P.forEach;var h=P.Hide;fe(P.$$("#"+parts[0]+" .pageelement"),function(el){h(el)});var s=P.Show;fe(P.$$("#"+parts[0]+" .page"+parts[1]),function(el){s(el)});var rcn=P.removeClassName;fe(P.$$("."+parts[0]+"pagerlink"),function(el){rcn(el,"currentpage")});P.addClassName(P.$(elid),"currentpage");P.stopEvent(e)},ContextMenu:function(e){var el=P.eventElement(e);var h=P.Hide;var b=P.bind;P.forEach(P.$$(".performercontextmenu"),function(el){h(el)});if(el&&((e.which&&e.which==3)||(e.button&&e.button==3)||(e.rightClick))){var targetEl=P.classParam(P.classNames(el),"targetEl",false);var position=P.cursorPosition(e);if(position&&targetEl&&P.$(targetEl)){var id=P.identify(el);targetEl=P.$(targetEl);P.addClassName(targetEl,"performercontextmenu");targetEl.style.position="absolute";targetEl.style.zIndex="10000";targetEl.style.top=position[1]+"px";targetEl.style.left=position[0]+"px";P.Show(targetEl);e.preventDefault();b(P.$$("body")[0],"click",P.HideContextMenu);b(P.$$("body")[0],"keypress",P.HideContextMenu);P.stopEvent(e);return false}}},DisableContextMenu:function(el){P.disableContext(el)},HideContextMenu:function(e){var els=P.$$(".performercontextmenu");var rcn=P.removeClassName;var h=P.Hide;P.forEach(els,function(el){rcn(el,"performercontextmenu");h(el)})},Set:function(e){var el=P.eventElement(e);if(el&&P.nodeName(el)){var cls=P.classNames(el);var value=unescape(P.classParam(cls,"value",""));var targetEl=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));P.setValue(P.$(targetEl),value);P.stopEvent(e)}},InitLoop:function(elid){P.Debug("Performer.InitLoop","function");var el=P.$(elid);var shown=0;var i=0;var n=P.nodeName;var h=P.Hide;var hcn=P.hasClassName;var id=P.identify;var hsh=P.Hash;P.forEach(P.children(el),function(child){if(n(child)){h(child);if(hcn(child,"looperdefault")||hsh==id(child)){shown=i}i++}});P.Show(P.children(el)[shown])},Loop:function(e){r=false;var el=P.findEventElement(e,"A");if(e.type=="click"||P.keyCode(e)==13){var cls=P.classNames(el);var loop=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));if(P.$(loop)){var i=0;var toshow=0;var nowshowing=0;var n=P.nodeName;var v=P.visible;var dbg=P.Debug;var h=P.Hide;P.forEach(P.children(P.$(loop)),function(child){if(n(child)&&v(child)){dbg("- Currently showing item "+i,"subfunction");nowshowing=i}h(child);i++});if(P.hasClassName(el,"looperback")){P.Debug("Performer.Loop (back)","function");toshow=nowshowing-1;if(toshow<0){toshow=(P.children(P.$(loop)).length-1)}}else{if(P.hasClassName(el,"looperforward")){P.Debug("Performer.Loop (forward)","function");toshow=nowshowing+1;if(toshow>=P.children(P.$(loop)).length){toshow=0}}else{if(P.hasClassName(el,"looperfirst")){P.Debug("Performer.Loop (first)","function");toshow=0}else{if(P.hasClassName(el,"looperlast")){P.Debug("Performer.Loop (last)","function");toshow=P.children(P.$(loop)).length-1}}}}P.Debug("- Showing item "+toshow,"subfunction");P.Show(P.children(P.$(loop))[toshow],"fadein");P.stopEvent(e)}}},Tooltip:function(e,cssClass){var el=P.eventElement(e);if(!cssClass){cssClass="performertooltip"}var id=P.identify(el);if(el&&P.nodeName(el)&&!P.$(id+"_performertooltip")){var cls=P.classNames(el);var text=false;var originaltext="";if(P.getAttribute(el,"title")&&P.getAttribute(el,"title")!=""){originaltext=P.getAttribute(el,"title");text="<p>"+originaltext.replace(/\r/g,"<br />\n")+"</p>"}else{var targetEl=P.$(P.classParam(cls,"targetEl",false));if(targetEl){text=targetEl.innerHTML}}var position=false;if(e.type=="mouseover"){position=P.cursorPosition(e)}else{position=P.elementPosition(el);position[1]=position[1]+el.offsetHeight}if(position&&text){var className=P.classParam(cls,"className",cssClass);var width=P.classParam(cls,"width",300);var leftoffset=position[0]-(width/2);var topoffset=position[1]+16;if(leftoffset<0){leftoffset=25}if(document.body.scrollWidth&&((leftoffset+width)>document.body.scrollWidth)){leftoffset=(document.body.scrollWidth-width-25)}P.setAttribute(el,"title","");P.setAttribute(el,"temptitle",originaltext);if(P.getAttribute(el,"alt")){P.setAttribute(el,"tempalt",originaltext);P.setAttribute(el,"alt","")}var parent=P.up(el,"");if(parent.getAttribute("title")){P.setAttribute(parent,"temptitle",originaltext);P.setAttribute(parent,"title","")}var tooltip=document.createElement("div");var tooltipinner=document.createElement("div");tooltipinner.className=cssClass+"inner";tooltipinner.innerHTML=text;tooltip.id=id+"_performertooltip";tooltip.className=className;tooltip.style.position="absolute";tooltip.style.zIndex="10000";tooltip.style.width=width+"px";tooltip.style.top=topoffset+"px";tooltip.style.left=leftoffset+"px";tooltip.appendChild(tooltipinner);P.bind(el,"mouseout",P.HideTooltip);P.bind(el,"blur",P.HideTooltip);document.getElementsByTagName("body")[0].appendChild(tooltip)}}},HideTooltip:function(e){var el=P.eventElement(e);var id=P.identify(el);if(el&&P.$(id+"_performertooltip")){P.remove(P.$(id+"_performertooltip"));var originaltext=P.getAttribute(el,"temptitle");P.setAttribute(el,"title",originaltext);P.removeAttribute(el,"temptitle");if(P.getAttribute(el,"tempalt")){P.setAttribute(el,"alt",originaltext);P.removeAttribute(el,"tempalt")}var parent=P.up(el,"");if(parent.getAttribute("temptitle")){P.setAttribute(parent,"title",originaltext);P.removeAttribute(parent,"temptitle")}}},ModalWindow:function(e){var eve=P.eventOrElement(e);var el=eve.el;if(el){var id=P.identify(el);var cls=P.classNames(el);var delay=P.classParam(cls,"delay",0)*1000;var outerClassName=P.classParam(cls,"outerClassName","performermodalouter");var innerClassName=P.classParam(cls,"innerClassName","performermodalinner");var lightBox=P.classParam(cls,"lightBox",true);var closer=P.classParam(cls,"closer",true);var targetPage=P.classParam(cls,"targetPage",false);var horizontalPadding=P.classParam(cls,"horizontalPadding",100);var verticalPadding=P.classParam(cls,"verticalPadding",100);var screenDim=P.classParam(cls,"screenDim",6);if(delay===0){P.DoModalWindow(targetPage,lightBox,screenDim,outerClassName,innerClassName,horizontalPadding,verticalPadding,closer)}else{setTimeout(function(){P.DoModalWindow(targetPage,lightBox,screenDim,outerClassName,innerClassName,horizontalPadding,verticalPadding,closer)},delay)}if(eve.stop){P.stopEvent(e)}}},DoModalWindow:function(targetPage,lightBox,screenDim,outerClassName,innerClassName,horizontalPadding,verticalPadding,closer){if(P.createModal(targetPage,lightBox,screenDim,outerClassName,innerClassName,horizontalPadding,verticalPadding,closer)){P.addClassName(P.$("performer_modal"),"performerloading");P.DoLoad(targetPage,"performer_modal","get","fillandinit")}},createModal:function(targetPage,lightBox,screenDim,outerClassName,innerClassName,horizontalPadding,verticalPadding,closer){if(targetPage&&!P.$("performer_modal")){var lb=false;if(lightBox){lb=document.createElement("div");lb.className=outerClassName;lb.style.zIndex=100000;lb.style.position="fixed";lb.style.left="0px";lb.style.right="0px";lb.style.bottom="0px";lb.style.top="0px";lb.style.opacity="0."+screenDim;lb.style.filter="alpha(opacity="+screenDim+"0)";lb.id="performer_modal_outer"}var inner=document.createElement("div");inner.className=innerClassName;inner.id="performer_modal";inner.style.overflow="auto";inner.style.zIndex=100001;inner.style.position="fixed";inner.style.left=horizontalPadding+"px";inner.style.right=horizontalPadding+"px";inner.style.bottom=verticalPadding+"px";inner.style.top=verticalPadding+"px";if(lightBox){document.getElementsByTagName("body")[0].appendChild(lb)}document.getElementsByTagName("body")[0].appendChild(inner);if(closer){var closelink=document.createElement("div");closelink.id="performer_modal_closer";closelink.style.zIndex=100001;closelink.style.position="fixed";closelink.style.right=horizontalPadding+"px";closelink.style.top=(verticalPadding-20)+"px";closelink.innerHTML='<a href="#" class="modalwindowcloser">Close</a>';document.getElementsByTagName("body")[0].appendChild(closelink);P.bind(P.$$("a.modalwindowcloser")[0],"keypress",P.CloseModal);P.bind(P.$$("a.modalwindowcloser")[0],"click",P.CloseModal)}P.bind(document,"keyup",P.CloseModal)}return true},CloseModal:function(e){var el=P.eventElement(e);if((e.type=="keyup"&&P.keyCode(e)==27)||(el&&P.hasClassName(el,"modalwindowcloser"))){if(P.$("performer_modal_outer")){document.getElementsByTagName("body")[0].removeChild(P.$("performer_modal_outer"))}if(P.$("performer_modal_closer")){document.getElementsByTagName("body")[0].removeChild(P.$("performer_modal_closer"))}if(P.$("performer_modal")){document.getElementsByTagName("body")[0].removeChild(P.$("performer_modal"))}P.stopEvent(e)}},Truncate:function(el){var cls=P.classNames(el);var limit=P.classParam(cls,"limit",50);var openText=P.classParam(cls,"openText","...more");var closeText=P.classParam(cls,"closeText","...less");if(el&&limit){var c=el.innerHTML;var l=c.length;if(limit<l){var id=P.identify(el);el.innerHTML='<span id="'+id+'_truncated">'+c.substring(0,limit)+' <a href="#" class="switcher targetEl1-'+id+"_truncated targetEl2-"+id+'_full">'+openText+'</a></span><span class="hider" id="'+id+'_full">'+c+' <a href="#" class="switcher targetEl1-'+id+"_truncated targetEl2-"+id+'_full">'+closeText+"</a></span>";P.ReInit(id)}}},Duplicate:function(e){var el=P.eventElement(e);var cls=P.classNames(el);var sourceEl=P.classParam(cls,"sourceElement",false);var sourceElement=P.$(sourceEl);var targetEl=P.classParam(cls,"targetElement",false);var targetElement=P.$(targetEl);var start=(parseInt(Performer.classParam(cls,"start",1)))-1;if(el&&P.nodeName(el)&&sourceElement&&P.nodeName(sourceElement)&&targetElement&&P.nodeName(targetElement)){var newel=targetElement.appendChild(sourceElement.cloneNode(true));if(typeof(P.Duplicators[targetEl])==="undefined"){P.Duplicators[targetEl]=(start+1)}var items=P.Duplicators[targetEl]+1;P.Duplicators[targetEl]=items;newel.innerHTML=newel.innerHTML.replace(/_1/g,"_"+items);newel.innerHTML=newel.innerHTML.replace(/[1]/g,items);newel.id=newel.id.replace(/_1/g,"_"+items);if(P.getAttribute(newel,"class")!=""){P.setAttribute(newel,"class",P.getAttribute(newel,"class").replace(/_1/g,"_"+items))}var countEl=P.classParam(cls,"countElement",false);var countElement=P.$(countEl);if(countElement){P.setValue(countElement,items)}P.stopEvent(e)}},SubmitLock:function(e){var el=P.findEventElement(e,"FORM");if(el){var fields=P.$F(el);var acn=P.addClassName;P.forEach(fields,function(input){var field=P.$(P.identify(input));if(field.type.toLowerCase()=="submit"){field.disabled=true;acn(field,"performer-disabled")}})}},Submit:function(e){var el=P.findEventElement(e,"FORM");var cls=P.classNames(el);var targetPage=P.classParam(cls,"targetPage",false);var targetEl=P.classParam(cls,"targetEl",P.classParam(cls,"targetElement",false));var targetElement=P.$(targetEl);if(targetPage&&el&&P.nodeName(el)&&targetElement&&P.nodeName(targetElement)){var params=P.serialize(el);P.addClassName(targetElement,"performerloading");P.Request(targetPage,"POST",params,function(request){var text=P.getRequestText(request);P.update(targetElement,text);P.removeClassName(targetElement,"performerloading");P.Debug("-> Filled '#"+targetEl+"'","success")});P.stopEvent(e)}},CheckForm:function(e){P.Debug("Performer.CheckForm","function");var el=P.findEventElement(e,"FORM");var fail=false;var radiogroups=[];var fields=P.$F(el);var id=P.identify;var d=P.$;var hcn=P.hasClassName;var fn=P.FieldNotify;var fnr=P.FieldNotifyRemove;var gv=P.getValue;P.forEach(fields,function(input){var identity=id(input);var field=d(identity);var val=gv(field);if(hcn(field,"field-required")){if(field.type!="radio"&&((field.type=="checkbox"&&field.checked===false)||field.value=="")){fn(identity,"error","This field is required");fail=true}else{fnr(identity)}if(field.type=="radio"&&radiogroups.PerformerIndexOf(field.name)==-1){radiogroups[radiogroups.length]=field.name;var radiofail=true;var radiobuttons=el[field.name];for(var i=0;i<radiobuttons.length;i++){if(radiobuttons[i].checked){radiofail=false;break}}var lastbutton=radiobuttons[radiobuttons.length-1];if(radiofail){fn(lastbutton,"error","This field is required");fail=true}else{fnr(lastbutton)}}}if(hcn(field,"field-required-email")||hcn(field,"field-optional-email")){var validemail=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if((hcn(field,"field-required-email")&&val=="")||(val!=""&&!validemail.test(val))){fn(identity,"error","This field must be a valid email address");fail=true}else{fnr(identity)}}if(hcn(field,"field-required-number")||hcn(field,"field-optional-number")){var num=val.replace(",","").replace("&pound;","").replace("?","");if((hcn(field,"field-required-number")&&num=="")||(num!=""&&isNaN(parseFloat(num)))){fn(identity,"error","This field must be a number");fail=true}else{if(num!=""){field.value=parseFloat(num)}fnr(identity)}}if(hcn(field,"field-required-date")||hcn(field,"field-optional-date")){var validdate=/^([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4})$/;if((hcn(field,"field-required-date")&&val=="")||(val!=""&&!validdate.test(val))){fn(identity,"error","This field must be a date (dd/mm/yyyy)");fail=true}else{fnr(identity)}}P.Debug("-> Field "+input.name,"subfunction")});if(fail){fn(P.identify(el),"error","There are errors with some fields. Please check the form and try again.");P.stopEvent(e)}},FieldNotify:function(field,messageclass,message){if(!P.$(field+"-notification")){P.insertAfter(P.$(field),'<span id="'+field+'-notification" class="performer-'+messageclass+'">'+message+"</span>")}else{P.$(field+"-notification").innerHTML=message;P.$(field+"-notification").className="performer-"+messageclass}},FieldNotifyRemove:function(field){if(P.$(field+"-notification")){P.$(field+"-notification").innerHTML="";P.$(field+"-notification").className=""}},Select:function(e){P.Debug("Performer.Select","function");var el=P.eventElement(e);if(el&&P.nodeName(el)&&P.getAttribute(el,"id")&&P.getAttribute(el,"name")&&P.getAttribute(el,"class")){var cls=P.classNames(el);var targetPage=P.classParam(cls,"targetPage",false);var targetEl=P.$(P.classParam(cls,"targetEl",false));var targetValue=P.classParam(cls,"targetValue",false);if(targetPage&&targetEl){if(targetValue=="true"){P.DoLoad(targetPage+"?selection="+P.getValue(el),targetEl,"post","setvalueandinit")}else{P.DoLoad(targetPage+"?selection="+P.getValue(el),targetEl,"post","fillandinit")}}}},CheckPassword:function(e){P.Debug("Performer.CheckPassword","function");var el=P.eventElement(e);if(el&&P.nodeName(el)&&P.getAttribute(el,"id")&&P.getAttribute(el,"name")&&P.getAttribute(el,"class")){var cls=P.classNames(el);var notifyEl=P.$(P.classParam(cls,"notifyEl",false));if(notifyEl){P.Show(notifyEl);var val=el.value;if(val.length<6){P.update(notifyEl,"Your password must be at least 6 characters long");P.className(notifyEl,"password-weak")}else{P.update(notifyEl,"");if(val.match(/^([a-zA-Z]{6,10})$/)||val.match(/^([0-9]{6,10})$/)){P.update(notifyEl,"Weak password");P.className(notifyEl,"password-weak")}else{if(val.match(/^([a-zA-Z]{10,})$/)||val.match(/^([0-9]{10,})$/)){P.update(notifyEl,"Acceptable password");P.className(notifyEl,"password-ok")}else{if(val.match(/^.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[^0-9a-zA-Z]).*$/)){P.update(notifyEl,"Strong password");P.className(notifyEl,"password-strong")}else{if(val.match(/^.*(?=.{6,})(?=.*\d)(?=.*[a-z]).*$/)||val.match(/^.*(?=.{6,})(?=.*[^0-9a-zA-Z])(?=.*[a-z]).*$/)||val.match(/^.*(?=.{6,})(?=.*[^0-9a-zA-Z])(?=.*\d).*$/)){P.update(notifyEl,"Acceptable password");P.className(notifyEl,"password-ok")}}}}}}}},Match:function(e){P.Debug("Performer.Match","function");var el=P.eventElement(e);if(el&&P.nodeName(el)&&P.getAttribute(el,"id")&&P.getAttribute(el,"name")&&P.getAttribute(el,"class")){var cls=P.classNames(el);var notifyEl=P.$(P.classParam(cls,"notifyEl",false));var matchEl=P.$(P.classParam(cls,"matchEl",false));if(notifyEl&&matchEl){P.Show(notifyEl);var val1=el.value;var val2=matchEl.value;if(val1==val2){P.Hide(notifyEl)}}}},Toggle:function(e,c){var r=false;var eve=P.eventOrElement(e);var el=eve.el;if(!el){el=P.findEventElement(e,"A")}if(el&&P.nodeName(el)&&((e.type=="click"||P.keyCode(e)==13||P.keyCode(e)==32)||!eve.stop)){var cls=P.classNames(el);var showeffect=P.classParam(cls,"showeffect","slidedown");var hideeffect=P.classParam(cls,"hideeffect","slideup");var toggleid=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));if(!toggleid){toggleid=P.identify(el)}var move=P.classParam(cls,"move",false);var delay=P.classParam(cls,"delay",0)*1000;var targetEl=P.$(toggleid);if(targetEl&&P.nodeName(targetEl)){if(delay===0){r=P.DoToggle(toggleid,targetEl,el,showeffect,hideeffect)}else{setTimeout(function(){r=P.DoToggle(toggleid,targetEl,el,showeffect,hideeffect)},delay)}if(!move||!r){if(P.nodeName(el).toLowerCase()=="a"&&eve.stop){P.stopEvent(e)}}else{window.location.hash=P(el,"href").replace(new RegExp("^[#]+","g"),"")}return r}}},DoToggle:function(toggleid,targetEl,el,showeffect,hideeffect){if(!P.visible(targetEl)){if(toggleid!="performerjsdebugbox"){P.Debug("Performer.Toggle -> Show '#"+toggleid+"'","subfunction")}P.addClassName(el,"toggleropen");var n=P.nodeName;var s=P.Show;var v=P.visible;s(targetEl,showeffect);P.forEach(P.ancestors(P.$(targetEl)),function(ancestor){if(ancestor.tagName!="body"&&ancestor.tagName!="html"&&n(ancestor)&&!v(ancestor)){s(ancestor)}});r=true}else{if(toggleid!="performerjsdebugbox"){P.Debug("Performer.Toggle -> Hide '#"+toggleid+"'","subfunction")}P.removeClassName(el,"toggleropen");P.Hide(targetEl,hideeffect);r=false}if(P.nodeName(el).toLowerCase()=="input"&&el.type&&el.type=="checkbox"){el.checked=r}return r},GroupToggle:function(e,c){var r=false;var eve=P.eventOrElement(e);var el=eve.el;if(!el){el=P.findEventElement(e,"A")}if(el&&P.nodeName(el)&&((e.type=="click"||P.keyCode(e)==13||P.keyCode(e)==32)||!eve.stop)){var cls=P.classNames(el);var targetClass=P.classParam(cls,"targetClass",P.getAttribute(el,"rel"));var showeffect=P.classParam(cls,"showeffect","slidedown");var hideeffect=P.classParam(cls,"hideeffect","slideup");var move=P.classParam(cls,"move",false);var delay=P.classParam(cls,"delay",0)*1000;var foundEls=P.$$("."+targetClass);P.Debug("Performer.GroupToggle -> Toggle "+foundEls.length+" elements with class "+targetClass,"subfunction");if(delay===0){r=P.DoGroupToggle(targetClass,foundEls,showeffect,hideeffect)}else{setTimeout(function(){r=P.DoGroupToggle(targetClass,foundEls,showeffect,hideeffect)},delay)}if(P.nodeName(el).toLowerCase()=="input"&&el.type&&el.type=="checkbox"){el.checked=r}if(!move||!r){if(P.nodeName(el).toLowerCase()=="a"&&eve.stop){P.stopEvent(e)}}else{window.location.hash=P(el,"href").replace(new RegExp("^[#]+","g"),"")}return r}},DoGroupToggle:function(targetClass,foundEls,showeffect,hideeffect){var acn=P.addClassName;var rcn=P.removeClassName;var s=P.Show;var h=P.Hide;var r=false;P.forEach(foundEls,function(element){if(!P.visible(element)){acn(element,"toggleropen");s(element,showeffect);r=true}else{rcn(element,"toggleropen");h(element,hideeffect);r=false}});return r},Switch:function(e,c){P.Debug("Performer.Switch","function");var r=false;var el=P.eventElement(e);if(!el){el=P.findEventElement(e,"A")}if(el&&P.nodeName(el)&&(e.type=="click"||e.keyCode==P.keyCode(e)==13)){var cls=P.classNames(el);var t1=P.classParam(cls,"targetEl1",P.getAttribute(el,"rel"));var targetEl1=P.$(t1);var t2=P.classParam(cls,"targetEl2",P.getAttribute(el,"rev"));var targetEl2=P.$(t2);if(targetEl1&&targetEl2){if(!P.visible(targetEl1)){P.Debug("-> Show '#"+t1+"', hide '#"+t2+"'","subfunction");P.Show(targetEl1);P.Hide(targetEl2);r=true}else{P.Debug("-> Show '#"+t2+"', hide '#"+t1+"'","subfunction");P.Show(targetEl2);P.Hide(targetEl1);r=false}}if(!c&&P.nodeName(el).toLowerCase()=="a"){P.stopEvent(e)}}return r},Focus:function(e){P.Debug("Performer.Focus","function");var el=P.$(e);if(el&&P.nodeName(el)){P.Debug("-> Focus on '#"+P.identify(el)+"'","subfunction");P.$(el).focus()}},Style:function(e){P.Debug("Performer.Style","function");var eve=P.eventOrElement(e);var el=eve.el;if(!el){el=P.findEventElement(e,"A")}if(el&&P.nodeName(el)&&((e.type=="click"||P.keyCode(e)==13)||!eve.stop)){var cls=P.classNames(el);var delay=P.classParam(cls,"delay",0)*1000;var targetEl=P.$(P.classParam(cls,"targetEl",P.getAttribute(el,"rel")));if(!targetEl){targetEl=el}if(targetEl){if(delay===0){P.DoStyle(targetEl,el,cls)}else{setTimeout(function(){P.DoStyle(targetEl,el,cls)},delay)}if(eve.stop){P.stopEvent(e)}}}},DoStyle:function(targetEl,el,cls){var cssstyle=P.classParam(cls,"style","");targetEl.className=cssstyle},Size:function(e){P.Debug("Performer.Size","function");var el=P.findEventElement(e,"a");if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var targetEl=P.$(P.classParam(cls,"targetEl",P.getAttribute(el,"rel")));if(targetEl){var sizes=P.classParam(cls,"sizes",P.getAttribute(el,"rev"));var sizeParts,height,width;if(sizes.indexOf(",")>=0){sizeParts=sizes.split(",");height=sizeParts[0];width=sizeParts[1]}else{height=sizes;width=0}if(height==""){height=0}if(width==""){width=0}var dimensions=P.getDimensions(targetEl);var currentHeight=dimensions.height;var currentWidth=dimensions.width;if(height!==0){var newHeight=(parseFloat(height)+parseFloat(currentHeight))+"px";P.Debug("-> Change height of '#"+P.identify(targetEl)+"' to "+newHeight,"subfunction");P.setStyle(targetEl,{height:newHeight})}if(width!==0){var newWidth=(parseFloat(width)+parseFloat(currentWidth))+"px";P.Debug("-> Change width of '#"+P.identify(targetEl)+"' to "+newWidth,"subfunction");P.setStyle(targetEl,{width:newWidth})}P.stopEvent(e)}}},Resize:function(e){P.Debug("Performer.Resize","function");var el=P.eventElement(e);if(el&&P.nodeName(el)){var cls=P.classNames(el);var m=P.classParam(cls,"maxHeight",500);var s=el.scrollHeight;var d=P.getDimensions(el);var h=d.height;if((s+5)>h&&h<m){el.style.height=(s+10)+"px"}}},ToggleLoad:function(e){P.Debug("Performer.ToggleLoad","function");var el=P.eventElement(e);var cls=P.classNames(el);var targetEl=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));var targetPage=P.classParam(cls,"targetPage",P.getAttribute(el,"rev"));if(el&&P.nodeName(el)&&targetEl&&targetPage&&(e.type=="click"||P.keyCode(e)==13)){if(P.Toggle(e)){P.Debug("-> Loading content into '#"+targetEl+"'","subfunction");P.Load(e,true,false)}P.stopEvent(e)}},InitTabs:function(el){var elid=P.identify(el);el=P.$(P.identify(el));if(P.Hash==elid){P.addClassName(P.getElementsByAttribute("a","rev",elid)[0],"tabbercurrent");P.removeClassName(el,"hider");P.Show(el)}if(!P.hasClassName(el,"hider")&&P.Hash!=""&&P.Hash!=elid){P.removeClassName(P.getElementsByAttribute("a","rev",elid)[0],"tabbercurrent");P.addClassName(el,"hider");P.Hide(el)}},Tab:function(e){P.Debug("Performer.Tab","function");P.Hash="";var el=P.findEventElement(e,"A");if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var tabGroup=P.classParam(cls,"tabGroup",P.getAttribute(el,"rel"));if(tabGroup&&P.$(tabGroup)){var otab=P.classParam(cls,"tab",P.getAttribute(el,"rev"));var openTab=P.$(otab);var tablinks=P.$$(".tabber");var i=tablinks.length;var hcn=P.hasClassName;var ga=P.getAttribute;var rcn=P.removeClassName;while(i--){if(hcn(tablinks[i],"tabGroup-"+tabGroup)||ga(el,"rel")==tabGroup){rcn(tablinks[i],"tabbercurrent")}}var tabs=P.$$("#"+tabGroup+" .tab");i=tabs.length;var h=P.Hide;while(i--){h(tabs[i])}P.addClassName(el,"tabbercurrent");P.Debug("-> Showing tab '#"+otab+"'","subfunction");P.Show(openTab,"fadein");P.stopEvent(e)}}},Accordian:function(e){P.Debug("Performer.Accordian","function");P.Hash="";var el=P.findEventElement(e,"A");if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var accordianGroup=P.classParam(cls,"group",false);if(P.$(accordianGroup)){var groupcls=P.classNames(el);var oitem=P.classParam(cls,"item",false);var openItem=P.$(oitem);var accordianlinks=P.$$(".accordianer");var i=accordianlinks.length;var ga=P.getAttribute;var rcn=P.removeClassName;while(i--){if(ga(accordianlinks[i],"rel")==accordianGroup){rcn(accordianlinks[i],"accordiancurrent")}}var accordianitems=P.$$("#"+accordianGroup+" .accordianitem");i=accordianitems.length;var h=P.Hide;while(i--){h(accordianitems[i])}P.addClassName(el,"accordiancurrent");P.Debug("-> Showing accordianitem '#"+oitem+"'","subfunction");P.Show(openItem,"slidedown");P.stopEvent(e)}}},Load:function(e,c,s){P.Debug("Performer.Load","function");var el=P.findEventElement(e,"A");if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var targetEl=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));var rel=P.$(targetEl);var targetPage=P.classParam(cls,"targetPage",P.getAttribute(el,"rev"));if(targetEl&&rel&&P.nodeName(rel)){P.Debug("-> Loading content into '#"+targetEl+"'","subfunction");if(!s){P.DoLoad(targetPage,targetEl,"get","fillandinit")}else{P.DoLoad(targetPage,targetEl,"get","fill")}}if(!c){P.stopEvent(e)}}},Delete:function(e){P.Debug("Performer.Delete","function");var el=P.findEventElement(e,"A");if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var targetEl=P.classParam(cls,"targetEl",P.getAttribute(el,"rel"));var rel=P.$(targetEl);var targetPage=P.classParam(cls,"targetPage",P.getAttribute(el,"rev"));var confirmDelete=P.classParam(cls,"confirmDelete",false);if(targetEl&&rel&&P.nodeName(rel)){P.Debug("-> Deleting '#"+targetEl+"'","subfunction");if((confirmDelete&&P.getAttribute(el,"title")&&confirm(P.getAttribute(el,"title")+" - are you sure?"))||!confirmDelete){P.DoLoad(targetPage,targetEl,"get","deleteandreplace")}}P.stopEvent(e)}},DoLoad:function(targetPage,targetElement,requestMethod,onCompleteFunction){P.Debug("Performer.DoLoad("+targetPage+" -> #"+targetElement+")","function");var target=P.$(targetElement);var d=P.$;var rcn=P.removeClassName;var dbg=P.Debug;var ri=P.ReInit;if(targetPage&&targetElement&&target&&P.nodeName(target)){P.addClassName(d(targetElement),"performerloading");P.Request(targetPage,requestMethod,"",function(request){var text=P.getRequestText(request);if(onCompleteFunction=="fill"){d(targetElement).innerHTML=text;rcn(d(targetElement),"performerloading");dbg("-> Filled '#"+targetElement+"'","success")}if(onCompleteFunction=="fillandinit"){d(targetElement).innerHTML=text;rcn(d(targetElement),"performerloading");dbg("-> Filled '#"+targetElement+"'","success");ri("#"+targetElement)}if(onCompleteFunction=="deleteandreplace"){P.insertAfter(d(targetElement),text);P.remove(d(targetElement))}if(onCompleteFunction=="setvalue"){d(targetElement).value=text;rcn(d(targetElement),"performerloading");dbg("-> Value set '#"+targetElement+"'","success")}if(onCompleteFunction=="setvalueandinit"){d(targetElement).value=text;rcn(d(targetElement),"performerloading");dbg("-> Set value '#"+targetElement+"'","success");ri("#"+targetElement)}})}},Reload:function(e){var el=P.$(e);var elid=P.identify(el);if(P.Reloaders.PerformerIndexOf(elid)==-1){var cls=P.classNames(el);var delay=P.classParam(cls,"delay",0)*1000;var targetPage=P.classParam(cls,"targetPage",false);if(delay===0){delay=60000}if(el&&P.nodeName(el)&&delay&&targetPage){P.Reloaders[P.Reloaders.length]=elid;P.Debug("Performer.Reload -> Added '#"+elid+"' to Performer.Reloaders (now "+P.Reloaders.length+" items): "+delay+" seconds","subfunction");P.DoLoad(targetPage,elid,"get","fillandinit");var func=function(){var d=new Date();var t=d.getTime();if(targetPage.indexOf("?")!=-1){t="&"+t}else{t="?"+t}P.DoLoad(targetPage+t,elid,"get","fillandinit")};window.setInterval(func,delay)}}},Preload:function(e){P.Debug("Performer.Preload","function");var el=P.$(e);var cls=P.classNames(el);var targetPage=P.classParam(cls,"targetPage",false);if(el&&P.nodeName(el)&&targetPage){var elid=P.identify(el);P.Debug("-> Loading content into '#"+elid+"'","subfunction");P.DoLoad(targetPage,elid,"get","fillandinit")}},Hide:function(el,effect){var elid=P.identify(el);if(el&&P.nodeName(el)){if(P.Hash!=elid){P.Debug("Performer.Hide -> Hiding '#"+elid+"' (effect: "+effect+")","subfunction");P.doHide(el,effect);if(!P.hasClassName(el,"hider")){P.addClassName(el,"hider")}if(P.hasClassName(el,"shower")){P.removeClassName(el,"shower")}}else{P.removeClassName(el,"hider")}}else{P.Debug("Performer.Hide -> Could not hide '#"+elid+"'","subfunction")}},Show:function(el,effect){var elid=P.identify(el);if(el&&P.nodeName(el)){P.doShow(el,effect);if(P.hasClassName(el,"hider")){P.removeClassName(el,"hider")}if(P.hasClassName(el,"shower")){P.removeClassName(el,"shower")}P.Debug("Performer.Show -> Showing '#"+elid+"' (effect: "+effect+")","subfunction")}else{P.Debug("Performer.Show -> Could not show '#"+elid+"'","subfunction")}},Limit:function(e){P.Debug("Performer.Limit","function");var el=P.eventElement(e);var cls=P.classNames(el);var lengthLimit=P.classParam(cls,"lengthLimit",false);var targetEl=P.$(P.classParam(cls,"targetEl",false));if(el&&lengthLimit&&targetEl){var currentLength=P.getValue(el).length;if(parseFloat(currentLength)>=parseFloat(lengthLimit)){P.$(el).value=P.getValue(el).substr(0,lengthLimit);P.update(targetEl,"Limit reached");var key=P.keyCode(e)||e.code;if(key!=8&&key!=46&&key!=37&&key!=39){P.stopEvent(e)}}else{P.update(P.$(targetEl),(lengthLimit-currentLength)+" characters left")}}},LimitNotifier:function(e){P.Debug("Performer.LimitNotifier","function");var el=P.$(e);if(el&&(P.nodeName(el)=="input"||P.nodeName(el)=="textarea")){var cls=P.classNames(el);var lengthLimit=P.classParam(cls,"lengthLimit",false);var targetEl=P.$(P.classParam(cls,"targetEl",false));if(!P.hasClassName(el,"prompter")&&lengthLimit&&targetEl){var currentLength=P.getValue(el).length;P.update(targetEl,(lengthLimit-currentLength)+" characters left")}}},Edit:function(e){P.Debug("Performer.Edit","function");var el=P.eventElement(e);if(el&&P.nodeName(el)&&P.getAttribute(el,"id")&&P.classNames(el)&&(e.type=="click"||P.keyCode(e)==13)){P.removeClassName(el,"editor");var cls=P.classNames(el);var targetPage=P.classParam(cls,"targetPage",false);var targetElement=P.classParam(cls,"targetElement",false);var inputType=P.classParam(cls,"inputType","input");var autosave=P.classParam(cls,"autosave",false);if(targetPage&&inputType){var id=P.identify(el);el.innerHTML=P.BuildEditForm(el,targetPage,inputType,targetElement,autosave);P.unBind(el,"click",P.Edit);P.unBind(el,"keypress",P.Edit);var form=P.$(id+"-editor");if(autosave!==false){P.bind(P.$(id+"-value"),"blur",function(){var vars=P.serialize(form);P.addClassName(P.$(id+"-value"),"performerloading");P.Request(targetPage,"post",vars,function(){P.HideEditForm(el,true)})})}else{P.bind(form,"submit",function(e){var vars=P.serialize(form);P.addClassName(form,"performerloading");P.$(id+"-originaltext").innerHTML=P.$(id+"-value").value;P.Request(targetPage,"post",vars,function(){P.HideEditForm(el,true)});P.stopEvent(e)})}P.$(id+"-value").focus();P.ReInit("#"+id)}}},BuildEditForm:function(el,targetPage,inputType,targetElement,autosave){P.Debug("Performer.BuildEditForm("+targetPage+")","function");if(el&&P.nodeName(el)&&P.$(el)&&targetPage){var id=P.identify(el);var value=P.$(el).innerHTML;var editForm;editForm='<form id="'+id+'-editor" class="performer-editor" action="'+targetPage+'" method="post">\n';if(inputType==""||inputType=="input"){editForm+='<input type="text" id="'+id+'-value" name="'+id+'" value="'+value+'" />\n'}if(inputType=="textarea"){editForm+='<textarea id="'+id+'-value" name="'+id+'" rows="6" cols="30">'+value+"</textarea>\n"}if(autosave===false){editForm+='<input type="submit" id="'+id+'-save" name="'+id+'-save" value="Save" />\n<a href="#" class="uneditor targetEl-'+id+'">Cancel</a>\n';if(targetElement!=""){editForm+='<span id="'+targetElement+'"></span>\n'}}editForm+='</form>\n<span style="display:none" id="'+id+'-originaltext">'+value+"</span>";P.Debug("-> Built form with action: "+targetPage,"function");return editForm}},HideEditForm:function(el,val){P.Debug("Performer.HideEditForm","function");var id=P.identify(el);if(val){el.innerHTML=P.$(id+"-value").value}else{el.innerHTML=P.$(id+"-originaltext").innerHTML}P.bind(P.$(id),"click",P.Edit);P.bind(P.$(id),"keypress",P.Edit)},UnEdit:function(e){P.Debug("Performer.UnEdit","function");var el=P.eventElement(e);if(el&&P.nodeName(el)&&(e.type=="click"||P.keyCode(e)==13)){var cls=P.classNames(el);var rel=P.classParam(cls,"targetEl",false);var targetEl=P.$(rel);if(targetEl){P.bind(targetEl,"click",P.Edit);P.bind(targetEl,"keypress",P.Edit);targetEl.innerHTML=P.$(rel+"-originaltext").innerHTML;P.stopEvent(e)}}},SetPrompt:function(el){P.Debug("Performer.SetPrompt","function");var placeHolderSupport=("placeholder" in document.createElement("input"));var id=P.identify(el);var title=P.getAttribute(el,"title");if(!placeHolderSupport){if(el&&P.nodeName(el)&&title&&el.value==""&&(el.type=="textarea"||el.type=="text")){P.Debug("-> Setting prompt: "+title,"function");P.addClassName(el,"performer-prompter");el.value=P.getAttribute(el,"title");var form=P.up("#"+id,"form");if(form){P.bind(form,"submit",function(){P.ClearPrompt(el)},false)}}}else{$("#"+el).attr("placeholder",title)}},RemovePrompt:function(e){P.Debug("Performer.RemovePrompt","function");var el=P.eventElement(e);if(el&&P.nodeName(el)){P.ClearPrompt(el)}},ClearPrompt:function(el){P.Debug("Performer.ClearPrompt","function");var title=P.getAttribute(el,"title");if(el&&P.nodeName(el)&&title&&(el.value==title)&&(el.type=="textarea"||el.type=="text")){el.value="";P.removeClassName(el,"performer-prompter")}},CheckPrompt:function(e){P.Debug("Performer.CheckPrompt","function");var el=P.eventElement(e);var title=P.getAttribute(el,"title");var id=P.identify(el);if(el&&P.nodeName(el)&&title&&(el.value=="")&&(el.type=="textarea"||el.type=="text")){P.SetPrompt(el);el.value=P.getAttribute(el,"title")}},Pop:function(e){P.Debug("Performer.Popper","function");var el=P.findEventElement(e,"A");var cls=P.classNames(el);var targetName=P.classParam(cls,"targetName",P.getAttribute(el,"rel"))?"":"popupwindow_"+P.increment();var pageOptions=P.classParam(cls,"options",P.getAttribute(el,"rev"))?"":"scrollbars=yes,toolbar=yes,menubar=yes,location=yes,status=yes,directories=yes";if(el&&P.nodeName(el)&&P.getAttribute(el,"href")&&(e.type=="click"||P.keyCode(e)==13)){var targetURL=P.getAttribute(el,"href");P.Debug("-> Opening: "+targetURL+" with "+pageOptions,"function");var win=window.open(targetURL,targetName,pageOptions);if(window.focus){win.focus()}P.stopEvent(e)}},Morph:function(e){P.Debug("Performer.Morpher","function");var eve=P.eventOrElement(e);var el=eve.el;var cls=P.classNames(el);var targetEl=P.classParam(cls,"targetEl",P.identify(el));if(el&&targetEl&&P.$(targetEl)){var delay=P.classParam(cls,"delay",0)*1000;setTimeout(function(){var duration=P.classParam(cls,"duration",1);var props=["lineHeight","margin","padding","width","height","opacity","fontSize","borderWidth","color","backgroundColor"];params=P.setupMorphProperties(props,cls);P.animate(targetEl,params,duration)},delay);if(eve.stop){P.stopEvent(e)}}},ToggleDebug:function(e){if(!P.Debugging){P.Debugging=true;P.PrepareDebug();P.Debug();P.stopEvent(e)}else{P.Debugging=false;P.remove(P.$("performerjsdebugwrapper"));P.stopEvent(e)}},PrepareDebug:function(){var bodyhtml=document.getElementsByTagName("body")[0].innerHTML;bodyhtml=bodyhtml+'<div style="position:fixed;bottom:0;right:0;left:0;margin-top:height:400px;" id="performerjsdebugwrapper">\n<p style="margin:0; padding: 0 0 4px 0;"><a href="#" class="toggler targetEl-performerjsdebugbox" style="background:#333;color:#FFF;padding:0.3em 0.6em;margin:0 0 0 1em;-moz-border-radius-topright:5px;-moz-border-radius-topleft:5px;-webkit-border-top-right-radius:5px;-webkit-border-top-left-radius:5px;border:0">Performer Debug</a></p>\n<div class="hider" style="background:#333;padding:0.5em" id="performerjsdebugbox"><div id="performerjsoutput" style="padding:0.3em;height:400px;overflow:auto;background:#FFF;">\n</div></div>';var body=document.getElementsByTagName("body")[0];var children=P.children(body);if(children.length){P.insertAfter(children[0],bodyhtml);P.DoListeners("#performerjsdebugwrapper")}},Debug:function(str,status){if(P.Debugging){var col="#000";if(status=="function"){col="#333"}else{if(status=="subfunction"){col="#AAA"}else{if(status=="error"){col="#900"}else{if(status=="success"){col="#090"}else{if(status=="warning"){col="#FFA800"}else{if(status=="ajax"){col="#4937DF"}}}}}}if(P.$("performerjsdebugbox")){P.$("performerjsoutput").innerHTML+='<p style="margin:0.1em 0;padding:0;color:'+col+'">'+str+"</p>\n"}}},eventOrElement:function(e){var o={};o.stop=false;o.el=e;if(!e.innerHTML){o.el=P.eventElement(e);o.stop=true}return o},hasClassName:function(el,cls){if(!el||typeof el=="undefined"){return false}if(P.Prototype||P.Scriptaculous){return el.hasClassName(cls)}if(P.jQuery){return jQuery(el).hasClass(cls)}if(P.MooTools){return $(el).hasClass(cls)}},$:function(el){if(typeof el=="object"){return el}if(typeof el=="undefined"){return false}if(P.Prototype||P.Scriptaculous){return $(el)}if(P.MooTools){return $(el)}if(P.jQuery){return jQuery("#"+el)[0]}},$$:function(cls){var els;if(P.Prototype||P.Scriptaculous){els=$$(cls)}if(P.MooTools){els=$$(cls)}if(P.jQuery){els=jQuery(cls)}if(els&&els.length>0){return els}else{return false}},$F:function(el){var elid=P.identify(el);var fields;if(P.Prototype||P.Scriptaculous){fields=el.getElements()}if(P.jQuery){fields=jQuery("#"+elid+" :input")}if(P.MooTools){fields=$$("#"+elid+" input","#"+elid+" textarea","#"+elid+" select","#"+elid+" button")}return fields},nodeName:function(el){var nn=false;if(P.Prototype||P.Scriptaculous){nn=el.nodeName.toLowerCase()}if(P.MooTools){nn=el.nodeName.toLowerCase()}if(P.jQuery){nn=el.tagName.toLowerCase()}if(!nn||typeof nn=="undefined"||nn=="#document"){return false}else{return nn}},getElementsByAttribute:function(type,attr,value){var s;if(value){s=type+"["+attr+"='"+value+"']";if(P.Prototype||P.Scriptaculous){return document.getElementsBySelector(s)}if(P.jQuery){return jQuery(s)}if(P.MooTools){return document.getElements(s)}}else{s=type+"["+attr+"]";if(P.Prototype||P.Scriptaculous){return document.getElementsBySelector(s)}if(P.jQuery){return jQuery(s)}if(P.MooTools){return document.getElements(s)}}},getValue:function(el){if(P.Prototype||P.Scriptaculous){return el.getValue()}if(P.jQuery){return jQuery(el).val()}if(P.MooTools){return el.get("value")}},setValue:function(el,value){if(P.Prototype||P.Scriptaculous){el.value=value;return el}if(P.jQuery){return jQuery(el).val(value)}if(P.MooTools){return el.set("value",value)}},up:function(el,filter){if(P.Prototype||P.Scriptaculous){return el.up(filter)}if(P.jQuery){return jQuery(el).parent(filter)[0]}if(P.MooTools){return el.getParent(filter)}},serialize:function(el){if(P.Prototype||P.Scriptaculous){return el.serialize(true)}if(P.jQuery){return jQuery(el).serialize()}if(P.MooTools){return el.toQueryString()}},update:function(el,html){if(P.Prototype||P.Scriptaculous){return el.update(html)}if(P.jQuery){return jQuery(el).html(html)}if(P.MooTools){return el.set("text",html)}},insertAfter:function(el,html){if(P.Prototype||P.Scriptaculous){return new Insertion.After(el,html)}if(P.jQuery){return jQuery(el).after(html)}if(P.MooTools){if(html.trim().substr(0,1)!=="<"){html="<span>"+html+"</span>"}var i=new Element("div",{html:html});return i.inject(el,"after")}},increment:function(){P.Counter++;return P.Counter},identify:function(el){if(typeof(el)=="string"){el=P.$(el)}var id=P.getAttribute(el,"id");if(!id||id==""){id="anonymous_element_"+P.increment();P.setAttribute(el,"id",id)}return id},getAttribute:function(el,attr){if(P.Prototype||P.Scriptaculous){return el.readAttribute(attr)}if(P.jQuery){return jQuery(el).attr(attr)}if(P.MooTools){return el.get(attr)}},setAttribute:function(el,attr,val){if(P.Prototype||P.Scriptaculous){return el.writeAttribute(attr,val)}if(P.jQuery){return jQuery(el).attr(attr,val)}if(P.MooTools){return el.set(attr,val)}},removeAttribute:function(el,attr){return el.removeAttribute(attr)},remove:function(el){if(P.Scriptaculous){Effect.Fade(el,{duration:0.5})}if(P.Prototype||P.Scriptaculous){return el.remove()}if(P.jQuery){jQuery(el).fadeOut("normal");return jQuery(el).remove()}if(P.MooTools){el.fade("out");return el.destroy()}},children:function(el,selector){if(typeof selector!="undefined"){selector=selector.replace("-"," ");el=P.$$(selector)}if(P.Prototype||P.Scriptaculous){return el.childElements()}if(P.jQuery){return jQuery(el).children()}if(P.MooTools){return el.getChildren()}},ancestors:function(el){if(P.Prototype||P.Scriptaculous){return el.ancestors()}if(P.jQuery){return jQuery(el).parents()}if(P.MooTools){return el.getParents()}},classNames:function(el){var cls=P.getAttribute(el,"class");if(cls&&cls.length>0){var classes=[];var names=cls.split(/\s+/);var i=names.length;while(i--){if(names[i].length>0){classes[classes.length]=names[i]}}return classes}else{return[]}},visible:function(el){if(typeof(el)!="object"){el=P.$(el)}if(P.Prototype||P.Scriptaculous){return el.visible()}if(P.jQuery){return jQuery(el).is(":visible")}if(P.MooTools){if(el.getStyle("display")=="none"){return false}else{return true}}},addClassName:function(el,cls){if(typeof(el)!="object"){el=P.$(el)}if(P.Prototype||P.Scriptaculous){return el.addClassName(cls)}if(P.jQuery){return jQuery(el).addClass(cls)}if(P.MooTools){return $(el).addClass(cls)}},removeClassName:function(el,cls){if(typeof(el)!="object"){el=P.$(el)}if(P.Prototype||P.Scriptaculous){return el.removeClassName(cls)}if(P.jQuery){return jQuery(el).removeClass(cls)}if(P.MooTools){return $(el).removeClass(cls)}},className:function(el,cls){if(typeof(el)!="object"){el=P.$(el)}el.className=cls},disableContext:function(el){if(P.Prototype||P.Scriptaculous){P.bind(el,"contextmenu",function(e){e.stop()})}if(P.jQuery){P.bind(el,"contextmenu",function(e){return false})}if(P.MooTools){return P.bind(el,"contextmenu",function(e){e.stop()})}},doHide:function(el,effect){if(typeof(el)!="object"){el=P.$(P.identify(el))}if(P.Prototype){return el.hide()}if(P.Scriptaculous){if(!effect||P.Effects.PerformerIndexOf(effect)==-1){return el.hide()}else{if(effect=="slideup"){return Effect.Fade(el,{duration:0.5})}if(effect=="slidedown"){return Effect.Appear(el,{duration:0.5})}if(effect=="blinddown"){return Effect.BlindDown(el,{duration:0.5})}if(effect=="blindup"){return Effect.BlindUp(el,{duration:0.5})}if(effect=="fadein"){return Effect.Appear(el,{duration:0.5})}if(effect=="fadeout"){return Effect.Fade(el,{duration:0.5})}}}if(P.jQuery){if(!effect||P.Effects.PerformerIndexOf(effect)==-1){return jQuery(el).hide()}else{if(effect=="slideup"||effect=="blindup"){return jQuery(el).slideUp("normal")}if(effect=="slidedown"||effect=="blinddown"){return jQuery(el).slideDown("normal")}if(effect=="fadein"){return jQuery(el).fadeIn("normal")}if(effect=="fadeout"){return jQuery(el).fadeOut("normal")}}}if(P.MooTools){el.fade("out");el.setStyle("display","none");return el}return false},doShow:function(el,effect){if(typeof(el)!="object"){el=P.$(P.identify(el))}if(P.Prototype){return el.show()}if(P.Scriptaculous){if(!effect||P.Effects.PerformerIndexOf(effect)==-1){return el.show()}else{if(effect=="slideup"){return Effect.Fade(el,{duration:0.5})}if(effect=="slidedown"){return Effect.Appear(el,{duration:0.5})}if(effect=="blinddown"){return Effect.BlindDown(el,{duration:0.5})}if(effect=="blindup"){return Effect.BlindUp(el,{duration:0.5})}if(effect=="fadein"){return Effect.Appear(el,{duration:0.5})}if(effect=="fadeout"){return Effect.Fade(el,{duration:0.5})}}}if(P.jQuery){if(!effect||P.Effects.PerformerIndexOf(effect)==-1){return jQuery(el).show()}else{if(effect=="slideup"||effect=="blindup"){return jQuery(el).slideUp("normal")}if(effect=="slidedown"||effect=="blinddown"){return jQuery(el).slideDown("normal")}if(effect=="fadein"){return jQuery(el).fadeIn("normal")}if(effect=="fadeout"){return jQuery(el).fadeOut("normal")}}}if(P.MooTools){el.setStyle("display","block");el.fade("in");return el}return false},Request:function(targetPage,requestMethod,params,successFunction){if(P.Prototype||P.Scriptaculous){new Ajax.Request(targetPage,{method:requestMethod,parameters:params,onSuccess:successFunction})}if(P.jQuery){return jQuery.ajax({type:requestMethod,url:targetPage,data:params,success:successFunction})}if(P.MooTools){var myRequest=new Request({method:requestMethod,url:targetPage,data:params,onSuccess:successFunction});myRequest.send();return myRequest}},getRequestText:function(request){var text=request;if(request.responseText){text=request.responseText}return text},eventElement:function(e){var targ;if(!e){e=window.event}if(e.target){targ=e.target}else{if(e.srcElement){targ=e.srcElement}}if(targ.nodeType==3){return targ.parentNode}return targ},findEventElement:function(e,tag){var target;if(P.Prototype||P.Scriptaculous){return Event.findElement(e,tag)}if(P.jQuery){target=P.eventElement(e);if(target&&target.nodeName&&target.nodeName.toLowerCase()==tag.toLowerCase()){return target}else{return jQuery(target).parents(tag)[0]}}if(P.MooTools){target=P.eventElement(e);if(target&&target.nodeName&&target.nodeName.toLowerCase()==tag.toLowerCase()){return target}else{return $(target).getParent(tag)}}},domLoaded:function(func){if(P.Prototype||P.Scriptaculous){P.bind(document,"dom:loaded",func)}if(P.jQuery){return jQuery(document).ready(func)}if(P.MooTools){return P.bind(window,"domready",func)}},bind:function(el,event,func){if(P.Prototype||P.Scriptaculous){Event.observe(el,event,func)}if(P.jQuery){return jQuery(el).bind(event,func)}if(P.MooTools){return $(el).addEvent(event,func)}},unBind:function(el,event,func){if(P.Prototype||P.Scriptaculous){Event.stopObserving(el,event,func)}if(P.jQuery){return jQuery(el).unbind(event,func)}if(P.MooTools){return $(el).removeEvent(event,func)}},stopEvent:function(e){if(P.Prototype||P.Scriptaculous){e.preventDefault();e.stopPropagation();Event.stop(e);return false}if(P.jQuery){e.preventDefault();e.stopPropagation();return false}if(P.MooTools){e.stop();return false}return false},stopPropagation:function(e){e.stopPropagation();return false},getDimensions:function(el){var size,getsize;if(P.Prototype||P.Scriptaculous){return el.getDimensions()}size={};if(P.jQuery){size.height=jQuery(el).outerHeight();size.width=jQuery(el).outerWidth()}if(P.MooTools){getsize=el.getSize();size.height=getsize.y;size.width=getsize.x}return size},setStyle:function(el,style){if(P.Prototype||P.Scriptaculous){return el.setStyle(style)}if(P.jQuery){jQuery(el).css(style)}if(P.MooTools){$(el).setStyles(style)}},animate:function(el,params,duration){var elid=P.identify(el);if(typeof(el)!="object"){el=P.$(elid)}if(P.Scriptaculous){$(elid).morph(params,{duration:duration})}if(P.Prototype){$(elid).setStyle(params)}if(P.jQuery){duration=duration*1000;jQuery(el).animate(params,duration)}if(P.MooTools){duration=duration*1000;var fx=new Fx.Morph(elid,{duration:duration,transition:Fx.Transitions.Sine.easeOut});fx.start(params)}},setupMorphProperties:function(props,cls){var param,params,i,j;var cp=P.classParam;if(P.Scriptaculous||P.Prototype){params="";for(i=0,j=props.length;i<j;i++){param=cp(cls,props[i],false);var name=props[i];name=name.replace("backgroundColor","background");name=name.replace("fontSize","font-size");name=name.replace("borderWidth","border-width");name=name.replace("lineHeight","line-height");param=P.fixCSSParam(name,param);params+=name+": "+param+"; "}}else{params={};for(i=0,j=props.length;i<j;i++){param=cp(cls,props[i],false);if(param!==false){params[props[i]]=param.replace("px","")}}}return params},fixCSSParam:function(name,param){if((name=="line-height"||name=="border-width"||name=="font-size"||name=="padding"||name=="margin")&&typeof param=="string"){var len=param.length;var last2=param.substring(len-2).toLowerCase();if(last2!="px"&&last2!="em"&&last2!="pt"){return param+"px"}}return param},keyCode:function(e){if(window.event){return window.event.keyCode}else{if(e){return e.which}else{return false}}},cursorPosition:function(e){if(P.MooTools){var event=new Event(e);return[event.page.x,event.page.y]}else{var posx=0;var posy=0;if(!e){e=window.event}if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY}else{if(e.clientX||e.clientY){var de=document.documentElement;var db=document.body;posx=e.clientX+db.scrollLeft+de.scrollLeft;posy=e.clientY+db.scrollTop+de.scrollTop}}return[posx,posy]}},elementPosition:function(obj){var curleft=0;var curtop=0;if(obj.offsetParent){do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop}while(obj=obj.offsetParent);return[curleft,curtop]}},forEach:function(object,callback){for(var i=0,j=object.length;i<j;i++){callback.call(object[i],object[i],object)}},trim:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},alertProperties:function(a){var o="";var name;for(name in a){o+=name+": "+a[name]+"\n"}P.createModal(true,true,6,"performermodalouter","performermodalinner",100,100,true);P.$("performer_modal").innerHTML='<pre style="width: 100%; height: 100%">'+o+"</pre>"}};if(typeof(Array.prototype.indexOf)=="function"){Array.prototype.PerformerIndexOf=Array.prototype.indexOf}else{Array.prototype.PerformerIndexOf=function(item,i){i||(i=0);var length=this.length;if(i<0){i=length+i}for(;i<length;i++){if(this[i]===item){return i}}return -1}}var P=Performer;P.Performer();if(P.jQuery){(function(jQuery){jQuery.each(["backgroundColor","color"],function(i,attr){jQuery.fx.step[attr]=function(fx){if(fx.state==0){fx.start=getColor(fx.elem,attr);fx.end=getRGB(fx.end)}fx.elem.style[attr]="rgb("+[Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2]),255),0)].join(",")+")"}});function getRGB(color){var result;if(color&&color.constructor==Array&&color.length==3){return color}if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)){return[parseInt(result[1]),parseInt(result[2]),parseInt(result[3])]}if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)){return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55]}if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)){return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)]}if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)){return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)]}return colors[P.trim(color).toLowerCase()]}function getColor(elem,attr){var color;do{color=jQuery.curCSS(elem,attr);if(color!=""&&color!="transparent"||jQuery.nodeName(elem,"body")){break}attr="backgroundColor"}while(elem=elem.parentNode);return getRGB(color)}var colors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery)}document.write('<style type="text/css">.hider { display: none; } .performertooltip { display: absolute; }.performerlightboxouter { position: fixed; z-index: 10000; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #000; opacity: 0.6; } .performertooltip { background: #FFF;	padding: 6px; } .performertooltip div.performertooltipinner { border: 1px solid #000; background: #FFFCDF; padding: 1em; } .performermodalouter { background: #000; } .performermodalinner { background: #FFF; border: 1px solid #000; padding: 1em; } * html .performermodalinner { position: relative; } .performermenu:hover { display: absolute; } a.modalwindowcloser { background: #000; color: #FFF; padding: 0 2em; text-decoration: none; } .performerloading { background: #EFE4B3; } .performercontextmenu { background: #D4DBED; padding: 0.6em; list-style: none; border: 1px solid #CCC; } .password-weak { color: #C00; } .password-ok { color: #EFAD3B; }	.password-strong { color: #0C0; } .performer-pagination { text-align: right; } .performer-pagination li { display: inline; } .performer-pagination li a { padding: 0.3em; } .performer-pagination .currentpage { font-weight: bold; } .performer-error { color: #C00; }</style>');