/*
 DMXzone Page Editor Add-on
 version 1.0.0
 Author: George Petrov
 Copyright (c) 2011 DMXzone
*/
(function(b){var a={actionUrl:"dmxPageEditor.asp",activationMethod:"key",activationKey:"ctr+shft+@",activationSelector:"",editDreamweaverRegions:true,editableRegionsList:"",securityMethod:"user"};b.fn.dmxPageEditor=function(e){var j=b.extend(true,{},a,e);b.extend(true,j.editorConfig,{width:"100%",autoSaveInterval:0,autoIncludeCss:true,toolbars:{Common:{items:{save:true,close:true}}},extensions:["autosize"]});var s=g();var o=f();var i=m(s);var h=s+j.actionUrl;var q;var r;if(j.activationMethod=="key"&&j.activationSelector==""){var k;switch(j.activationKey){case"ctr+shft+@":k=function(t){return(t.ctrlKey&&(t.which==64||t.which==50))};break;case"ctr+f2":k=function(t){return(t.ctrlKey&&t.which==113)};break;case"ctr+\\":k=function(t){return(t.ctrlKey&&t.which==92)};break}b(document).keyup(function(t){if(k(t)){c();t.preventDefault()}})}else{b(j.activationSelector).live("click",function(t){c();t.preventDefault()})}function c(){if(document.location.protocol=="file:"){alert("Can not run Online Page Editor from local file!\nPlease run this page through a web server!");return}b.ajax({url:h+(j.securityMethod=="user"?"?auth=user":""),success:function(t){require([s+"dmxEditor.min.js",s+"css.js!"+o+"dmxEditor.css"],function(){if(j.editableRegionsList!=""){var u=("#"+j.editableRegionsList.replace(/\s*,\s*/gi,",#")).replace(/##/gi,"#");p(b(u).addClass("dmxActivatorDiv"))}if(j.editDreamweaverRegions){p(b("body").getEditableRegions())}b(".dmxPageEditorIcons,.dmxPageEditorIconsBottom").live("click",function(){l(this)})});b("body").bind("editor:afterSave",function(v,u){q[0].innerHTML=u.html;b.ajax({type:"POST",url:h+"?action=save"+(j.securityMethod=="user"?"&auth=user":""),data:{page:i,name:q[0].id,html:u.html,type:q.hasClass("dmxActivatorDiv")?"div":"region"},success:function(w){alert("Save succesful!");d();if(r){l(r)}},error:function(z,B,x){if(z.status==401||z.status==400){alert("Access denied!")}else{if(z.status==500){var y=z.responseText;var w=y.indexOf("ERROR: [");if(w!=-1){var A=y.indexOf("]",w+9);alert("Server Error:\n"+y.substring(w+8,A))}else{alert("Server Error, response:\n"+z.responseText)}}else{if(z.status==404){alert("Can not execute ScriptLibrary/"+j.actionUrl+"\nFile is missing or "+n()+" is not supported on this server!")}else{alert("Error "+x+", code: "+z.status)}}}}})});b("body").bind("editor:removed",function(){if(q){p(q);q=null}})},error:function(u,v,t){if(u.status==401||u.status==400){alert("Access denied!")}else{if(u.status==404){alert("Can not execute ScriptLibrary/"+j.actionUrl+"\nFile is missing or "+n()+" is not supported on this server!")}}}})}function n(){return(j.actionUrl=="dmxPageEditor.asp"?"ASP":"PHP")}function p(u){var t=u.addClass("dmxActivator").each(function(){var v=b(this).offset();b(this).prepend('<div class="dmxPageEditorIcons'+(v.top<22?"Bottom":"")+'"><img src="'+o+'dmxEditor/pencil.png" alt="Click to edit this region" title="Click to edit this region" /></div>')})}function l(t){r=null;if(q){var u=q.data("dmxEditor");if(u.isDocumentModified()){if(confirm("The previous editable area is not saved yet. Changes will be lost if you don't save.\nDo you want to save first?")){r=t;u.save();return}else{return}}else{d()}}q=b(t).parent();b(t).remove();q.removeClass("dmxActivator");q.dmxEditor(j.editorConfig)}function d(){if(q){p(q);q.data("dmxEditor").destruct();q=null}}function g(){var t=b("script[src$='dmxPageEditor.js']");if(t&&t.length>0){return t[0].src.replace(/dmxPageEditor\.js$/i,"").replace(/\s+/g,"%20")}return""}function f(){var u="/styles";var t=b('link[href*="dmxPageEditor.css"]');if(t.length>0){u=t[0].href.replace(/dmxPageEditor\.css$/i,"")}return u}function m(v){var u=v.replace(/\/ScriptLibrary\/?$/i,"");var t=document.location.href.replace(u,"");return t}};b.fn.getEditableRegions=function(){var c=b([]);this.each(function(i,j){var h=j.firstChild;while(h){if(h.nodeType===8){if(h.data.indexOf("InstanceBeginEditable")!=-1){var e=b();var d=h.data.match(/name="([^"]*)"/);var g=d&&d.length>0?d[1]:"editor1";var f=h.nextSibling;if(!(f.nodeName=="DIV"&&f.id==g)){while(f){if(f.nodeType==8&&f.data.indexOf("InstanceEndEditable")!=-1){break}else{e.push(f);f=f.nextSibling}}e.wrapAll('<div id="'+g+'" class="dmxEditor" />')}h=f}}else{if(h.nodeType===1){c=c.add(b(h).getEditableRegions())}}h=h.nextSibling}});return(b(".dmxEditor"))}})(jQuery);
