/*
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.2

This work is released under any of the following licenses, please choose the one you wish to use:

- Creative Commons Attribution-ShareAlike 3.0 licence (http://creativecommons.org/licenses/by-sa/3.0/)
- Microsoft Public License (http://www.opensource.org/licenses/ms-pl.html)
- MIT License (http://www.opensource.org/licenses/mit-license.php)
- BSD License (http://www.opensource.org/licenses/bsd-license.php)
*/
var Performer={version:'1.0.3',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}}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.classParam(cls,"targetEl",false);var targetValue=P.classParam(cls,"targetValue",false);if(targetPage&&P.$(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{P.setAttribute(el,'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>');
