ccms.html.use();ccms.namespace('ccms.editor');ccms.namespace('ccms.editor.config');ccms.editor.queue=[];ccms.editor.createField=function(label,control){var id='';if(typeof label=='string'){if(control.getAttribute){if(!(id=control.getAttribute('id')))control.setAttribute('id',id=ccms.dom.generateId());label=ccms.html.LABEL({'for':id},label);}
else{label=ccms.html.LABEL(label);}}
return ccms.html.DIV({'class':'fm-field'},label,ccms.html.DIV({'class':'fm-options'},control));};ccms.editor.AjaxAddProperty=function(form,first_fs,property_name,property_path){var url=ccmsQSAppend(form.action,{'editor_action':'property_html','property':property_path});var fieldsets;var max=0;var button=null,last=null,label='';var self=this;this.onPropertyAdded=new ccms.event.CustomEvent('onPropertyAdded');this.onPropertyRemoved=new ccms.event.CustomEvent('onPropertyRemoved');function getFieldsets(){return ccms.dom.getElementsByClassName('fm-property-'+property_name,'*',ccms.dom.getAncestorBy(first_fs,function(n){return n.tagName.toLowerCase()=='fieldset';})).filter(function(node){return ccms.dom.hasClass(node,'fm-multiple')&&!ccms.dom.hasClass(node,'fm-handles-multiple');});}
function init(){fieldsets=getFieldsets();var m=fieldsets[0].className.match(/fm-maxoccurs-(\d+)/);if(m)max=intval(m[1]);else max=0;if(button==null){last=fieldsets[fieldsets.length-1];if(ccms.config.get('ccms.editor.AjaxAddProperty.style')==='compact'&&(ccms.dom.hasClass(last,'fm-content-isnew')||ccms.dom.hasClass(last,'fm-property-isnew')||ccms.dom.hasClass(last,'fm-property-isempty'))){self.hideGroup(last);}
var legend=fieldsets[0].getElementsByTagName('legend');if(legend.length==0)legend=fieldsets[0].getElementsByTagName('label');label=legend[0].innerHTML.stripTags().replace(/^(.+?)[^a-zA-Z]*$/,'$1');button=ccms.html.SPAN({'class':'add_property add_'+property_name},ccms.html.SPAN('Add '+label));ccms.dom.insertAfter(button,last);fieldsets.foreach(function(fieldset){var remove=ccms.dom.getElementsByClassName('fm-remove','div',fieldset);if(remove.length){remove=remove[remove.length-1];if(remove){addRemoveTool(fieldset);remove.parentNode.removeChild(remove);}}});ccms.event.attach(button,'click',onAddNew);}
updateUI();}
function updateUI(){if(max==0||fieldsets.length<max)ccms.dom.show(button);else ccms.dom.hide(button);}
init();function onAddNew(){if(last.style.display=='none'){self.showGroup(last);addRemoveTool(last);self.onPropertyAdded.fire(last);}
else{ccms.dom.pushWaitingClass();ccms.async.http({'url':url,'parameters':{'i':fieldsets.length+1},'parseJSON':true,'onSuccess':onRecvNew,'onHTTPError':function(e){console.log(e);ccms.dom.popWaitingClass();}});}}
function onRecvNew(resp){var div=ccms.html.DIV({'class':'text-only'});ccms.async.processJSON(resp);div.innerHTML=ccms.dom.fixDuplicateIDs(resp.html);document.body.appendChild(div);var after=fieldsets[fieldsets.length-1];var node=ccms.dom.getElementByClassName('fm-property-'+property_name,'*',div).cloneNode(true);ccms.dom.insertAfter(node,after);ccms.widgets.runInstallers(node);addRemoveTool(node);div.parentNode.removeChild(div);fieldsets=getFieldsets();updateUI();ccms.dom.popWaitingClass();self.onPropertyAdded.fire(node);}
function addRemoveTool(node){input=ccms.html.INPUT({'type':'hidden','value':'','name':findBaseName(node)+'/__remove__'});node.appendChild(input);var remove=ccms.html.SPAN({'class':'remove_property'},ccms.html.SPAN('Remove '+label));node.appendChild(remove);ccms.event.attach(remove,'click',onRemove);}
function onRemove(e){var target=ccms.event.getTarget(e);var fs=ccms.dom.getAncestorByClassName(target,'fm-property-'+property_name);if(fs){var removename=findBaseName(fs)+'/__remove__';var remove=ccms.dom.getElementsBy(function(node){var name;return((name=node.getAttribute('name'))&&name==removename);},'*',fs);if(remove.length){self.removeGroup(fs,remove[0]);self.onPropertyRemoved.fire(fs);}}}
function findBaseName(fieldset){var fs=ccms.dom.getElementsBy(function(node){var name;return((name=node.getAttribute('name'))&&name.match(new RegExp('^content/'+property_path+'/\\d+$')));},'*',fieldset);if(fs.length)return fs[0].name;}};ccms.editor.AjaxAddProperty.prototype.hideGroup=function(group){ccms.dom.hide(group);};ccms.editor.AjaxAddProperty.prototype.showGroup=function(group){ccms.dom.show(group);};ccms.editor.AjaxAddProperty.prototype.removeGroup=function(group,hidden_remove_flag){hidden_remove_flag.value='1';ccms.dom.addClass(group,'-ccms-removed');ccms.dom.setStyle(group,'position','absolute');ccms.dom.setStyle(group,'height','1px');ccms.dom.setStyle(group,'left','-9999em');ccms.dom.setStyle(group,'top','-9999em');};ccms.editor.AjaxAddProperty.properties={};ccms.editor.AjaxAddProperty.install=function(root_element,data){ccms.dom.getElementsByClassName('fm-multiple','*',root_element).filter(function(node){return!ccms.dom.hasClass(node,'fm-handles-multiple');}).foreach(function(node){var form=ccms.dom.getParentByClassName(node,'form','ccmsForm');if(form&&ccms.dom.hasClass(form,'ccmsEditorAjax')&&!ccms.dom.getElementByClassName('fm-checkboxgroup','*',node)){var bits=node.className.match(/fm-property-([a-zA-Z0-9_-]+)/);var p=ccms.dom.getAncestorBy(node,function(n){return n.tagName.toLowerCase()=='fieldset';});if(!p.id)p.setAttribute('id',ccms.dom.generateId());if(!node.id)node.setAttribute('id',ccms.dom.generateId());if(bits&&typeof ccms.editor.AjaxAddProperty.properties[p.id+'/'+bits[1]]=='undefined'){var property_path=bits[1];var property_name=bits[1];var n=p;while(n&&n!=form){var morebits=n.className.match(/fm-property-([a-zA-Z0-9_-]+)/);if(morebits){var re=new RegExp('/'+morebits[1]+'/(\\d+)$');var h=ccms.dom.getElementsBy(function(h){return h.name&&h.name.match(re);},'*',n,null,null,false,true);if(YAHOO.lang.isArray(h))h=h[0];if(h)property_path=h.name.match(re)[1]+'/'+property_path;property_path=morebits[1]+'/'+property_path;}
n=n.parentNode;}
ccms.editor.AjaxAddProperty.properties[p.id+'/'+property_name]=new ccms.editor.AjaxAddProperty(form,node,property_name,property_path);}}});};ccms.editor.AjaxAddProperty.findHandlerFor=function(fieldset){fieldset=$(fieldset);var bits=fieldset.className.match(/fm-property-([a-zA-Z0-9_-]+)/);if(bits){var p=ccms.dom.getAncestorBy(fieldset,function(n){return n.tagName.toLowerCase()=='fieldset';});if(p&&p.id){return ccms.editor.AjaxAddProperty.properties[p.id+'/'+bits[1]];}}
return null;};ccms.editor.ListExpander=function(root){var self=this;self.root=root;self.onExpand=new ccms.event.CustomEvent('onExpand');self.onCollapse=new ccms.event.CustomEvent('onCollapse');self.onRadioChange=function(e){var li=null;var target=ccms.event.getTarget(e);var tag=target.tagName.toLowerCase();var toggle=true;if(tag=='input'){li=target.parentNode.parentNode;toggle=false;}
else if(tag=='img'||(tag=='span'&&ccms.dom.hasClass(target.parentNode,'can_expand')))li=target.parentNode;else if(tag=='li')li=target;if(li){var ul=li.getElementsByTagName(li.parentNode.tagName);if(ul.length){ul=ul[0];var img=li.getElementsByTagName('img')[0];if(!toggle||ul.style.display=='none'){ccms.dom.addClass(li,'is_expanded');self.onExpand.fire(li);ul.style.display='';img.setAttribute('src','/ccms/themes/base/icons/9x9/disclosure-'+'minus'+'.png');}
else{ccms.dom.removeClass(li,'is_expanded');self.onCollapse.fire(li);ul.style.display='none';img.setAttribute('src','/ccms/themes/base/icons/9x9/disclosure-'+'plus'+'.png');}}}};self.addOpener=function(li,isclosed){var a=ccms.html.IMG({'class':'list-opener','width':9,'height':9});ccms.dom.setStyle(a,'padding-right','4px');a.setAttribute('src','/ccms/themes/base/icons/9x9/disclosure-'+(isclosed?'plus':'minus')+'.png');li.insertBefore(a,li.firstChild);ccms.dom.setStyleObject(a,{cursor:'pointer'});ccms.dom.addClass(li,'can_expand');if(isclosed)ccms.dom.removeClass(li,'is_expanded');else ccms.dom.addClass(li,'is_expanded');};self.removeOpener=function(li){var a=ccms.dom.getElementsByClassName('list-opener','img',li);if(a.length){a=a[0];ccms.event.detach(a,'click');a.parentNode.removeChild(a);}};self.updateState=function(ul){var list,radio,a;var item=ul.firstChild;var rv=false;var i=0;while(item){if(item.nodeType==Node.ELEMENT_NODE&&item.tagName.toLowerCase()=='li'){list=item.getElementsByTagName(ul.tagName);if(list.length>0&&list[0].parentNode==item){list=list[0];if(self.updateState(list)){list.style.display='';self.addOpener(item,false);rv=true;}
else{list.style.display='none';self.addOpener(item,true);}}
else{a=ccms.html.SPAN({'class':'list-opener'},' ');ccms.dom.setStyleObject(a,{'paddingLeft':'13px'});item.insertBefore(a,item.firstChild);}
if((radio=ccms.dom.getElementsByClassName('category','input',item)[0])&&radio.checked)
rv=true;}
item=item.nextSibling;}
return rv;};self.updateState(self.root);ccms.event.attach(self.root,'click',self.onRadioChange);};ccms.editor.updateTagSelectList=function(e){var del=',';var node;node=ccms.dom.getPrevious(this,function(n){return n.tagName=='INPUT'&&n.type=='hidden'&&n.name.match(/\/tags\/delimiter$/);});if(node)del=node.value;node=ccms.dom.getPrevious(this,function(n){return n.tagName=='INPUT'&&n.type=='text'&&n.name.match(/\/tags\/tags$/);});node.value+=(node.value==""?'':del.trim()+' ')+this[this.selectedIndex].value;this.selectedIndex=0;};ccms.editor.SwapEffect=function(from,to){this.from=from;this.to=to;this.from_xy=ccms.dom.getXY(from);this.dest_xy=ccms.dom.getXY(to);this.dx=this.from_xy[0]-this.dest_xy[0];this.dy=this.from_xy[1]-this.dest_xy[1];};ccms.editor.SwapEffect.prototype.setState=function(state){var xy=[];xy[0]=this.from_xy[0]-this.dx*state;xy[1]=this.from_xy[1]-this.dy*state;ccms.dom.setXY(this.from,xy);xy[0]=this.dest_xy[0]+this.dx*state;xy[1]=this.dest_xy[1]+this.dy*state;ccms.dom.setXY(this.to,xy);};ccms.editor.Positioner=function(){var self=this;var items=[];function updateLegend(fs,pos){var m,legend=fs.getElementsByTagName('legend')[0];if((m=legend.innerHTML.match(/^(.+)\((\d+)\)\s*$/)))
legend.innerHTML=m[1]+'('+(pos+1)+')';}
function swap(apos,bpos,focus_fs){var a=items[apos];var b=items[bpos];if(!a||!b)
return;a.input.value=a.i=bpos;b.input.value=b.i=apos;items[apos]=b;items[bpos]=a;updateLegend(a.fs,bpos);updateLegend(b.fs,apos);self.prepareMove(a,b);if(typeof Animator=='function'){(new Animator({duration:1000,transition:Animator.tx.easeIn,onComplete:function(){self.completeMove(a,b);if(focus_fs)ccms.editor.focusFirstControl(focus_fs);}})).addSubject(new ccms.editor.SwapEffect(a.fs,b.fs)).play();}
else{ccms.dom.swapNode(a.fs,b.fs);self.completeMove(a,b);if(focus_fs)ccms.editor.focusFirstControl(focus_fs);}}
function moveUp(item,e){if(!item.isMoving){var pos=item.i;if(pos>0){swap(pos-1,pos,item.fs);}}}
function moveDown(item,e){if(!item.isMoving){var pos=item.i;if(pos<items.length){swap(pos,pos+1,item.fs);}}}
this.add=function(select){var fs=ccms.dom.getParentByClassName(select,'fieldset','fm-fieldset');var field=ccms.dom.getParentByClassName(select,'div','fm-field');var hidden=ccms.html.INPUT({'type':'hidden','value':select.value,'name':select.name,'class':'position'});fs.appendChild(hidden);field.parentNode.removeChild(field);items.push({'i':items.length,'fs':fs,'input':hidden,'isMoving':false});var aup=ccms.html.SPAN({'class':'moveup'},ccms.html.SPAN('Up'));var adown=ccms.html.SPAN({'class':'movedown'},ccms.html.SPAN('Down'));fs.appendChild(ccms.html.DIV({'class':'subcontent-tools'},aup,adown));ccms.event.attach(aup,'click',moveUp.partial(items[items.length-1]));ccms.event.attach(adown,'click',moveDown.partial(items[items.length-1]));};};ccms.editor.Positioner.prototype.prepareMove=function(a,b){if(ccms.dom.isHidden(a.fs))ccms.dom.show(a.fs);if(ccms.dom.isHidden(b.fs))ccms.dom.show(b.fs);if(typeof ccms.editor.RichText!='undefined'){ccms.editor.RichText.uninstall(ccms.dom.getAncestorByTagName(a.fs,'form'));}
a.isMoving=b.isMoving=true;a.fs_style=ccms.dom.getStyleObject(a.fs,['position','left','top']);b.fs_style=ccms.dom.getStyleObject(b.fs,['position','left','top']);};ccms.editor.Positioner.prototype.completeMove=function(a,b){a.isMoving=b.isMoving=false;ccms.dom.swapNode(a.fs,b.fs);ccms.dom.setStyleObject(a.fs,a.fs_style);ccms.dom.setStyleObject(b.fs,b.fs_style);if(typeof ccms.editor.RichText!='undefined'){ccms.editor.RichText.install(ccms.dom.getAncestorByTagName(a.fs,'form'));}};ccms.editor.Positioner.instances={};ccms.editor.Positioner.install=function(root_element){var selects=ccms.dom.getElementsByClassName('position','select',root_element);if(selects.length){selects.foreach(function(select){var m,positioner,root_fieldset;var property_fieldset=ccms.dom.getParentByClassName(select,'fieldset','fm-fieldset');if(property_fieldset&&(m=property_fieldset.className.match(/(fm-property-[^\s]+)/))){root_fieldset=ccms.dom.getParentByClassName(property_fieldset,'fieldset','fm-fieldset');if(!ccms.editor.Positioner.instances[m[1]]){ccms.editor.Positioner.instances[m[1]]=new ccms.editor.Positioner();}
positioner=ccms.editor.Positioner.instances[m[1]];positioner.add(select);}});}};ccms.editor.installHandlers=function(root_element,optional_data){if(typeof root_element=='undefined')
root_element=document.body;var elements;elements=ccms.dom.getElementsByClassName('tag-selector','select',root_element);if(elements.length)ccms.event.attach(elements,'change',ccms.editor.updateTagSelectList);ccms.dom.getElementsByClassName('categories','ol',root_element).foreach(function(cl){if(cl.parentNode.tagName.toLowerCase()=='div'&&!ccms.dom.hasClass(cl.parentNode.parentNode,'dtCategoryLink')){var id=cl.id;if(!id){cl.id=ccms.dom.generateId();id=cl.id;}
ccms.widgets.add(new ccms.editor.ListExpander(cl),id);ccms.dom.show(cl);}});ccms.dom.getElementsByClassName('categories','ul',root_element).foreach(function(cl){if(cl.parentNode.tagName.toLowerCase()=='div'&&!ccms.dom.hasClass(cl.parentNode.parentNode,'dtCategoryLink')){var id=cl.id;if(!id){cl.id=ccms.dom.generateId();id=cl.id;}
ccms.widgets.add(new ccms.editor.ListExpander(cl),id);ccms.dom.show(cl);}});ccms.events.subscribe('ccms.widgets.Tabs.show',ccms.editor.switchFileTab);ccms.dom.getElementsByClassName('dtUrl','input',root_element).foreach(function(textbox){var btn=ccms.html.SPAN('','Test this Link');btn=ccms.dom.insertAfter(ccms.html.SPAN({'class':'testlink','title':'Test this Link'},btn),textbox);ccms.event.attach(btn,'click',function(e){ccms.URL.open(textbox.value,true);});ccms.event.attach(textbox,'blur',function(e){if(this.value.length){if(this.value.match(/^([\.\/]|[a-zA-Z]+:)/))this.type='text';else this.value='http://'+this.value;}});});};ccms.editor.switchFileTab=function(evt_name,evt_args){var id=evt_args[0];var bits;if((bits=id.match(/^(content(?:-.+)*-file-.+)-panel-(.+)$/))){var source=$(bits[1]+'-source');if(source)source.value=bits[2];else console.log("No source found?",bits,source);}};ccms.editor.focusFirstControl=function(root){var input=ccms.dom.getElementsBy(function(node){var tag=node.tagName.toLowerCase();return tag=='textarea'||(tag=='input'&&node.getAttribute('type')=='text'&&ccms.dom.isVisible(node,root));},'*',root);if(input&&input.length){input=input[0];if(input.tagName.toLowerCase()=='textarea'&&ccms.dom.hasClass(input,'RichTextEditable')&&typeof ccms.editor.RichText=='object'){ccms.editor.RichText.focus(input.id);}
else{input.focus();input.select();}}};ccms.widgets.addInstaller('ccms.editor.Positioner',ccms.editor.Positioner.install);ccms.widgets.addInstaller('ccms.editor.AjaxAddProperty',ccms.editor.AjaxAddProperty.install);ccms.widgets.addInstaller('ccms.editor.installHandlers',ccms.editor.installHandlers);