var d;var toolbars;var savedPath;var testBtns=[];var defBtns={bold:{hint:'bold',img:'uie-bold',cmd:'bold'},italic:{hint:'kurziv',img:'uie-italic',cmd:'italic'},underline:{hint:'podcrtano',img:'uie-underline',cmd:'underline'},strikethrough:{hint:'precrtano',img:'uie-strikethrough',cmd:'strikethrough'},indent:{hint:'uvući tekst',img:'uie-indent',cmd:'indent'},outdent:{hint:'izvući tekst',img:'uie-outdent',cmd:'outdent'},superscript:{hint:'tekst iznad',img:'uie-superscript',cmd:'superscript'},subscript:{hint:'tekst ispod',img:'uie-subscript',cmd:'subscript'},olist:{hint:'nabrajanje',img:'uie-olist',cmd:'insertorderedlist'},ulist:{hint:'nabrajanje',img:'uie-ulist',cmd:'insertunorderedlist'},undo:{hint:'poništi prethodnu akciju',img:'uie-undo',cmd:'undo'},redo:{hint:'ponovi posljednju akciju',img:'uie-redo',cmd:'redo'},removeformat:{hint:'remove format',img:'uie-removeformat',cmd:'removeformat'},justifyleft:{hint:'poravnanje ulijevo',img:'uie-justifyleft',cmd:'justifyleft'},justifyright:{hint:'poravnanje udesno',img:'uie-justifyright',cmd:'justifyright'},justifycenter:{hint:'centrirano',img:'uie-justifycenter',cmd:'justifycenter'},justifyfull:{hint:'poravnanje s obje strane',img:'uie-justifyfull',cmd:'justifyfull'}};function disableSelection(target){$(target).attr('unselectable','on');if(typeof target.onselectstart!=="undefined"){target.onselectstart=function(){return false;};}
else if(typeof target.style.MozUserSelect!=="undefined"){target.style.MozUserSelect="none";}
else{target.onmousedown=function(){return false;};}}
function refreshSource(){$('#source').val(d.html());}
function refreshPreview(){$('#preview').html(d.html());}
function getElemName(el){if(el){if(el.localName){return el.localName;}
else if(el.nodeName){return el.nodeName;}
else if(el.tagName){return el.tagName;}
else{return null;}}
else{return null;}}
function getUserSelection(){var userSelection;if(window.getSelection){userSelection=window.getSelection();}
else if(document.selection){userSelection=document.selection.createRange();}
return userSelection;}
function getRange(){var userSelection=getUserSelection();if(userSelection.getRangeAt){return userSelection.getRangeAt(0);}
else if(document.selection.createRange){return document.selection.createRange();}
else{var range=document.createRange();range.setStart(userSelection.anchorNode,userSelection.anchorOffset);range.setEnd(userSelection.focusNode,userSelection.focusOffset);return range;}}
function getStartNode(){var range=getRange();var r;if(range.startContainer!==null){if((range.startContainer===range.endContainer)&&(getElemName(range.startContainer)!==null)){r=range.startContainer;}
else{r=range.startContainer.parentNode;}}
else{r=range.parentElement();}
if((r.nodeType===3)||(r.nodeType===4)){r=$(r).parent()[0];}
return r;}
function getPath(id){var root=d[0];var el=getStartNode();var elResult=null;var iLevel=1;while(!((el===root)||(el===null))){if(('path'+iLevel)===id){elResult=el;}
el=el.parentNode;iLevel++;}
if(el===null){elResult=null;}
return elResult;}
function getPathByID(id){var el,elFound;if((id==='path-1')||(!(elFound=$(getPath(id))).length)){el=d;}
else{el=elFound;}
return el;}
function markElementByPathID(id){var el=getPathByID(id);el.addClass('markedElement');}
function unmarkElementByPathID(id){var el=getPathByID(id);el.removeClass('markedElement');if(el.attr('class')===''){el.removeAttr('class');}}
function getPathTag(str,i){return'<span id="path'+i+'" class="path">'+str+'</span>';}
function refreshPath(){if(!options.showPath){return;}
var el=getStartNode();var strPath='';var strElName;var i,iLevel=1;if(el){while(!((el===d[0])||(el===null)||(getElemName(el)===null))){strElName=getElemName(el);if(el.classList){for(i=0;i<el.classList.length;i++){strElName=strElName+'.'+el.classList[i];}}
if(strPath){strPath=' > '+strPath;}
strPath=getPathTag(strElName,iLevel)+strPath;el=el.parentNode;iLevel++;}}
var strPathHTML;if((el===null)||(strPath.toString()==='')||(getElemName(el)===null)){strPathHTML=getPathTag('sve',-1);}
else{strPathHTML=getPathTag('sve',iLevel)+' > '+strPath;}
$(options.cntPath).html(strPathHTML);$(options.cntPath+' .path').each(function(){disableSelection(this);});$(options.cntPath+' .path').click(function(e){e.preventDefault();return false;});$(options.cntPath+' .path').mousedown(function(e){unmarkElementByPathID(this.id);selectPath(this.id);changed();e.preventDefault();return false;});$(options.cntPath+' .path').hover(function(){markElementByPathID(this.id);},function(){unmarkElementByPathID(this.id);});}
function addToolbar(panel){var tb=$('<span class="editor-toolbar"></span>');$(panel).append(tb);return tb;}
function addToolGroup(toolbar){var tg=$('<span class="editor-toolgroup"></span>');toolbar.append(tg);return tg;}
function addButton(toolgroup,strAID,imgClass,strCommand,strHint,info,bDefaultEnabled){var strID=options.cntToolbar.substr(1)+strAID;if(!bDefaultEnabled){bDefaultEnabled=true;}
var $b=$('<a></a>').attr('id',strID).attr('href','#').addClass('uie-button').addClass(!bDefaultEnabled?' uie-state-disabled':'').attr('alt',strCommand).attr('title',strHint).append($('<span></span>').addClass('uie-icon').addClass(imgClass));toolgroup.append($b);if(info){$('#'+strID).data('info',info);}
testBtns.push({id:strID});}
function removeToolbar(editor,iIndex){$(editor+' .editor-toolbar:eq('+iIndex+')').remove();}
function removeToolbar(editor,iToolbarIndex,iIndex){$(editor+' .editor-toolbar:eq('+iToolbarIndex+') .editor-toolgroup:eq('+iIndex+')').remove();}
function addDefinedBtn(tg,strID){var b=defBtns[strID];if(b){addButton(tg,'an-'+strID,b.img,b.cmd,b.hint);}}
function setupEditor(editor,options,toolbars){var iTB,tb,iTG,tg,b;if(toolbars){for(iTB=0;iTB<toolbars.length;iTB++){tb=addToolbar(options.cntToolbar);for(iTG=0;iTG<toolbars[iTB].length;iTG++){tg=addToolGroup(tb);for(b=0;b<toolbars[iTB][iTG].length;b++){addDefinedBtn(tg,toolbars[iTB][iTG][b]);}}}}}
function removeBtn(strID){var i,$b=$('#'+strID);if($b.length){$b.remove();for(i=0;i<=testBtns.length;i++){if(testBtns[i].id===strID){testBtns.splice(i,1);break;}}}}
function refreshToolbars(){if(!options.refreshToolbar){return;}
var i,le=options.cntToolbar.length-1;for(i=0;i<testBtns.length;i++){var $b=$('#'+testBtns[i].id);if($b.hasClass('uie-state-disabled')){continue;}
if(testBtns[i].id.substr(0,le)!==options.cntToolbar.substr(1)){continue;}
var strCmd=$b.attr('alt');try{if(document.queryCommandState(strCmd)){$('#'+testBtns[i].id).addClass('uie-state-active');}
else{$('#'+testBtns[i].id).removeClass('uie-state-active');}}
catch(e){}}}
function changed(){refreshSource();refreshPreview();refreshPath();refreshToolbars();}
function addFont(strFontName,strDescription){if(!strDescription){strDescription=strFontName;}
$('#fontlist').append('<div><span>'+strDescription+' - </span><span class="selectedText" style="font-family: '+strFontName+';"></span></div>');}
addFont('Palatino');addFont('Bookman Old Style');addFont('Algerian');function addTextStyle(strID,strClassName,strDescription,strTagName,imageClass,bEmpty,fn){if(!bEmpty){bEmpty=false;}
if(!strDescription){strDescription=strClassName;}
var d={id:strID,desc:strDescription,cmd:(bEmpty)?'cce':'cc',param:{tagname:strTagName,classname:strClassName,fncall:fn}};var tg=$(options.cntToolbar+' .editor-toolgroup:last');addButton(tg,strID,imageClass,'custom',strDescription,d);}
function customRemoveFormat(range,selText,param,paramInfo){if(!range.selectNodeContents){var b=range.getBookmark();range.pasteHTML(selText);range.moveToBookmark(b);range.select();}
else{var newElem=document.createElement(param.tagname);range.deleteContents();$(newElem).text(selText);range.insertNode(newElem);range.selectNodeContents(newElem);d.blur().focus();}}
function enableEditorActions(b){$(options.cntToolbar+' .uie-button').each(function(){var $this=$(this);if(($this.attr('alt')==='undo')||($this.attr('alt')==='redo')||($this.attr('title')==='html code')){return;}
if(b){$this.removeClass('uie-state-disabled');}
else{$this.addClass('uie-state-disabled');}});}
function customViewSource(range,selText,param,paramInfo){var b=$(options.cntToolbar+paramInfo.id);var bSourceCode=b.hasClass('uie-state-active');if(bSourceCode){d.html(d.text());d.css('font-family','inherited');b.removeClass('uie-state-active');enableEditorActions(true);options.showPath=savedPath;$(options.cntPath).show();refreshPath();}
else{d.text(d.html());d.css('font-family','Courier New');b.addClass('uie-state-active');enableEditorActions(false);savedPath=options.showPath;options.showPath=false;$(options.cntPath).hide();}}
function addParagraphStyle(strClassName,strDescription,cntTag){if(!strDescription){strDescription=strClassName;}
$('#paragraphstylelist').append('<'+cntTag+'><span>'+strDescription+'</span><span class="selectedText '+strClassName+'"></span></'+cntTag+'>');}
function customCommand(cmd,param,paramInfo){var range=getRange();var selText=getUserSelection();if(selText.toString){selText=selText.toString();}
else{selText=selText.text;}
if(param.fncall){param.fncall(range,selText,param,paramInfo);}
else if(!range.selectNodeContents){var attr=(param.classname)?' class="'+param.classname+'"':'';if((param.copy!==true)&&(range.deleteContents)){range.deleteContents();}
var tag;var uniqueID='uniqueInsert';if(cmd==='cce'){tag='<'+param.tagname+attr+' id="'+uniqueID+'" />';}
else{tag='<'+param.tagname+attr+' id="'+uniqueID+'">'+range.htmlText+"</"+param.tagname+">";}
range.pasteHTML(tag);range.moveToElementText($('#'+uniqueID)[0]);range.select();$('#'+uniqueID).removeAttr('id');}
else{var newElem=document.createElement(param.tagname);if(param.src){$(newElem).attr('src',param.src);}
if(param.classname){$(newElem).addClass(param.classname);}
try{if(param.copy===true){range.collapse(false);}
range.surroundContents(newElem);if(param.copy===true){$(newElem).text(selText);}}
catch(e){if(e instanceof RangeException){if(param.copy!==true){range.deleteContents();}
$(newElem).text(selText);range.collapse(true);range.insertNode(newElem);}}
range.selectNodeContents(newElem);d.blur().focus();if(cmd==='cce'){$(newElem).click(function(){$(this).css('margin-top',1+parseInt($(this).css('margin-top'),10)+'px');$(this).css('margin-bottom',1+parseInt($(this).css('margin-bottom'),10)+'px');$(this).css('margin-left',1+parseInt($(this).css('margin-left'),10)+'px');$(this).css('margin-right',1+parseInt($(this).css('margin-right'),10)+'px');});}
if(param.trim){$(newElem).text($(newElem).text().trim());}
if(param.pretext){$(newElem).prepend(param.pretext);}
if(param.posttext){$(newElem).append(param.posttext);}}
changed();}
function editorCommand(cmd,param){if((cmd==='cc')||(cmd==='cce')){customCommand(cmd,param);}
else{document.execCommand(cmd,false,param);}
changed();}
function initEditor(){if(!document.all){document.execCommand("styleWithCSS",false,false);}
d=$(editor);d.designMode='On';d.contentEditable=true;setupEditor(editor,options,toolbars);addTextStyle('customremoveformat','','custom remove format','span','uie-removeformat',false,customRemoveFormat);addToolGroup(addToolbar(options.cntToolbar));addTextStyle('s1','tehnoorange','Tehnobeton narančasta','span','uie-tehnoorange');addTextStyle('s2','tehnogray','Tehnobeton siva','span','uie-tehnogray');addTextStyle('s3','tehnogeneral','osnovni tekst','span','uie-tehnogeneral');addTextStyle('s4','tehnohilight','naglašeni tekst','span','uie-tehnohilight');addTextStyle('s5','tehnostitle','osnovni međunaslov','div','uie-tehnostitle');addTextStyle('s6','tehnostitlehi','povećani međunaslov','div','uie-tehnostitlehi');addTextStyle('s7','sourcecode','html code','span','uie-sourcecode',false,customViewSource);$(options.cntToolbar+' .uie-icon, '+options.cntToolbar+' .uie-button, '+options.cntToolbar+' .path, '+options.cntToolbar+' .toolbar-after').each(function(){disableSelection(this);});$(options.cntToolbar+' .editor-toolbar').each(function(){$(this).append($('<a href="#"><span>:</span></a>').addClass('toolbar-after'));});d.keyup(changed);d.mouseup(changed);$(options.cntToolbar+' .toolbar-after').mousedown(function(e){e.preventDefault();return false;});$(options.cntToolbar+' a').click(function(e){e.preventDefault();return false;});$(options.cntToolbar+' .uie-button').mousedown(function(e){e.preventDefault();var a=$(this);if(a.hasClass('uie-state-disabled')){return false;}
var cmd=a.attr('alt');if(cmd==='para'){a.toggleClass('uie-state-active');$('p',d).toggleClass('para');}
else if(cmd==='custom'){var p=a.data('info');customCommand(p.cmd,p.param,p);}
else{editorCommand(cmd,null);}
return false;});}
function hideToolbar(){if(options.hide){$(options.cntToolbar).hide(options.hide);}}
function hidePath(){if(!options.showPath){return;}
if(options.hide){$(options.cntPath).hide(options.hide);}}
function showToolbar(){if(options.show){$(options.cntToolbar).show(options.show);}}
function showPath(){if(!options.showPath){return;}
if(options.show){$(options.cntPath).show(options.show);}}
function activateEditor(){showToolbar();showPath();changed();}
function deactivateEditor(){d.blur();hideToolbar();hidePath();}
$('#refreshSource').click(function(){refreshSource();});$('#updateSource').click(function(){d.html($('#source').val());refreshPreview();});$('#refreshPreview').click(function(){refreshPreview();});function adoptEndPoint(textRange,container,bStart){var offset=bStart?0:3,textOffset=0;var anchorNode=true?container:container.childNodes[offset];var anchorParent=true?container.parentNode:container;if(container.nodeType===3||container.nodeType===4){textOffset=offset;}
var cursorNode=document.createElement('a');anchorParent.insertBefore(cursorNode,anchorNode);var cursor=document.body.createTextRange();cursor.moveToElementText(cursorNode);cursorNode.parentNode.removeChild(cursorNode);textRange.setEndPoint(bStart?'StartToStart':'EndToStart',cursor);textRange[bStart?'moveStart':'moveEnd']('character',textOffset);}
function selectElem(el){var range=getRange();if(range.selectNodeContents){range.selectNodeContents(el);}
else{range=document.selection.createRange();adoptEndPoint(range,el,true);adoptEndPoint(range,el,false);range.moveEnd('character',el.innerText.length);range.select();}}
function selectPath(id){var el=getPathByID(id)[0];selectElem(el);}
$('#refreshPath').click(function(){refreshPath();});

