/** Texyla
 *  Licence GPL
 *  Autoři: Jan Marek, Petr Vaněk
 *  Version: 0.5
*/

jQuery.fn.extend({texyla:function(options){this.filter("textarea").each(function(){new Texyla(this,options)})}});jQuery.extend({texyla:function(var1,var2,var3){if(typeof var1=="string"){switch(var1){case"setDefaults":jQuery.extend(Texyla.prototype.defaultOptions,var2);break;case"initPlugin":Texyla.prototype.initPlugins.push(var2);break;case"addButton":Texyla.prototype.buttons[var2]=var3;break;case"extend":jQuery.extend(Texyla.prototype,var2);break;case"addStrings":if(!Texyla.prototype.languages[var2]){Texyla.prototype.languages[var2]={}}jQuery.extend(Texyla.prototype.languages[var2],var3);break}}else{jQuery("textarea").texyla(var1)}}});function Texyla(textarea,options){this.options=jQuery.extend({},this.defaultOptions,options||{});this.textarea=jQuery(textarea);if(this.textarea.data("texyla"))return false;this.textarea.data("texyla",true);this.lng=this.languages[this.options.lng];this.baseDir=this.options.baseDir||this.baseDir;this.options.iconPath=this.expand(this.options.iconPath);this.options.previewPath=this.expand(this.options.previewPath);this.options.emoticonPath=this.expand(this.options.emoticonPath);this.texy=new Texy(this);this.wrap();for(var i=0;i<this.initPlugins.length;i++){this.initPlugins[i].apply(this)}};Texyla.prototype.expand=function(text,variable){text=text.replace("%texyla_base%",this.baseDir);if(variable){text=text.replace("%var%",variable)}return text};Texyla.prototype.initPlugins=[];Texyla.prototype.submit=function(){var f=this.textarea.get(0).form;function submitnout(){if(f.submit.tagName==undefined){f.submit()}else{f.submit.click()}}if(typeof f.onsubmit=='function'){if(f.onsubmit()){submitnout()}}else{submitnout()}};Texyla.prototype.baseDir=jQuery("head script:last").attr("src").replace(/(\/js)?\/?[\w-]+\.js$/,'');Texyla.prototype.languages={};Texyla.prototype.defaultOptions={textarea:"textarea",width:null,padding:5,texyCfg:"",toolbar:['bold','italic',null,'ul','ol',null,'link',null,'emoticon','symbol',"img","table",null,['web']],bottomLeftToolbar:['edit','preview'],bottomRightEditToolbar:['syntax'],bottomRightPreviewToolbar:['submit'],buttonType:"span",tabs:false,defaultView:"edit",iconWidth:16,iconHeight:16,baseDir:null,iconPath:"%texyla_base%/icons/%var%.png",previewPath:"%texyla_base%/php/preview.php",lng:"cs"};function Selection(ta){this.textarea=ta};Selection.prototype={lineFeedFormat:null,lineFeedKnown:false,isIe:function(){if(this.textarea.selectionStart||this.textarea.selectionStart===0){return false}else{if(document.selection){return true}}return null},tag:function(firstText,secondText){this.doSelect();this.changeSelection(firstText+this.txt+secondText);if(this.cursor){this.select(this.start+firstText.length,0)}else{this.select(this.start,firstText.length+this.len+secondText.length)}},replace:function(replacement){if(replacement===null)return;this.doSelect();this.changeSelection(replacement);this.select(this.start,replacement.length)},doTrimSelect:function(){this.doSelect();if(this.txt.substring(this.len,this.len-1)==" "){this.select(this.start,this.len-1)}return this.doSelect()},phrase:function(firstText,secondText){this.doTrimSelect().tag(firstText,secondText?secondText:firstText)},changeSelection:function(replacement){var scrolled=this.textarea.scrollTop;var val=this.textarea.value;this.textarea.value=val.substring(0,this.start)+replacement+val.substring(this.end);this.textarea.scrollTop=scrolled},lf:function(){if(this.lineFeedKnown)return this.lineFeedFormat;var unix=this.textarea.value.indexOf('\n');var mac=this.textarea.value.indexOf('\r');var win=this.textarea.value.indexOf('\r\n');var lineFeed;if(unix>=0)lineFeed='\n';if(mac>=0)lineFeed='\r';if(win>=0)lineFeed='\r\n';if(lineFeed){this.lineFeedFormat=lineFeed;this.lineFeedKnown=true;return lineFeed}return document.selection?'\r\n':'\n'},doSelect:function(){this.textarea.focus();if(this.isIe()){var backup=this.textarea.value;var ieSelection=document.selection.createRange();this.txt=ieSelection.text;this.len=this.txt.length;var bookmark="[~Z~A~L~O~Z~K~A~]";ieSelection.text=bookmark+this.txt;this.start=this.textarea.value.indexOf(bookmark);this.end=this.start+this.len;this.textarea.value=backup;this.select(this.start,this.len)}else{this.start=this.textarea.selectionStart;this.end=this.textarea.selectionEnd;this.txt=this.textarea.value.substring(this.start,this.end);this.len=this.txt.length}this.cursor=this.start==this.end;return this},select:function(from,length){if(this.isIe()){var lfCount=this.textarea.value.substring(0,from).split("\r\n").length-1;from-=lfCount;this.textarea.focus();this.textarea.select();var ieSelected=document.selection.createRange();ieSelected.collapse(true);ieSelected.moveStart("character",from);ieSelected.moveEnd("character",length);ieSelected.select()}else{this.textarea.selectionStart=from;this.textarea.selectionEnd=from+length}this.textarea.focus()},selectBlock:function(){this.doSelect();var lf=this.lf();var ta=this.textarea;var workFrom=ta.value.substring(0,this.start).lastIndexOf(lf);if(workFrom!==-1)workFrom+=lf.length;var from=Math.max(0,workFrom);var len=ta.value.substring(from,this.start).length+this.len;var fromSelectionEnd=ta.value.substring(this.end,ta.value.length);var lineFeedPos=fromSelectionEnd.indexOf(lf);len+=lineFeedPos==-1?fromSelectionEnd.length:lineFeedPos;this.select(from,len);return this.doSelect()}};function Texy(texyla){this.textarea=texyla.textarea.get(0);this.texyla=texyla};Texy.prototype=jQuery.extend({},Selection.prototype,{block:function(what){this.tag('/--'+what+this.lf(),this.lf()+'\\--')},link:function(addr){if(addr)this.phrase('"','":'+addr)},acronym:function(title){this.doSelect();if(title){if(this.txt.match(/^[a-zA-ZěščřžýáíéúůĚŠČŘŽÝÁÍÉÚŮ]{2,}$/)){this.tag('','(('+title+'))')}else{this.phrase('"','"(('+title+'))')}}},line:function(){this.doSelect();var lf=this.lf();var lineText=lf+lf+'-------------------'+lf+lf;if(this.cursor)this.tag(lineText,'');else this.replace(lineText)},align:function(type){this.doSelect();var lf=this.lf();var start='.'+type+lf;var newPar=lf+lf;var found=this.textarea.value.substring(0,this.start).lastIndexOf(newPar);var beforePar=found+newPar.length;if(found==-1){this.textarea.value=start+this.textarea.value}else{this.textarea.value=this.textarea.value.substring(0,beforePar)+start+this.textarea.value.substring(beforePar)}this.select(this.start+start.length,this.len)},_toRoman:function(num){num=Math.min(parseInt(num,10),5999);var mill=['','M','MM','MMM','MMMM','MMMMM'],cent=['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'],tens=['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'],ones=['','I','II','III','IV','V','VI','VII','VIII','IX'],m,c,t,r=function(n){n=(num-(num%n))/n;return n};m=r(1000);num=num%1000;c=r(100);num=num%100;t=r(10);return mill[m]+cent[c]+tens[t]+ones[num%10]},_toLetter:function(n){var alphabet=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];return alphabet[Math.max(0,Math.min(n,alphabet.length)-1)]},list:function(type){this.selectBlock();var lf=this.lf();var lines=this.txt.split(lf);var lineCt=this.cursor?3:lines.length;var replacement='';for(var i=1;i<=lineCt;i++){var bullet={ul:'-',ol:i+')',bq:'>',indent:'',romans:this._toRoman(i)+')',smallRomans:this._toRoman(i).toLowerCase()+')',smallAlphabet:this._toLetter(i)+')',bigAlphabet:this._toLetter(i).toUpperCase()+')'};replacement+=bullet[type]+' '+(!this.cursor?lines[i-1]:'')+(i!=lineCt?lf:'');if(this.cursor&&i===1)var curPos=replacement.length}if(this.cursor){this.tag(replacement.substring(0,curPos),replacement.substring(curPos))}else{this.replace(replacement)}},indent:function(){this.list("indent")},unindent:function(){this.selectBlock();var lines=this.txt.split(this.lf());var replacement=[];for(var i=0;i<lines.length;i++){var first=lines[i].substring(0,1);if(first==" "||first=="\t"){replacement.push(lines[i].substring(1,lines[i].length))}else{replacement.push(lines[i])}}this.replace(replacement.join(this.lf()))},heading:function(type){this.selectBlock();var lf=this.lf();function underline(len,type){var txt='';for(var i=0;i<Math.max(3,len);i++){txt+=type}return txt}if(this.cursor){var headingText=prompt(this.texyla.lng.texy_heading_text,'');if(headingText){this.tag(headingText+lf+underline(headingText.length,type)+lf,'')}}else{this.tag('',lf+underline(this.len,type))}},img:function(src,alt,align,descr){var imgT='';if(align=='<>'){imgT+=this.lf()+'.<>'+this.lf();align=false}imgT+='[* '+src+' ';imgT+=alt?'.('+alt+') ':'';imgT+=(align?align:'*')+']';imgT+=descr?' *** '+alt:'';this.replace(imgT)},table:function(cols,rows,header){var lf=this.lf();var tabTxt=lf;for(var i=0;i<rows;i++){if(header==='n'&&i<2){tabTxt+='|';for(var j=0;j<cols;++j){tabTxt+='--------'}tabTxt+=lf}for(j=0;j<cols;j++){if(header==='l'&&j===0){tabTxt+="|* \t"}else{tabTxt+="| \t"}if(i===0&&j===0)var curPos=tabTxt.length-1}tabTxt+='|'+lf}tabTxt+=lf;this.tag(tabTxt.substring(0,curPos),tabTxt.substring(curPos))}});(function($){Texyla.prototype.languages.cs={btn_h1:"Nejv\u011btší nadpis",btn_h2:"Velký nadpis",btn_h3:"St\u0159ední nadpis",btn_h4:"Nejmen\u0161í nadpis",btn_bold:"Tu\u010dně",btn_italic:"Kurzíva",btn_del:"P\u0159eškrtnuto",btn_center:"Zarovnání na st\u0159ed",btn_left:"Zarovnání vlevo",btn_right:"Zarovnání vpravo",btn_justify:"Zarovnání do bloku",btn_ul:"Seznam",btn_ol:"\u010císlovaný seznam",btn_ol_romans:"\u0158ímské číslování",btn_ol_romans_small:"Malé \u0159ímské číslování",btn_ol_alphabet_small:"Malá abeceda",btn_ol_alphabet_big:"Velká abeceda",btn_blockquote:"Bloková citace",btn_sub:"Dolní index",btn_sup:"Horní index",btn_link:"Odkaz",btn_img:"Obrázek",btn_table:"Tabulka",btn_acronym:"Vysv\u011btlení zkratky",btn_hr:"\u010cára",btn_code:"Kód",btn_code_html:"Kód html",btn_code_css:"Kód CSS",btn_code_js:"Kód javascript",btn_code_php:"Kód php",btn_code_sql:"Kód SQL",btn_comment:"Komentá\u0159",btn_div:"Blok div",btn_text:"Text",btn_code_inline:"Inline kód",btn_html:"HTML",btn_notexy:"Inline text",btn_web:"Web editoru Texyla",btn_emoticon:"Smajlík",btn_symbol:"Symbol",btn_img_upload:"Nahrát obrázek",btn_img_gallery:"Obrázková galerie",btn_file_upload:"Nahrát soubor",btn_file_browser:"Vybrat soubor k uploadu",texy_heading_text:"Text nadpisu",btn_edit:"Upravit",btn_preview:"Náhled",btn_htmlPreview:"HTML",btn_syntax:"Texy nápov\u011bda",btn_submit:"Odeslat",wait:"Prosím \u010dekejte",viewEmpty:"Textové pole je prázdné!",linkHeading:"Vlo\u017eit odkaz",linkText:"Text odkazu",linkUrl:"Adresa odkazu",acronymTitle:"Titulek",imgHeading:"Vlo\u017eit obrázek",imgSrc:"Adresa obrázku",imgAlt:"Popis",imgAlign:"Zarovnání",imgAlignNone:"\u017eádné",imgAlignLeft:"vlevo",imgAlignRight:"vpravo",imgAlignCenter:"na st\u0159ed",imgDescription:"Zobrazit jako popisek",imgUploadHeading:"Nahrát obrázek",imgForUpload:"Obrázek k uploadu:",imgGalleryHeading:"Obrázková galerie",tableHeading:"Vlo\u017eit tabulku",tableCols:"Po\u010det sloupců",tableRows:"Po\u010det řádek",tableTh:"Hlavi\u010dka",tableThNone:"\u017eádná",tableThTop:"naho\u0159e",tableThLeft:"vlevo",emoticonHeading:"Vlo\u017eit smajlík",symbolHeading:"Vlo\u017eit symbol",windowOk:"OK",windowClose:"Zav\u0159ít",windowCancel:"Storno",windowCloseAfterInsert:"Zav\u0159ít po vložení",syntaxUrl:'http://texy.info/cs/syntax',fileUploadHeading:"Nahrát soubor",fileForUpload:"Soubor k uploadu:",fileBrowserHeading:"Vybrat soubor k uploadu"};Texyla.prototype.buttons={h1:function(){this.texy.heading('#')},h2:function(){this.texy.heading('*')},h3:function(){this.texy.heading('=')},h4:function(){this.texy.heading('-')},bold:function(){this.texy.phrase('**')},italic:function(){this.texy.phrase('*')},del:function(){this.texy.phrase('--')},center:function(){this.texy.align('<>')},left:function(){this.texy.align('<')},right:function(){this.texy.align('>')},justify:function(){this.texy.align('=')},ul:function(){this.texy.list('ul')},ol:function(){this.texy.list('ol')},ol_romans:function(){this.texy.list('romans')},ol_romans_small:function(){this.texy.list('smallRomans')},ol_alphabet_small:function(){this.texy.list('smallAlphabet')},ol_alphabet_big:function(){this.texy.list('bigAlphabet')},blockquote:function(){this.texy.list('bq')},indent:function(){this.texy.indent()},unindent:function(){this.texy.unindent()},sub:function(){this.texy.phrase('__')},sup:function(){this.texy.phrase('^^')},link:function(){this.texy.link(prompt(this.lng.linkUrl,'http://'))},acronym:function(){this.texy.acronym(prompt(this.lng.acronymTitle,''))},hr:function(){this.texy.line()},code:function(){this.texy.block('code')},code_html:function(){this.texy.block('code html')},code_css:function(){this.texy.block('code css')},code_js:function(){this.texy.block('code js')},code_php:function(){this.texy.block('code php')},code_sql:function(){this.texy.block('code sql')},code_inline:function(){this.texy.phrase('`')},html:function(){this.texy.block('html')},notexy:function(){this.texy.phrase("''","''")},web:function(){window.open('http://texyla.jaknato.com/')},syntax:function(){window.open(this.lng.syntaxUrl)},div:function(){this.texy.block('div')},comment:function(){this.texy.block('comment')},text:function(){this.texy.block('text')},preview:function(){this.view("preview")},htmlPreview:function(){this.view("htmlPreview")},edit:function(){this.view("edit")},submit:function(){this.submit()}};Texyla.prototype.wrap=function(){this.container=this.textarea.wrap('<div class="texyla"></div>').parent();var containerWidth=this.options.width||this.textarea.get(0).offsetWidth||this.textarea.width();this.container.width(containerWidth);this.editDiv=this.textarea.wrap('<div class="textarea-container"></div>').parent().wrap('<div class="edit-div"></div>').parent();if(this.textarea.get(0).offsetWidth>0){this.textarea.width(containerWidth);var delta=this.textarea.get(0).offsetWidth-containerWidth}else{var delta=0}this.textarea.width(containerWidth-delta-2*this.options.padding);this.textareaHeight=this.textarea.get(0).offsetHeight;this.previewDiv=$('<div class="preview-div"></div>').insertAfter(this.editDiv);this.previewDiv.prepend('<div class="view-header" style="background-image: url(\''+this.expand(this.options.iconPath,"preview")+'\');">'+this.lng.btn_preview+'</div>');this.preview=$('<div class="preview"></div>').appendTo(this.previewDiv).wrap('<div class="preview-wrapper ui-component-content"></div>');this.htmlPreviewDiv=$('<div class="html-preview-div"></div>').insertAfter(this.previewDiv);this.htmlPreviewDiv.prepend('<div class="view-header" '+'style="background-image: url(\''+this.expand(this.options.iconPath,"htmlPreview")+'\');">'+this.lng.btn_htmlPreview+'</div>');this.htmlPreview=$('<pre class="html-preview"></pre>').appendTo(this.htmlPreviewDiv).wrap('<div class="preview-wrapper ui-component-content"></div>');this.wait=$('<div class="preview-wait">'+this.lng.wait+'</div>');this.createToolbar();this.createBottomToolbar();this.view(this.options.defaultView,true)};Texyla.prototype.createToolbar=function(){var toolbar=$('<ul class="toolbar"></ul>').prependTo(this.editDiv);var item,toolbar2;for(var i=0;i<this.options.toolbar.length;i++){item=this.options.toolbar[i];if(typeof item=="string"){$("<span title='"+this.lng["btn_"+item]+"'>"+"<img src='"+this.expand(this.options.iconPath,item)+"' width='"+this.options.iconWidth+"' height='"+this.options.iconHeight+"'>"+"</span>").click(this.clickButton(item)).appendTo("<li class='btn_"+item+"'></li>").parent().appendTo(toolbar);continue}if(item===null){toolbar.append("<li class='separator'></li>");continue}if(item instanceof Array){toolbar2=$("<ul class='ui-component-content'></ul>");var menuTimeout;toolbar2.appendTo("<li class='menu'></li>").parent().mouseover(function(){clearTimeout(menuTimeout);$(this).siblings().find("ul:visible").fadeOut("fast");$(this).find("ul").show()}).mouseout(function(){var _this=this;menuTimeout=setTimeout(function(){$(_this).find("ul").fadeOut("fast")},300)}).appendTo(toolbar);for(var j=0;j<item.length;j++){$("<li class='btn_"+item[j]+"'>"+"<span style='background-image: url(\""+this.expand(this.options.iconPath,item[j])+"\");'>"+this.lng["btn_"+item[j]]+"</span></li>").click(this.clickButton(item[j])).appendTo(toolbar2)}}}};Texyla.prototype.clickButton=function(name){var _this=this;if(name in this.buttons){return function(e){_this.buttons[name].call(_this,e)}}else{return function(){alert('Function "'+name+'" is not supported!')}}};Texyla.prototype.createBottomToolbar=function(){var bottomToolbar=$("<div class='bottom-toolbar'></div>").appendTo(this.container);this.leftToolbar=$("<div class='left-toolbar'></div>").appendTo(bottomToolbar);var right=$('<div class="right-toolbar"></div>').appendTo(bottomToolbar);this.rightEditToolbar=$("<div class='right-edit-toolbar'></div>").appendTo(right);this.rightPreviewToolbar=$("<div class='right-preview-toolbar'></div>").appendTo(right);if(this.options.tabs){this.leftToolbar.addClass("tabs")}else if(this.options.buttonType=="span"){this.leftToolbar.addClass("span-tb")}if(this.options.buttonType=="span"){right.addClass("span-tb")}var _this=this;function createButton(icon,name,func,tabs){var iconUrl=_this.expand(_this.options.iconPath,icon);if(_this.options.buttonType=="span"||tabs){return $("<span class='btn btn_"+icon+" ui-default-state'>"+"<span class='btn-left'></span><span class='btn-middle'>"+"<span style='background-image: url(\""+iconUrl+"\");' class='icon-span'>"+name+"</span>"+"</span><span class='btn-right'></span>"+"</span>").click(func)}else{return $("<button type='button' class='btn_"+icon+"'>"+"<img src='"+iconUrl+"' width='"+_this.options.iconWidth+"' height='"+_this.options.iconHeight+"'>"+" "+name+"</button>").click(func)}};function insertButtons(toolbar,buttons,tabs){for(var i=0;i<buttons.length;i++){createButton(buttons[i],_this.lng["btn_"+buttons[i]],_this.clickButton(buttons[i]),tabs).appendTo(toolbar)}};insertButtons(this.leftToolbar,this.options.bottomLeftToolbar,this.options.tabs);insertButtons(this.rightEditToolbar,this.options.bottomRightEditToolbar);insertButtons(this.rightPreviewToolbar,this.options.bottomRightPreviewToolbar)};Texyla.prototype.view=function(type,first){var taVal=this.textarea.val();if(type!="edit"&&taVal==""){if(first){this.view("edit");return}alert(this.lng.viewEmpty);this.textarea.focus();return}switch(type){case"preview":this.previewDiv.show();this.htmlPreviewDiv.hide();this.editDiv.hide();this.rightPreviewToolbar.show();this.rightEditToolbar.hide();break;case"htmlPreview":this.previewDiv.hide();this.htmlPreviewDiv.show();this.editDiv.hide();this.rightPreviewToolbar.show();this.rightEditToolbar.hide();break;case"edit":this.previewDiv.hide();this.htmlPreviewDiv.hide();this.editDiv.show();this.rightPreviewToolbar.hide();this.rightEditToolbar.show();break}if(type!="edit"){var height=this.textarea.get(0).offsetHeight||this.textareaHeight;if(height){var curPrev=this[type=="preview"?"preview":"htmlPreview"].parent();curPrev.height(height);var delta=curPrev.get(0).offsetHeight-height;this.container.find("div.preview-wrapper").height(height-delta)}else{this.container.find("div.preview-wrapper").height("auto")}}if(this.options.tabs){var tabs=this.leftToolbar;tabs.find(".ui-active-state").removeClass("ui-active-state").addClass("ui-default-state");tabs.find(".btn_"+type).addClass("ui-active-state").removeClass("ui-default-state")}else{var views=["preview","htmlPreview","edit"];for(var i=0;i<views.length;i++){if(views[i]==type){this.container.find(".btn_"+type).hide()}else{this.container.find(".btn_"+views[i]).show()}}}if(type!="edit"&&this.lastPreviewedTexy!=taVal){var _this=this;function onLoad(data){_this.preview.html(data).show();_this.htmlPreview.text(data.replace(new RegExp("\n","g"),_this.texy.lf())).show();_this.wait.hide()};this.lastPreviewedTexy=taVal;var parent=this[type=="preview"?"preview":"htmlPreview"].parent();parent.prepend(this.wait);this.wait.show().css({marginTop:(parent.get(0).offsetHeight-this.wait.get(0).offsetHeight)/2,marginLeft:(parent.get(0).offsetWidth-this.wait.get(0).offsetWidth)/2});this.preview.hide();this.htmlPreview.hide();$.post(this.options.previewPath,{texy:taVal,cfg:this.options.texyCfg},onLoad)}};$.texyla("initPlugin",function(){if(typeof(this.textarea.resizable)!="function")return;var _this=this;this.textarea.resizable({handles:'s',minHeight:80,transparent:true,stop:function(){_this.textareaHeight=_this.textarea.get(0).offsetHeight}})});$.texyla("initPlugin",function(){var _this=this;this.textarea.bind($.browser.opera?"keypress":"keydown",function(e){_this.keys(e)})});$.texyla("extend",{keys:function(e){var pressedKey=e.charCode||e.keyCode||-1;var action=false;if(e.ctrlKey&&pressedKey==66&&!e.altKey){this.texy.phrase('**');action=true}if(e.ctrlKey&&pressedKey==73){this.texy.phrase('*');action=true}if(pressedKey==9&&e.shiftKey){this.texy.unindent();action=true}if(pressedKey==9&&!e.shiftKey){if(this.texy.doSelect().txt.indexOf(this.texy.lf())==-1){this.texy.tag('\t','')}else{this.texy.indent()}action=true}if(e.ctrlKey&&pressedKey==83){this.submit();action=true}if(action){if(e.preventDefault&&e.stopPropagation){e.preventDefault();e.stopPropagation()}else{window.event.cancelBubble=true;window.event.returnValue=false}}}});$.texyla("initPlugin",function(){this.openedWindows={}});$.texyla("extend",{window:function(options){if(typeof(options.el.dialog)!="function"){alert("Error: jQuery UI Dialog is not loaded!");return}var _this=this;if(!this.openedWindows[options.name]){this.openedWindows[options.name]=options.el;var dialogOptions=options.options||{};var dimensions=this.options[options.name+"WindowDimensions"];if(dimensions){dialogOptions.width=dimensions[0];dialogOptions.height=dimensions[1]}if(!dialogOptions.title&&options.title){dialogOptions.title=options.title}if(options.func){var buttons={};buttons[this.lng.windowOk]=function(){options.func();if(!options.stayOpened)options.el.dialog("close")};buttons[this.lng.windowCancel]=function(){options.el.dialog("close")};dialogOptions.buttons=buttons}var dimensionFix=function(){options.el.css({width:"auto",height:"auto"})};dialogOptions.open=dimensionFix;dialogOptions.resizeStop=dimensionFix;dialogOptions.close=function(){_this.openedWindows[options.name].dialog("destroy").remove();_this.openedWindows[options.name]=null};options.el.dialog(dialogOptions);options.el.find("input:first").focus()}else{this.openedWindows[options.name].dialog("open")}},getWindow:function(name){return this.openedWindows[name]?this.openedWindows[name]:null}});$.texyla("setDefaults",{imgWindowDimensions:[350,250]});$.texyla("addButton","img",function(){var _this=this;var el=$("<div><table><tbody>"+'<tr><th><label>'+this.lng.imgSrc+'</label></th><td><input type="text" class="src"></td></tr>'+'<tr><th><label>'+this.lng.imgAlt+'</label></th><td><input type="text" class="alt"></td></tr>'+'<tr><td></td><td><label><input type="checkbox" class="descr">'+this.lng.imgDescription+'</label></td></tr>'+'<tr><th><label>'+this.lng.imgAlign+'</label></th><td><select class="align">'+'<option value="*">'+this.lng.imgAlignNone+'</option>'+'<option value="<">'+this.lng.imgAlignLeft+'</option>'+'<option value=">">'+this.lng.imgAlignRight+'</option>'+'<option value="<>">'+this.lng.imgAlignCenter+'</option>'+"</select></td></tr></tbody></table></div>");this.window({name:"img",el:el,title:this.lng.imgHeading,func:function(){_this.texy.img(el.find(".src").val(),el.find(".alt").val(),el.find(".align").val(),el.find(".descr").get(0).checked)}})});$.texyla("setDefaults",{emoticonPath:"%texyla_base%/emoticons/texy/%var%.gif",emoticons:{':-)':'smile',':-(':'sad',';-)':'wink',':-D':'biggrin','8-O':'eek','8-)':'cool',':-?':'confused',':-x':'mad',':-P':'razz',':-|':'neutral'},emoticonWindowDimensions:[192,170]});$.texyla("addButton","emoticon",function(){var _this=this;var emoticons=$('<div></div>');var emoticonsEl=$('<div class="emoticons"></div>').appendTo(emoticons);for(var i in this.options.emoticons){function emClk(emoticon){return function(){_this.texy.replace(emoticon);if(emoticons.find("input.close-after-insert").get(0).checked){emoticons.dialog("close")}}};$("<img src='"+this.options.emoticonPath.replace("%var%",this.options.emoticons[i])+"' title='"+i+"' alt='"+i+"' class='ui-default-state'>").click(emClk(i)).appendTo(emoticonsEl)}emoticons.append("<br><label><input type='checkbox' checked class='close-after-insert'> "+this.lng.windowCloseAfterInsert+"</label>");this.window({name:"emoticon",el:emoticons,title:this.lng.emoticonHeading})});$.texyla("setDefaults",{linkWindowDimensions:[330,180]});$.texyla("addButton","link",function(e){var _this=this;var cont=$("<div><table><tbody>"+'<tr><th><label>'+this.lng.linkText+'</label></th><td><input type="text" class="link-text" value="'+this.texy.doTrimSelect().txt+'"></td></tr>'+'<tr><th><label>'+this.lng.linkUrl+'</label></th><td><input type="text" class="link-url" value="http://"></td></tr>'+"</tbody></table></div>");this.window({name:"link",title:this.lng.linkHeading,el:cont,func:function(){_this.texy.replace('"'+cont.find(".link-text").val()+'":'+cont.find(".link-url").val())}})});$.texyla("setDefaults",{symbols:["&","@",["<","&lt;"],[">","&gt;"],"[","]","{","}","\\","α","β","π","µ","Ω","∑","°","∞","≠","±","×","÷","≥","≤","®","™","€","£","$","~","^","·","•"],symbolWindowDimensions:[300,230]});$.texyla("addButton","symbol",function(e){var _this=this;var el=$('<div></div>');var symbolsEl=$('<div class="symbols"></div>').appendTo(el);var symbols=this.options.symbols;for(var i=0;i<symbols.length;i++){function clk(text){return function(){_this.texy.replace(text);if(el.find("input.close-after-insert").get(0).checked){el.dialog("close")}}};$("<span class='ui-default-state'></span>").text(symbols[i]instanceof Array?symbols[i][0]:symbols[i]).click(clk(symbols[i]instanceof Array?symbols[i][1]:symbols[i])).appendTo(symbolsEl)}el.append("<br><label><input type='checkbox' checked class='close-after-insert'> "+this.lng.windowCloseAfterInsert+"</label>");this.window({name:"symbol",el:el,title:this.lng.symbolHeading})});$.texyla("setDefaults",{imageUploadPath:"%texyla_base%/plugins/img-upload/img-upload.php",imageUploadWindowDimensions:[350,200]});$.texyla("initPlugin",function(){this.options.imageUploadPath=this.expand(this.options.imageUploadPath)});$.texyla("extend",{imageUploadId:0});$.texyla("addButton","img_upload",function(e){if(typeof($.ajaxFileUpload)!="function"){alert("Error: jQuery plugin 'ajaxFileUpload' is not loaded");return}var _this=this;var id_img=++this.imageUploadId;var el=$('<div>'+this.lng.imgForUpload+'<br>'+'<input type="file" name="fileToUpload'+id_img+'" id="fileToUpload'+id_img+'"></div>');this.window({name:"imageUpload",el:el,title:this.lng.imgUploadHeading,stayOpened:true,func:function(){el.ajaxStart(function(){el.html('<p class="wait">'+_this.lng.wait+'</p>');el.parent().parent().find(".ui-dialog-buttonpane").hide()}).ajaxComplete(function(){el.dialog("close")});$.ajaxFileUpload({url:_this.options.imageUploadPath+"?fileToUpload=fileToUpload"+id_img,fileElementId:'fileToUpload'+id_img,dataType:'json',success:function(data,status){if(data.error!=''){alert(data.error)}else{_this.buttons.img.call(_this);var winEl=_this.getWindow("img");winEl.find(".src").val(data.filename);winEl.find(".alt").focus()}},error:function(data,status,e){alert(e)}});return false}})});$.texyla("setDefaults",{filesBaseDir:"files/",fileUploadPath:"%texyla_base%/plugins/file-upload/file-upload.php",fileUploadWindowDimensions:[350,200]});$.texyla("initPlugin",function(){this.options.fileUploadPath=this.expand(this.options.fileUploadPath)});$.texyla("extend",{fileUploadId:0});$.texyla("addButton","file_upload",function(e){if(typeof($.ajaxFileUpload)!="function"){alert("Error: jQuery plugin 'ajaxFileUpload' is not loaded");return}var _this=this;var id_file=++this.fileUploadId;var el=$('<div>'+this.lng.fileForUpload+'<br>'+'<input type="file" name="fileToUpload'+id_file+'" id="fileToUpload'+id_file+'"></div>');this.window({name:"fileUpload",el:el,title:this.lng.fileUploadHeading,stayOpened:true,func:function(){el.ajaxStart(function(){el.html('<p class="wait">'+_this.lng.wait+'</p>');el.parent().parent().find(".ui-dialog-buttonpane").hide()}).ajaxComplete(function(){el.dialog("close")});$.ajaxFileUpload({url:_this.options.fileUploadPath+"?fileToUpload=fileToUpload"+id_file,fileElementId:'fileToUpload'+id_file,dataType:'json',success:function(data,status){if(data.error!=''){alert(data.error)}else{_this.buttons.link.call(_this);var winEl=_this.getWindow("link");winEl.find(".link-text").val(data.filename).select();winEl.find(".link-url").val(_this.options.filesBaseDir+data.filename)}},error:function(data,status,e){alert(e)}});return false}})});$.texyla("setDefaults",{tableWindowDimensions:[320,200]});$.texyla("addButton","table",function(e){var cont=$("<div style='position:relative'>"+'<table class="table"><tbody>'+'<tr><th><label>'+this.lng.tableCols+'</label></th><td><input type="number" class="cols" size="3" maxlength="2" min="1" value="2"></td></tr>'+'<tr><th><label>'+this.lng.tableRows+'</label></th><td><input type="number" class="rows" size="3" maxlength="2" min="1" value="2"></td></tr>'+'<tr><th><label>'+this.lng.tableTh+'</label></th><td><select class="header">'+'<option>'+this.lng.tableThNone+'</option>'+'<option value="n">'+this.lng.tableThTop+'</option>'+'<option value="l">'+this.lng.tableThLeft+'</option>'+'</select></td></tr></tbody></table>'+'<div class="tab-background"><div class="tab-selection"></div><div class="tab-control"></div></div>'+"</div>");var _this=this;function ins(){_this.texy.table(cont.find(".cols").val(),cont.find(".rows").val(),cont.find(".header").val())};var resizing=true,posX,posY;cont.find(".tab-control").click(function(e){resizing=!resizing}).mousemove(function(e){if(resizing){posX=e.pageX;var el=this;while(el.offsetParent){posX-=el.offsetLeft;el=el.offsetParent}posY=e.pageY;el=this;while(el.offsetParent){posY-=el.offsetTop;el=el.offsetParent}var cols=Math.ceil(posX/8);var rows=Math.ceil(posY/8);cont.find(".tab-selection").css({width:cols*8,height:rows*8});cont.find(".cols").val(cols);cont.find(".rows").val(rows)}}).dblclick(function(){ins();cont.dialog("close")});cont.find(".cols, .rows").bind("change click blur",function(){var cols=Math.min(cont.find(".cols").val(),10);var rows=Math.min(cont.find(".rows").val(),10);cont.find(".tab-selection").css({width:cols*8,height:rows*8})});this.window({name:"table",title:this.lng.tableHeading,el:cont,func:ins})});$.texyla("setDefaults",{imageGalleryPath:"%texyla_base%/plugins/img-gallery/img-gallery.php",imageGalleryThumbsPath:"%texyla_base%/plugins/img-gallery/img-gallery-thumb.php?file=%var%",imageGalleryWindowDimensions:[370,370]});$.texyla("initPlugin",function(){this.options.imageGalleryPath=this.expand(this.options.imageGalleryPath)});$.texyla("addButton","img_gallery",function(){var _this=this;var el=$('<div><p class="wait">'+this.lng.wait+'</p></div>');this.window({name:"imageGallery",el:el,title:this.lng.imgGalleryHeading});$.getJSON(this.options.imageGalleryPath,{},function(data){var gallery=$('<div class="gallery"></div>').height(300);el.empty().append(gallery);function insImg(img){return function(){_this.texy.img(img.src,img.alt,'*',false);el.dialog("close")}}for(var i=0;i<data.images.length;i++){var img=data.images[i];var thumbSrc=_this.expand(_this.options.imageGalleryThumbsPath,img.thumbSrcVar);var div=$('<div class="gallery-item"><div class="image">'+'<img src="'+thumbSrc+'" width="'+img.thumbWidth+'" height="'+img.thumbHeight+'">'+'</div><div class="label">'+'<strong>'+img.name+'</strong><br>'+'<span class="alt">'+img.alt+'</span>'+'</div></div>').click(insImg(img));gallery.append(div)}})})})(jQuery);