var parchment_table=new Class({initialize:function(b,a){this.parch=b;this.colSpan=1;this.rowSpan=1;this.table=false;this.noteText="Right click cells to edit.";this.wizardDrag=false;this.selectedElement=false;this.getNote();this.getEditMenu();this.getWizard();this.btn=this.parch.addDropOption("table",MEDIA_URL+"editor/img/parchment/table.png",a,true);this.parch.addEvent("parchmentCleanComplete",this.hijack.bind(this));this.btn.addEvent("mouseover",function(d){var c=new Event(d).stop();this.btn.removeEvent("mousemove");window.setTimeout(function(){this.btn.addEvent("mousemove",function(h){var g=new Event(h).stop();var f=this.btn.getCoordinates();this.showWizard()}.bind(this))}.bind(this),300)}.bind(this));this.btn.addEvent("mouseout",function(d){var c=new Event(d).stop();this.btnSelected=false;window.setTimeout(function(){if(!this.wizardDrag&&this.wizard){this.hideWizard()}}.bind(this),200)}.bind(this));this.parch.addEvent("parchmentMousedown",function(){this.hideEditMenu();this.hideWizard()}.bind(this));this.parch.addEvent("parchmentToolbarClick",function(){this.hideEditMenu();this.hideWizard();this.hideNote()}.bind(this));window.addEvent("scroll",function(){this.hideEditMenu();this.hideWizard();this.hideNote()}.bind(this));window.addEvent("resize",function(){this.hideEditMenu();this.hideWizard();this.hideNote()}.bind(this))},getNote:function(){this.note=new Element("div").addClass("parchment_edit_menu").set("html",this.noteText).inject(document.body);this.parch.setMenuZindex(this.note);this.hideNote()},showNote:function(){if(!$(this.note)){return}if(!$(this.table)){return}var a=$(this.note).getCoordinates();var d=$(this.parch.IF).getCoordinates();var b=$(this.parch.TB).getCoordinates();var g=$(this.table).getCoordinates();var j=$(this.table);var f=j.getCoordinates();var c=f.left+d.left;var h=(g.top+d.top)-a.height;var e="absolute";this.note.setStyles({visibility:"visible",position:e,top:h,left:c})},hideNote:function(){if(!(this.note)){return}this.note.setStyles({position:"absolute",left:"0px",top:"0px",visibility:"hidden"})},hideWizard:function(){if(!$(this.wizard)){return}this.parch.hideElement(this.wizard);this.wizardDrag=false},getWizard:function(){this.cap=new Element("div",{"class":"table-wizard-cap"}).setHTML("0 x 0");this.mouse=new Element("div",{"class":"table-wizard-mouse"}).setStyles({width:"400px",height:"500px"}).addEvent("mouseover",this.cellStart.bindWithEvent(this));this.mouseout=new Element("div",{"class":"table-wizard-mouseout"}).setStyles({width:"90px",height:"90px"});this.mouseover=new Element("div",{"class":"table-wizard-mouseover"}).addEvent("mousedown",this.cellSelect.bindWithEvent(this));this.wrap=new Element("div").setStyles({width:"100%",height:"100%"}).adopt(this.mouse,this.mouseout,this.mouseover);this.wizard=new Element("div",{"class":"table-wizard"}).adopt(this.wrap,this.cap).inject(document.body).addEvent("mouseover",this.cellStart.bindWithEvent(this));this.hideWizard();this.parch.tbDropDowns.include(this.wizard)},showWizard:function(){this.mouseover.setStyles({width:"0px",height:"0px"});this.mouseout.setStyles({width:"90px",height:"90px"});this.cap.innerHTML="0 X 0";var c=this.btn.getCoordinates().left+this.btn.getCoordinates().width;var b=this.btn.getCoordinates().top;var a="absolute";this.wizard.setStyles({visibility:"visible",position:a,top:b,left:c});this.parch.setMenuZindex(this.wizard)},cellStart:function(b){this.wizard.removeEvent("mouseover");var a=Event(b).stop();this.wizard.addEvent("mousemove",this.cellDrag.bindWithEvent(this))},cellDrag:function(g){var f=Event(g).stop();if(f.page.x<this.mouse.getCoordinates().left&&!this.btnSelected){this.hideWizard();this.wizardDrag;return}this.wizardDrag=true;var a=f.page.x-this.mouse.getCoordinates().left;var j=f.page.y-this.mouse.getCoordinates().top;var b=18;var d=18;if(a>18){b=b*Math.ceil(a/18)}if(j>18){d=d*Math.ceil(j/18)}this.mouseover.setStyles({width:b,height:d});if(b>90){this.mouseout.setStyle("width",b)}if(d>90){this.mouseout.setStyle("height",d)}this.colSpan=b/18;this.rowSpan=d/18;var c=this.colSpan+" X "+this.rowSpan;if(this.cap.innerHTML!=c){this.cap.innerHTML=c}},cellSelect:function(b){var a=Event(b).stop();this.hideWizard();this.parch.hideDropDowns();this.createTable()},createTable:function(){var c="";c+='<table class="t-editor with-border full-width">';c+="<tr>";for(var a=1;a<=this.colSpan;a++){c+="<th>Column Head "+a+"</th>"}c+="</tr>";for(var b=1;b<=this.rowSpan;b++){c+="<tr>";for(var a=1;a<=this.colSpan;a++){c+="<td>&nbsp;</td>"}c+="</tr>"}c+="</table>";this.parch.insertHTML(c);this.hijack()},hijack:function(){$(this.parch.body).getElements("table").each(function(a){a.addEvent("mouseover",function(c){var b=new Event(c).stop();this.table=a}.bind(this));if(Browser.Engine.gecko){a.addEvent("mousedown",function(b){this.parch.doc.execCommand("enableObjectResizing",false,"false")}.bind(this))}this.parch.cleanElement(a);a.addClass("t-editor");if(!a.hasClass("with-border")&&!a.hasClass("with-out-border")){a.addClass("with-border")}if(!a.hasClass("full-width")&&!a.hasClass("natural-width")){a.addClass("full-width")}}.bind(this));$(this.parch.body).getElements("tr,td,th").each(function(a){this.parch.cleanElement(a);if(a.getTag()=="th"||a.getTag()=="tr"){return}a.addEvent("mouseover",this.showNote.bind(this));a.addEvent("mouseout",this.hideNote.bind(this));a.addEvent("mousedown",function(c){var b=new Event(c);this.selectedElement=a;this.currentEvent=c;this.hideEditMenu();if(b.rightClick){this.parch.addEvent("showEditMenu",function(d){this.showEditMenu(d)}.bind(this));this.parch.disableContextMenu(c,a,"showEditMenu");return false}}.bind(this))}.bind(this))},hideEditMenu:function(){this.container.setStyles({position:"absolute",left:"0px",top:"0px",visibility:"hidden"})},showEditMenu:function(c){if(!this.table){return}var d=this.container.getCoordinates();var a=$(this.parch.IF).getCoordinates();var g=this.selectedElement.getCoordinates();var b=this.table;if(b.hasClass("with-border")){this.container.getElement(".jsBorder").set("html","Borders Off")}else{this.container.getElement(".jsBorder").set("html","Borders On")}if(b.hasClass("full-width")){this.container.getElement(".jsWidth").set("html","Width natural")}else{this.container.getElement(".jsWidth").set("html","Width 100%")}var f=c.client.x+this.parch.IF.getCoordinates().left;var e=c.client.y+this.parch.IF.getCoordinates().top;this.container.setStyles({visibility:"visible",top:e,left:f})},getEditMenu:function(){str="";str+='<a class="jsRowUp">Insert Row Up</a><br/>';str+='<a class="jsRowDown">Insert Row Down</a><br/>';str+='<a class="jsColumnLeft">Insert Column Left</a><br/>';str+='<a class="jsColumnRight">Insert Column Right</a><br/>';str+="<hr>";str+='<a class="jsBorder"></a><br/>';str+='<a class="jsWidth"></a><br/>';str+="<hr>";str+='<a class="jsDeleteTable">Delete Table</a><br/>';str+='<a class="jsDeleteRow">Delete Row</a><br/>';str+='<a class="jsDeleteColumn">Delete Column</a> ';var a=new Element("div").addClass("parchment_edit_menu").setStyles({width:"200px"}).setStyles({position:"absolute",top:"0px",top:"0px",visibility:"hidden"}).setHTML(str).inject(document.body);this.container=a;this.parch.setMenuZindex(this.container);$(a).getElement(".jsRowUp").addEvent("click",function(){this.addRow("up")}.bind(this));$(a).getElement(".jsRowDown").addEvent("click",function(){this.addRow("down")}.bind(this));$(a).getElement(".jsColumnLeft").addEvent("click",function(){this.addColumn("left")}.bind(this));$(a).getElement(".jsColumnRight").addEvent("click",function(){this.addColumn("right")}.bind(this));$(a).getElement(".jsDeleteTable").addEvent("click",this.deleteTable.bindWithEvent(this));$(a).getElement(".jsDeleteRow").addEvent("click",this.deleteRow.bindWithEvent(this));$(a).getElement(".jsDeleteColumn").addEvent("click",this.deleteColumn.bindWithEvent(this));$(a).getElement(".jsBorder").addEvent("click",this.setBorder.bindWithEvent(this));$(a).getElement(".jsWidth").addEvent("click",this.setWidth.bindWithEvent(this));this.container=a;this.hideEditMenu()},getTable:function(a){var a=$(a);if(a.getTag()=="table"){return a}var b=a;while(b){b=b.getParent();if(b.getTag()=="table"){break}}if(!b||b.getTag()!="table"){b=false}return b},setBorder:function(){var a=this.table;a.toggleClass("with-border");a.toggleClass("with-out-border");this.hideEditMenu()},setWidth:function(){var a=this.table;a.toggleClass("full-width");a.toggleClass("natural-width");this.hideEditMenu()},deleteTable:function(){this.parch.removeCage(this.table);this.table=false;this.hideEditMenu();this.hijack()},deleteRow:function(){var a=this.selectedElement.getParent();a.addClass("tag");var c=$(this.parch.doc.createElement("div")).adopt(this.table.clone());var b=c.getElement("table");var a=b.getElement("tr.tag");a.getChildren().each(function(d){a.removeChild(d)});a.parentNode.removeChild(a);this.parch.selectNode(this.table);this.parch.insertHTML(c.innerHTML);this.hideNote();this.hideEditMenu();this.hijack()},deleteColumn:function(){var f=$(this.selectedElement);var e=f.cellIndex;f.addClass("tag");var d=$(this.parch.doc.createElement("div")).adopt(this.table.clone());var c=d.getElement("table");var b=c.getElement("td.tag").getParent().getParent().getChildren();var a=[];b.each(function(g){g.getChildren().each(function(h){if(h.cellIndex==e){a.include(h)}})});a.each(function(g){g.destroy()});this.parch.selectNode(this.table,true);this.parch.insertHTML(d.innerHTML);this.hideEditMenu();this.hijack()},addColumn:function(c){c=="left"?where="before":where="after";var g=$(this.selectedElement);var f=g.cellIndex;g.addClass("tag");var e=$(this.parch.doc.createElement("div")).adopt(this.table.clone());var d=e.getElement("table");var b=d.getElement(".tag").getParent().getParent().getChildren();b.each(function(h){h.getChildren().each(function(k){if(k.cellIndex==f){var j=$(this.parch.doc.createElement(k.getTag()));j.set("html","&nbsp;").inject(k,where)}}.bind(this))}.bind(this));var a=d.getElement("td.tag").removeClass("tag");this.parch.createCaret(a,"top");this.parch.selectNode(this.table,true);this.parch.insertHTML(e.innerHTML);this.parch.selectCaret();this.hideEditMenu();this.hijack()},addRow:function(e){e=="up"?where="before":where="after";$(this.selectedElement).addClass("cursor-tag");var d=$(this.selectedElement).getParent();var b=d.getChildren().length;d.addClass("tag");var g=$(this.parch.doc.createElement("div")).adopt(this.table.clone());var f=g.getElement("table");var d=f.getElement("tr.tag").removeClass("tag");var a=$(this.parch.doc.createElement("tr"));a.inject(d,where);for(i=0;i<b;i++){var d=$(this.parch.doc.createElement("td"));d.set("html","&nbsp;").inject(a)}var c=f.getElement("td.cursor-tag").removeClass("cursor-tag");this.parch.createCaret(c,"top");this.parch.selectNode(this.table,true);this.parch.insertHTML(g.innerHTML);this.parch.selectCaret();this.hideEditMenu();this.hijack()}});