http://git-wip-us.apache.org/repos/asf/stratos/blob/ee5e9639/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_functions.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_functions.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_functions.js deleted file mode 100644 index 984d4c6..0000000 --- a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_functions.js +++ /dev/null @@ -1,1203 +0,0 @@ - //replace tabulation by the good number of white spaces - EditArea.prototype.replace_tab= function(text){ - return text.replace(/((\n?)([^\t\n]*)\t)/gi, editArea.smartTab); // slower than simple replace... - }; - - // call by the replace_tab function - EditArea.prototype.smartTab= function(){ - val=" "; - return EditArea.prototype.smartTab.arguments[2] + EditArea.prototype.smartTab.arguments[3] + val.substr(0, editArea.tab_nb_char - (EditArea.prototype.smartTab.arguments[3].length)%editArea.tab_nb_char); - }; - - EditArea.prototype.show_waiting_screen= function(){ - width = this.editor_area.offsetWidth; - height = this.editor_area.offsetHeight; - if( !(this.isIE && this.isIE<6) ) - { - width -= 2; - height -= 2; - } - this.processing_screen.style.display= "block"; - this.processing_screen.style.width = width+"px"; - this.processing_screen.style.height = height+"px"; - this.waiting_screen_displayed = true; - }; - - EditArea.prototype.hide_waiting_screen= function(){ - this.processing_screen.style.display="none"; - this.waiting_screen_displayed= false; - }; - - EditArea.prototype.add_style= function(styles){ - if(styles.length>0){ - newcss = document.createElement("style"); - newcss.type="text/css"; - newcss.media="all"; - if(newcss.styleSheet){ // IE - newcss.styleSheet.cssText = styles; - } else { // W3C - newcss.appendChild(document.createTextNode(styles)); - } - document.getElementsByTagName("head")[0].appendChild(newcss); - } - }; - - EditArea.prototype.set_font= function(family, size){ - var t=this, a=this.textarea, s=this.settings, elem_font, i, elem; - // list all elements concerned by font changes - var elems= ["textarea", "content_highlight", "cursor_pos", "end_bracket", "selection_field", "selection_field_text", "line_number"]; - - if(family && family!="") - s["font_family"]= family; - if(size && size>0) - s["font_size"] = size; - if( t.isOpera && t.isOpera < 9.6 ) // opera<9.6 can't manage non monospace font - s['font_family']="monospace"; - - // update the select tag - if( elem_font = _$("area_font_size") ) - { - for( i = 0; i < elem_font.length; i++ ) - { - if( elem_font.options[i].value && elem_font.options[i].value == s["font_size"] ) - elem_font.options[i].selected=true; - } - } - - /* - * somethimes firefox has rendering mistake with non-monospace font for text width in textarea vs in div for changing font size (eg: verdana change between 11pt to 12pt) - * => looks like a browser internal random bug as text width can change while content_highlight is updated - * we'll check if the font-size produce the same text width inside textarea and div and if not, we'll increment the font-size - * - * This is an ugly fix - */ - if( t.isFirefox ) - { - var nbTry = 3; - do { - var div1 = document.createElement( 'div' ), text1 = document.createElement( 'textarea' ); - var styles = { - width: '40px', - overflow: 'scroll', - zIndex: 50, - visibility: 'hidden', - fontFamily: s["font_family"], - fontSize: s["font_size"]+"pt", - lineHeight: t.lineHeight+"px", - padding: '0', - margin: '0', - border: 'none', - whiteSpace: 'nowrap' - }; - var diff, changed = false; - for( i in styles ) - { - div1.style[ i ] = styles[i]; - text1.style[ i ] = styles[i]; - } - // no wrap for this text - text1.wrap = 'off'; - text1.setAttribute('wrap', 'off'); - t.container.appendChild( div1 ); - t.container.appendChild( text1 ); - // try to make FF to bug - div1.innerHTML = text1.value = 'azertyuiopqsdfghjklm'; - div1.innerHTML = text1.value = text1.value+'wxcvbn^p*ù$!:;,,'; - diff = text1.scrollWidth - div1.scrollWidth; - - // firefox return here a diff of 1 px between equals scrollWidth (can't explain) - if( Math.abs( diff ) >= 2 ) - { - s["font_size"]++; - changed = true; - } - t.container.removeChild( div1 ); - t.container.removeChild( text1 ); - nbTry--; - }while( changed && nbTry > 0 ); - } - - - // calc line height - elem = t.test_font_size; - elem.style.fontFamily = ""+s["font_family"]; - elem.style.fontSize = s["font_size"]+"pt"; - elem.innerHTML = "0"; - t.lineHeight = elem.offsetHeight; - - // update font for all concerned elements - for( i=0; i<elems.length; i++) - { - elem = _$(elems[i]); - elem.style.fontFamily = s["font_family"]; - elem.style.fontSize = s["font_size"]+"pt"; - elem.style.lineHeight = t.lineHeight+"px"; - } - // define a css for <pre> tags - t.add_style("pre{font-family:"+s["font_family"]+"}"); - - // old opera and IE>=8 doesn't update font changes to the textarea - if( ( t.isOpera && t.isOpera < 9.6 ) || t.isIE >= 8 ) - { - var parNod = a.parentNode, nxtSib = a.nextSibling, start= a.selectionStart, end= a.selectionEnd; - parNod.removeChild(a); - parNod.insertBefore(a, nxtSib); - t.area_select(start, end-start); - } - - // force update of selection field - this.focus(); - this.update_size(); - this.check_line_selection(); - }; - - EditArea.prototype.change_font_size= function(){ - var size=_$("area_font_size").value; - if(size>0) - this.set_font("", size); - }; - - - EditArea.prototype.open_inline_popup= function(popup_id){ - this.close_all_inline_popup(); - var popup= _$(popup_id); - var editor= _$("editor"); - - // search matching icon - for(var i=0; i<this.inlinePopup.length; i++){ - if(this.inlinePopup[i]["popup_id"]==popup_id){ - var icon= _$(this.inlinePopup[i]["icon_id"]); - if(icon){ - this.switchClassSticky(icon, 'editAreaButtonSelected', true); - break; - } - } - } - // check size - popup.style.height="auto"; - popup.style.overflow= "visible"; - - if(document.body.offsetHeight< popup.offsetHeight){ - popup.style.height= (document.body.offsetHeight-10)+"px"; - popup.style.overflow= "auto"; - } - - if(!popup.positionned){ - var new_left= editor.offsetWidth /2 - popup.offsetWidth /2; - var new_top= editor.offsetHeight /2 - popup.offsetHeight /2; - //var new_top= area.offsetHeight /2 - popup.offsetHeight /2; - //var new_left= area.offsetWidth /2 - popup.offsetWidth /2; - //alert("new_top: ("+new_top+") = calculeOffsetTop(area) ("+calculeOffsetTop(area)+") + area.offsetHeight /2("+ area.offsetHeight /2+") - popup.offsetHeight /2("+popup.offsetHeight /2+") - scrollTop: "+document.body.scrollTop); - popup.style.left= new_left+"px"; - popup.style.top= new_top+"px"; - popup.positionned=true; - } - popup.style.visibility="visible"; - - //popup.style.display="block"; - }; - - EditArea.prototype.close_inline_popup= function(popup_id){ - var popup= _$(popup_id); - // search matching icon - for(var i=0; i<this.inlinePopup.length; i++){ - if(this.inlinePopup[i]["popup_id"]==popup_id){ - var icon= _$(this.inlinePopup[i]["icon_id"]); - if(icon){ - this.switchClassSticky(icon, 'editAreaButtonNormal', false); - break; - } - } - } - - popup.style.visibility="hidden"; - }; - - EditArea.prototype.close_all_inline_popup= function(e){ - for(var i=0; i<this.inlinePopup.length; i++){ - this.close_inline_popup(this.inlinePopup[i]["popup_id"]); - } - this.textarea.focus(); - }; - - EditArea.prototype.show_help= function(){ - - this.open_inline_popup("edit_area_help"); - - }; - - EditArea.prototype.new_document= function(){ - this.textarea.value=""; - this.area_select(0,0); - }; - - EditArea.prototype.get_all_toolbar_height= function(){ - var area= _$("editor"); - var results= parent.getChildren(area, "div", "class", "area_toolbar", "all", "0"); // search only direct children - //results= results.concat(getChildren(area, "table", "class", "area_toolbar", "all", "0")); - var height=0; - for(var i=0; i<results.length; i++){ - height+= results[i].offsetHeight; - } - //alert("toolbar height: "+height); - return height; - }; - - EditArea.prototype.go_to_line= function(line){ - if(!line) - { - var icon= _$("go_to_line"); - if(icon != null){ - this.restoreClass(icon); - this.switchClassSticky(icon, 'editAreaButtonSelected', true); - } - - line= prompt(this.get_translation("go_to_line_prompt")); - if(icon != null) - this.switchClassSticky(icon, 'editAreaButtonNormal', false); - } - if(line && line!=null && line.search(/^[0-9]+$/)!=-1){ - var start=0; - var lines= this.textarea.value.split("\n"); - if(line > lines.length) - start= this.textarea.value.length; - else{ - for(var i=0; i<Math.min(line-1, lines.length); i++) - start+= lines[i].length + 1; - } - this.area_select(start, 0); - } - - - }; - - - EditArea.prototype.change_smooth_selection_mode= function(setTo){ - //alert("setTo: "+setTo); - if(this.do_highlight) - return; - - if(setTo != null){ - if(setTo === false) - this.smooth_selection=true; - else - this.smooth_selection=false; - } - var icon= _$("change_smooth_selection"); - this.textarea.focus(); - if(this.smooth_selection===true){ - //setAttribute(icon, "class", getAttribute(icon, "class").replace(/ selected/g, "") ); - /*setAttribute(icon, "oldClassName", "editAreaButtonNormal" ); - setAttribute(icon, "className", "editAreaButtonNormal" );*/ - //this.restoreClass(icon); - //this.restoreAndSwitchClass(icon,'editAreaButtonNormal'); - this.switchClassSticky(icon, 'editAreaButtonNormal', false); - - this.smooth_selection=false; - this.selection_field.style.display= "none"; - _$("cursor_pos").style.display= "none"; - _$("end_bracket").style.display= "none"; - }else{ - //setAttribute(icon, "class", getAttribute(icon, "class") + " selected"); - //this.switchClass(icon,'editAreaButtonSelected'); - this.switchClassSticky(icon, 'editAreaButtonSelected', false); - this.smooth_selection=true; - this.selection_field.style.display= "block"; - _$("cursor_pos").style.display= "block"; - _$("end_bracket").style.display= "block"; - } - }; - - // the auto scroll of the textarea has some lacks when it have to show cursor in the visible area when the textarea size change - // show specifiy whereas it is the "top" or "bottom" of the selection that is showned - EditArea.prototype.scroll_to_view= function(show){ - var zone, lineElem; - if(!this.smooth_selection) - return; - zone= _$("result"); - - // manage height scroll - var cursor_pos_top= _$("cursor_pos").cursor_top; - if(show=="bottom") - { - //cursor_pos_top+= (this.last_selection["line_nb"]-1)* this.lineHeight; - cursor_pos_top+= this.getLinePosTop( this.last_selection['line_start'] + this.last_selection['line_nb'] - 1 ); - } - - var max_height_visible= zone.clientHeight + zone.scrollTop; - var miss_top = cursor_pos_top + this.lineHeight - max_height_visible; - if(miss_top>0){ - //alert(miss_top); - zone.scrollTop= zone.scrollTop + miss_top; - }else if( zone.scrollTop > cursor_pos_top){ - // when erase all the content -> does'nt scroll back to the top - //alert("else: "+cursor_pos_top); - zone.scrollTop= cursor_pos_top; - } - - // manage left scroll - //var cursor_pos_left= parseInt(_$("cursor_pos").style.left.replace("px","")); - var cursor_pos_left= _$("cursor_pos").cursor_left; - var max_width_visible= zone.clientWidth + zone.scrollLeft; - var miss_left= cursor_pos_left + 10 - max_width_visible; - if(miss_left>0){ - zone.scrollLeft= zone.scrollLeft + miss_left + 50; - }else if( zone.scrollLeft > cursor_pos_left){ - zone.scrollLeft= cursor_pos_left ; - }else if( zone.scrollLeft == 45){ - // show the line numbers if textarea align to it's left - zone.scrollLeft=0; - } - }; - - EditArea.prototype.check_undo= function(only_once){ - if(!editAreas[this.id]) - return false; - if(this.textareaFocused && editAreas[this.id]["displayed"]==true){ - var text=this.textarea.value; - if(this.previous.length<=1) - this.switchClassSticky(_$("undo"), 'editAreaButtonDisabled', true); - - if(!this.previous[this.previous.length-1] || this.previous[this.previous.length-1]["text"] != text){ - this.previous.push({"text": text, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd}); - if(this.previous.length > this.settings["max_undo"]+1) - this.previous.shift(); - - } - if(this.previous.length >= 2) - this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); - } - - if(!only_once) - setTimeout("editArea.check_undo()", 3000); - }; - - EditArea.prototype.undo= function(){ - //alert("undo"+this.previous.length); - if(this.previous.length > 0) - { - this.getIESelection(); - // var pos_cursor=this.textarea.selectionStart; - this.next.push( { "text": this.textarea.value, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd } ); - var prev= this.previous.pop(); - if( prev["text"] == this.textarea.value && this.previous.length > 0 ) - prev =this.previous.pop(); - this.textarea.value = prev["text"]; - this.last_undo = prev["text"]; - this.area_select(prev["selStart"], prev["selEnd"]-prev["selStart"]); - this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); - this.resync_highlight(true); - //alert("undo"+this.previous.length); - this.check_file_changes(); - } - }; - - EditArea.prototype.redo= function(){ - if(this.next.length > 0) - { - /*this.getIESelection();*/ - //var pos_cursor=this.textarea.selectionStart; - var next= this.next.pop(); - this.previous.push(next); - this.textarea.value= next["text"]; - this.last_undo= next["text"]; - this.area_select(next["selStart"], next["selEnd"]-next["selStart"]); - this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); - this.resync_highlight(true); - this.check_file_changes(); - } - if( this.next.length == 0) - this.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); - }; - - EditArea.prototype.check_redo= function(){ - if(editArea.next.length == 0 || editArea.textarea.value!=editArea.last_undo){ - editArea.next= []; // undo the ability to use "redo" button - editArea.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); - } - else - { - this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); - } - }; - - - // functions that manage icons roll over, disabled, etc... - EditArea.prototype.switchClass = function(element, class_name, lock_state) { - var lockChanged = false; - - if (typeof(lock_state) != "undefined" && element != null) { - element.classLock = lock_state; - lockChanged = true; - } - - if (element != null && (lockChanged || !element.classLock)) { - element.oldClassName = element.className; - element.className = class_name; - } - }; - - EditArea.prototype.restoreAndSwitchClass = function(element, class_name) { - if (element != null && !element.classLock) { - this.restoreClass(element); - this.switchClass(element, class_name); - } - }; - - EditArea.prototype.restoreClass = function(element) { - if (element != null && element.oldClassName && !element.classLock) { - element.className = element.oldClassName; - element.oldClassName = null; - } - }; - - EditArea.prototype.setClassLock = function(element, lock_state) { - if (element != null) - element.classLock = lock_state; - }; - - EditArea.prototype.switchClassSticky = function(element, class_name, lock_state) { - var lockChanged = false; - if (typeof(lock_state) != "undefined" && element != null) { - element.classLock = lock_state; - lockChanged = true; - } - - if (element != null && (lockChanged || !element.classLock)) { - element.className = class_name; - element.oldClassName = class_name; - } - }; - - //make the "page up" and "page down" buttons works correctly - EditArea.prototype.scroll_page= function(params){ - var dir= params["dir"], shift_pressed= params["shift"]; - var lines= this.textarea.value.split("\n"); - var new_pos=0, length=0, char_left=0, line_nb=0, curLine=0; - var toScrollAmount = _$("result").clientHeight -30; - var nbLineToScroll = 0, diff= 0; - - if(dir=="up"){ - nbLineToScroll = Math.ceil( toScrollAmount / this.lineHeight ); - - // fix number of line to scroll - for( i = this.last_selection["line_start"]; i - diff > this.last_selection["line_start"] - nbLineToScroll ; i-- ) - { - if( elem = _$('line_'+ i) ) - { - diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); - } - } - nbLineToScroll -= diff; - - if(this.last_selection["selec_direction"]=="up"){ - for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]-nbLineToScroll, lines.length); line_nb++){ - new_pos+= lines[line_nb].length + 1; - } - char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); - if(shift_pressed) - length=this.last_selection["selectionEnd"]-new_pos-char_left; - this.area_select(new_pos+char_left, length); - view="top"; - }else{ - view="bottom"; - for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-1-nbLineToScroll, lines.length); line_nb++){ - new_pos+= lines[line_nb].length + 1; - } - char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); - if(shift_pressed){ - //length=this.last_selection["selectionEnd"]-new_pos-char_left; - start= Math.min(this.last_selection["selectionStart"], new_pos+char_left); - length= Math.max(new_pos+char_left, this.last_selection["selectionStart"] )- start ; - if(new_pos+char_left < this.last_selection["selectionStart"]) - view="top"; - }else - start=new_pos+char_left; - this.area_select(start, length); - - } - } - else - { - var nbLineToScroll= Math.floor( toScrollAmount / this.lineHeight ); - // fix number of line to scroll - for( i = this.last_selection["line_start"]; i + diff < this.last_selection["line_start"] + nbLineToScroll ; i++ ) - { - if( elem = _$('line_'+ i) ) - { - diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); - } - } - nbLineToScroll -= diff; - - if(this.last_selection["selec_direction"]=="down"){ - view="bottom"; - for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-2+nbLineToScroll, lines.length); line_nb++){ - if(line_nb==this.last_selection["line_start"]-1) - char_left= this.last_selection["selectionStart"] -new_pos; - new_pos+= lines[line_nb].length + 1; - - } - if(shift_pressed){ - length=Math.abs(this.last_selection["selectionStart"]-new_pos); - length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]); - //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); - this.area_select(Math.min(this.last_selection["selectionStart"], new_pos), length); - }else{ - this.area_select(new_pos+char_left, 0); - } - - }else{ - view="top"; - for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+nbLineToScroll-1, lines.length, lines.length); line_nb++){ - if(line_nb==this.last_selection["line_start"]-1) - char_left= this.last_selection["selectionStart"] -new_pos; - new_pos+= lines[line_nb].length + 1; - } - if(shift_pressed){ - length=Math.abs(this.last_selection["selectionEnd"]-new_pos-char_left); - length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"])- char_left-1; - //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); - this.area_select(Math.min(this.last_selection["selectionEnd"], new_pos+char_left), length); - if(new_pos+char_left > this.last_selection["selectionEnd"]) - view="bottom"; - }else{ - this.area_select(new_pos+char_left, 0); - } - - } - } - //console.log( new_pos, char_left, length, nbLineToScroll, toScrollAmount, _$("result").clientHeigh ); - this.check_line_selection(); - this.scroll_to_view(view); - }; - - EditArea.prototype.start_resize= function(e){ - parent.editAreaLoader.resize["id"] = editArea.id; - parent.editAreaLoader.resize["start_x"] = (e)? e.pageX : event.x + document.body.scrollLeft; - parent.editAreaLoader.resize["start_y"] = (e)? e.pageY : event.y + document.body.scrollTop; - if(editArea.isIE) - { - editArea.textarea.focus(); - editArea.getIESelection(); - } - parent.editAreaLoader.resize["selectionStart"] = editArea.textarea.selectionStart; - parent.editAreaLoader.resize["selectionEnd"] = editArea.textarea.selectionEnd; - parent.editAreaLoader.start_resize_area(); - }; - - EditArea.prototype.toggle_full_screen= function(to){ - var t=this, p=parent, a=t.textarea, html, frame, selStart, selEnd, old, icon; - if(typeof(to)=="undefined") - to= !t.fullscreen['isFull']; - old = t.fullscreen['isFull']; - t.fullscreen['isFull']= to; - icon = _$("fullscreen"); - selStart = t.textarea.selectionStart; - selEnd = t.textarea.selectionEnd; - html = p.document.getElementsByTagName("html")[0]; - frame = p.document.getElementById("frame_"+t.id); - - if(to && to!=old) - { // toogle on fullscreen - - t.fullscreen['old_overflow'] = p.get_css_property(html, "overflow"); - t.fullscreen['old_height'] = p.get_css_property(html, "height"); - t.fullscreen['old_width'] = p.get_css_property(html, "width"); - t.fullscreen['old_scrollTop'] = html.scrollTop; - t.fullscreen['old_scrollLeft'] = html.scrollLeft; - t.fullscreen['old_zIndex'] = p.get_css_property(frame, "z-index"); - if(t.isOpera){ - html.style.height = "100%"; - html.style.width = "100%"; - } - html.style.overflow = "hidden"; - html.scrollTop = 0; - html.scrollLeft = 0; - - frame.style.position = "absolute"; - frame.style.width = html.clientWidth+"px"; - frame.style.height = html.clientHeight+"px"; - frame.style.display = "block"; - frame.style.zIndex = "999999"; - frame.style.top = "0px"; - frame.style.left = "0px"; - - // if the iframe was in a div with position absolute, the top and left are the one of the div, - // so I fix it by seeing at witch position the iframe start and correcting it - frame.style.top = "-"+p.calculeOffsetTop(frame)+"px"; - frame.style.left = "-"+p.calculeOffsetLeft(frame)+"px"; - - // parent.editAreaLoader.execCommand(t.id, "update_size();"); - // var body=parent.document.getElementsByTagName("body")[0]; - // body.appendChild(frame); - - t.switchClassSticky(icon, 'editAreaButtonSelected', false); - t.fullscreen['allow_resize']= t.resize_allowed; - t.allow_resize(false); - - //t.area_select(selStart, selEnd-selStart); - - - // opera can't manage to do a direct size update - if(t.isFirefox){ - p.editAreaLoader.execCommand(t.id, "update_size();"); - t.area_select(selStart, selEnd-selStart); - t.scroll_to_view(); - t.focus(); - }else{ - setTimeout("p.editAreaLoader.execCommand('"+ t.id +"', 'update_size();');editArea.focus();", 10); - } - - - } - else if(to!=old) - { // toogle off fullscreen - frame.style.position="static"; - frame.style.zIndex= t.fullscreen['old_zIndex']; - - if(t.isOpera) - { - html.style.height = "auto"; - html.style.width = "auto"; - html.style.overflow = "auto"; - } - else if(t.isIE && p!=top) - { // IE doesn't manage html overflow in frames like in normal page... - html.style.overflow = "auto"; - } - else - { - html.style.overflow = t.fullscreen['old_overflow']; - } - html.scrollTop = t.fullscreen['old_scrollTop']; - html.scrollLeft = t.fullscreen['old_scrollLeft']; - - p.editAreaLoader.hide(t.id); - p.editAreaLoader.show(t.id); - - t.switchClassSticky(icon, 'editAreaButtonNormal', false); - if(t.fullscreen['allow_resize']) - t.allow_resize(t.fullscreen['allow_resize']); - if(t.isFirefox){ - t.area_select(selStart, selEnd-selStart); - setTimeout("editArea.scroll_to_view();", 10); - } - - //p.editAreaLoader.remove_event(p.window, "resize", editArea.update_size); - } - - }; - - EditArea.prototype.allow_resize= function(allow){ - var resize= _$("resize_area"); - if(allow){ - - resize.style.visibility="visible"; - parent.editAreaLoader.add_event(resize, "mouseup", editArea.start_resize); - }else{ - resize.style.visibility="hidden"; - parent.editAreaLoader.remove_event(resize, "mouseup", editArea.start_resize); - } - this.resize_allowed= allow; - }; - - - EditArea.prototype.change_syntax= function(new_syntax, is_waiting){ - // alert("cahnge to "+new_syntax); - // the syntax is the same - if(new_syntax==this.settings['syntax']) - return true; - - // check that the syntax is one allowed - var founded= false; - for(var i=0; i<this.syntax_list.length; i++) - { - if(this.syntax_list[i]==new_syntax) - founded= true; - } - - if(founded==true) - { - // the reg syntax file is not loaded - if(!parent.editAreaLoader.load_syntax[new_syntax]) - { - // load the syntax file and wait for file loading - if(!is_waiting) - parent.editAreaLoader.load_script(parent.editAreaLoader.baseURL + "reg_syntax/" + new_syntax + ".js"); - setTimeout("editArea.change_syntax('"+ new_syntax +"', true);", 100); - this.show_waiting_screen(); - } - else - { - if(!this.allready_used_syntax[new_syntax]) - { // the syntax has still not been used - // rebuild syntax definition for new languages - parent.editAreaLoader.init_syntax_regexp(); - // add style to the new list - this.add_style(parent.editAreaLoader.syntax[new_syntax]["styles"]); - this.allready_used_syntax[new_syntax]=true; - } - // be sure that the select option is correctly updated - var sel= _$("syntax_selection"); - if(sel && sel.value!=new_syntax) - { - for(var i=0; i<sel.length; i++){ - if(sel.options[i].value && sel.options[i].value == new_syntax) - sel.options[i].selected=true; - } - } - - /* if(this.settings['syntax'].length==0) - { - this.switchClassSticky(_$("highlight"), 'editAreaButtonNormal', false); - this.switchClassSticky(_$("reset_highlight"), 'editAreaButtonNormal', false); - this.change_highlight(true); - } - */ - this.settings['syntax']= new_syntax; - this.resync_highlight(true); - this.hide_waiting_screen(); - return true; - } - } - return false; - }; - - - // check if the file has changed - EditArea.prototype.set_editable= function(is_editable){ - if(is_editable) - { - document.body.className= ""; - this.textarea.readOnly= false; - this.is_editable= true; - } - else - { - document.body.className= "non_editable"; - this.textarea.readOnly= true; - this.is_editable= false; - } - - if(editAreas[this.id]["displayed"]==true) - this.update_size(); - }; - - /***** Wrap mode *****/ - - // toggling function for set_wrap_mode - EditArea.prototype.toggle_word_wrap= function(){ - this.set_word_wrap( !this.settings['word_wrap'] ); - }; - - - // open a new tab for the given file - EditArea.prototype.set_word_wrap= function(to){ - var t=this, a= t.textarea; - - if( t.isOpera ) - { - this.settings['word_wrap']= false; - t.switchClassSticky( _$("word_wrap"), 'editAreaButtonDisabled', true ); - return false; - } - - if( to ) - { - wrap_mode = 'soft'; - this.container.className+= ' word_wrap'; - this.container.style.width=""; - this.content_highlight.style.width=""; - a.style.width="100%"; - if( t.isIE && t.isIE < 7 ) // IE 6 count 50 px too much - { - a.style.width = ( a.offsetWidth-5 )+"px"; - } - - t.switchClassSticky( _$("word_wrap"), 'editAreaButtonSelected', false ); - } - else - { - wrap_mode = 'off'; - this.container.className = this.container.className.replace(/word_wrap/g, ''); - t.switchClassSticky( _$("word_wrap"), 'editAreaButtonNormal', true ); - } - this.textarea.previous_scrollWidth = ''; - this.textarea.previous_scrollHeight = ''; - - a.wrap= wrap_mode; - a.setAttribute('wrap', wrap_mode); - // only IE can change wrap mode on the fly without element reloading - if(!this.isIE) - { - var start=a.selectionStart, end= a.selectionEnd; - var parNod = a.parentNode, nxtSib = a.nextSibling; - parNod.removeChild(a); - parNod.insertBefore(a, nxtSib); - this.area_select(start, end-start); - } - // reset some optimisation - this.settings['word_wrap'] = to; - this.focus(); - this.update_size(); - this.check_line_selection(); - }; - /***** tabbed files managing functions *****/ - - // open a new tab for the given file - EditArea.prototype.open_file= function(settings){ - - if(settings['id']!="undefined") - { - var id= settings['id']; - // create a new file object with defautl values - var new_file= {}; - new_file['id'] = id; - new_file['title'] = id; - new_file['text'] = ""; - new_file['last_selection'] = ""; - new_file['last_text_to_highlight'] = ""; - new_file['last_hightlighted_text'] = ""; - new_file['previous'] = []; - new_file['next'] = []; - new_file['last_undo'] = ""; - new_file['smooth_selection'] = this.settings['smooth_selection']; - new_file['do_highlight']= this.settings['start_highlight']; - new_file['syntax'] = this.settings['syntax']; - new_file['scroll_top'] = 0; - new_file['scroll_left'] = 0; - new_file['selection_start']= 0; - new_file['selection_end']= 0; - new_file['edited'] = false; - new_file['font_size'] = this.settings["font_size"]; - new_file['font_family'] = this.settings["font_family"]; - new_file['word_wrap'] = this.settings["word_wrap"]; - new_file['toolbar'] = {'links':{}, 'selects': {}}; - new_file['compare_edited_text']= new_file['text']; - - - this.files[id]= new_file; - this.update_file(id, settings); - this.files[id]['compare_edited_text']= this.files[id]['text']; - - - var html_id= 'tab_file_'+encodeURIComponent(id); - this.filesIdAssoc[html_id]= id; - this.files[id]['html_id']= html_id; - - if(!_$(this.files[id]['html_id']) && id!="") - { - // be sure the tab browsing area is displayed - this.tab_browsing_area.style.display= "block"; - var elem= document.createElement('li'); - elem.id= this.files[id]['html_id']; - var close= "<img src=\""+ parent.editAreaLoader.baseURL +"images/close.gif\" title=\""+ this.get_translation('close_tab', 'word') +"\" onclick=\"editArea.execCommand('close_file', editArea.filesIdAssoc['"+ html_id +"']);return false;\" class=\"hidden\" onmouseover=\"this.className=''\" onmouseout=\"this.className='hidden'\" />"; - elem.innerHTML= "<a onclick=\"javascript:editArea.execCommand('switch_to_file', editArea.filesIdAssoc['"+ html_id +"']);\" selec=\"none\"><b><span><strong class=\"edited\">*</strong>"+ this.files[id]['title'] + close +"</span></b></a>"; - _$('tab_browsing_list').appendChild(elem); - var elem= document.createElement('text'); - this.update_size(); - } - - // open file callback (for plugin) - if(id!="") - this.execCommand('file_open', this.files[id]); - - this.switch_to_file(id, true); - return true; - } - else - return false; - }; - - // close the given file - EditArea.prototype.close_file= function(id){ - if(this.files[id]) - { - this.save_file(id); - - // close file callback - if(this.execCommand('file_close', this.files[id])!==false) - { - // remove the tab in the toolbar - var li= _$(this.files[id]['html_id']); - li.parentNode.removeChild(li); - // select a new file - if(id== this.curr_file) - { - var next_file= ""; - var is_next= false; - for(var i in this.files) - { - if( is_next ) - { - next_file = i; - break; - } - else if( i == id ) - is_next = true; - else - next_file = i; - } - // display the next file - this.switch_to_file(next_file); - } - // clear datas - delete (this.files[id]); - this.update_size(); - } - } - }; - - // backup current file datas - EditArea.prototype.save_file= function(id){ - var t= this, save, a_links, a_selects, save_butt, img, i; - if(t.files[id]) - { - var save= t.files[id]; - save['last_selection'] = t.last_selection; - save['last_text_to_highlight'] = t.last_text_to_highlight; - save['last_hightlighted_text'] = t.last_hightlighted_text; - save['previous'] = t.previous; - save['next'] = t.next; - save['last_undo'] = t.last_undo; - save['smooth_selection'] = t.smooth_selection; - save['do_highlight'] = t.do_highlight; - save['syntax'] = t.settings['syntax']; - save['text'] = t.textarea.value; - save['scroll_top'] = t.result.scrollTop; - save['scroll_left'] = t.result.scrollLeft; - save['selection_start'] = t.last_selection["selectionStart"]; - save['selection_end'] = t.last_selection["selectionEnd"]; - save['font_size'] = t.settings["font_size"]; - save['font_family'] = t.settings["font_family"]; - save['word_wrap'] = t.settings["word_wrap"]; - save['toolbar'] = {'links':{}, 'selects': {}}; - - // save toolbar buttons state for fileSpecific buttons - a_links= _$("toolbar_1").getElementsByTagName("a"); - for( i=0; i<a_links.length; i++ ) - { - if( a_links[i].getAttribute('fileSpecific') == 'yes' ) - { - save_butt = {}; - img = a_links[i].getElementsByTagName('img')[0]; - save_butt['classLock'] = img.classLock; - save_butt['className'] = img.className; - save_butt['oldClassName'] = img.oldClassName; - - save['toolbar']['links'][a_links[i].id]= save_butt; - } - } - - // save toolbar select state for fileSpecific buttons - a_selects= _$("toolbar_1").getElementsByTagName("select"); - for( i=0; i<a_selects.length; i++) - { - if(a_selects[i].getAttribute('fileSpecific')=='yes') - { - save['toolbar']['selects'][a_selects[i].id]= a_selects[i].value; - } - } - - t.files[id]= save; - - return save; - } - - return false; - }; - - // update file_datas - EditArea.prototype.update_file= function(id, new_values){ - for(var i in new_values) - { - this.files[id][i]= new_values[i]; - } - }; - - // display file datas - EditArea.prototype.display_file= function(id){ - var t = this, a= t.textarea, new_file, a_lis, a_selects, a_links, a_options, i, j; - - // we're showing the empty file - if(id=='') - { - a.readOnly= true; - t.tab_browsing_area.style.display= "none"; - _$("no_file_selected").style.display= "block"; - t.result.className= "empty"; - // clear current datas - if(!t.files['']) - { - t.open_file({id: ''}); - } - } - // we try to show a non existent file, so we left - else if( typeof( t.files[id] ) == 'undefined' ) - { - return false; - } - // display a normal file - else - { - t.result.className= ""; - a.readOnly= !t.is_editable; - _$("no_file_selected").style.display= "none"; - t.tab_browsing_area.style.display= "block"; - } - - // ensure to have last state for undo/redo actions - t.check_redo(true); - t.check_undo(true); - t.curr_file= id; - - // replace selected tab file - a_lis= t.tab_browsing_area.getElementsByTagName('li'); - for( i=0; i<a_lis.length; i++) - { - if(a_lis[i].id == t.files[id]['html_id']) - a_lis[i].className='selected'; - else - a_lis[i].className=''; - } - - // replace next files datas - new_file= t.files[id]; - - // restore text content - a.value= new_file['text']; - - // restore font-size - t.set_font(new_file['font_family'], new_file['font_size']); - - // restore selection and scroll - t.area_select(new_file['last_selection']['selection_start'], new_file['last_selection']['selection_end'] - new_file['last_selection']['selection_start']); - t.manage_size(true); - t.result.scrollTop= new_file['scroll_top']; - t.result.scrollLeft= new_file['scroll_left']; - - // restore undo, redo - t.previous= new_file['previous']; - t.next= new_file['next']; - t.last_undo= new_file['last_undo']; - t.check_redo(true); - t.check_undo(true); - - // restore highlight - t.execCommand("change_highlight", new_file['do_highlight']); - t.execCommand("change_syntax", new_file['syntax']); - - // smooth mode - t.execCommand("change_smooth_selection_mode", new_file['smooth_selection']); - - // word_wrap - t.execCommand("set_word_wrap", new_file['word_wrap']); - - // restore links state in toolbar - a_links= new_file['toolbar']['links']; - for( i in a_links) - { - if( img = _$(i).getElementsByTagName('img')[0] ) - { - img.classLock = a_links[i]['classLock']; - img.className = a_links[i]['className']; - img.oldClassName= a_links[i]['oldClassName']; - } - } - - // restore select state in toolbar - a_selects = new_file['toolbar']['selects']; - for( i in a_selects) - { - a_options = _$(i).options; - for( j=0; j<a_options.length; j++) - { - if( a_options[j].value == a_selects[i] ) - _$(i).options[j].selected=true; - } - } - - }; - - // change tab for displaying a new one - EditArea.prototype.switch_to_file= function(file_to_show, force_refresh){ - if(file_to_show!=this.curr_file || force_refresh) - { - this.save_file(this.curr_file); - if(this.curr_file!='') - this.execCommand('file_switch_off', this.files[this.curr_file]); - this.display_file(file_to_show); - if(file_to_show!='') - this.execCommand('file_switch_on', this.files[file_to_show]); - } - }; - - // get all infos for the given file - EditArea.prototype.get_file= function(id){ - if(id==this.curr_file) - this.save_file(id); - return this.files[id]; - }; - - // get all available files infos - EditArea.prototype.get_all_files= function(){ - tmp_files= this.files; - this.save_file(this.curr_file); - if(tmp_files['']) - delete(this.files['']); - return tmp_files; - }; - - - // check if the file has changed - EditArea.prototype.check_file_changes= function(){ - - var id= this.curr_file; - if(this.files[id] && this.files[id]['compare_edited_text']!=undefined) - { - if(this.files[id]['compare_edited_text'].length==this.textarea.value.length && this.files[id]['compare_edited_text']==this.textarea.value) - { - if(this.files[id]['edited']!= false) - this.set_file_edited_mode(id, false); - } - else - { - if(this.files[id]['edited']!= true) - this.set_file_edited_mode(id, true); - } - } - }; - - // set if the file is edited or not - EditArea.prototype.set_file_edited_mode= function(id, to){ - // change CSS for edited tab - if(this.files[id] && _$(this.files[id]['html_id'])) - { - var link= _$(this.files[id]['html_id']).getElementsByTagName('a')[0]; - if(to==true) - { - link.className= 'edited'; - } - else - { - link.className= ''; - if(id==this.curr_file) - text= this.textarea.value; - else - text= this.files[id]['text']; - this.files[id]['compare_edited_text']= text; - } - - this.files[id]['edited']= to; - } - }; - - EditArea.prototype.set_show_line_colors = function(new_value){ - this.show_line_colors = new_value; - - if( new_value ) - this.selection_field.className += ' show_colors'; - else - this.selection_field.className = this.selection_field.className.replace( / show_colors/g, '' ); - }; \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/ee5e9639/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_loader.js ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_loader.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_loader.js deleted file mode 100644 index 34a17dd..0000000 --- a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/edit_area_loader.js +++ /dev/null @@ -1,1080 +0,0 @@ -/****** - * - * EditArea - * Developped by Christophe Dolivet - * Released under LGPL, Apache and BSD licenses (use the one you want) - * -******/ - -function EditAreaLoader(){ - var t=this; - t.version= "0.8.1.1"; - date= new Date(); - t.start_time=date.getTime(); - t.win= "loading"; // window loading state - t.error= false; // to know if load is interrrupt - t.baseURL=""; - //t.suffix=""; - t.template=""; - t.lang= {}; // array of loaded speech language - t.load_syntax= {}; // array of loaded syntax language for highlight mode - t.syntax= {}; // array of initilized syntax language for highlight mode - t.loadedFiles= []; - t.waiting_loading= {}; // files that must be loaded in order to allow the script to really start - // scripts that must be loaded in the iframe - t.scripts_to_load= ["elements_functions", "resize_area", "reg_syntax"]; - t.sub_scripts_to_load= ["edit_area", "manage_area" ,"edit_area_functions", "keyboard", "search_replace", "highlight", "regexp"]; - - t.resize= []; // contain resizing datas - t.hidden= {}; // store datas of the hidden textareas - - t.default_settings= { - //id: "src" // id of the textarea to transform - debug: false - ,smooth_selection: true - ,font_size: "10" // not for IE - ,font_family: "monospace" // can be "verdana,monospace". Allow non monospace font but Firefox get smaller tabulation with non monospace fonts. IE doesn't change the tabulation width and Opera doesn't take this option into account... - ,start_highlight: false // if start with highlight - ,toolbar: "search, go_to_line, fullscreen, |, undo, redo, |, select_font,|, change_smooth_selection, highlight, reset_highlight, word_wrap, |, help" - ,begin_toolbar: "" // "new_document, save, load, |" - ,end_toolbar: "" // or end_toolbar - ,is_multi_files: false // enable the multi file mode (the textarea content is ignored) - ,allow_resize: "both" // possible values: "no", "both", "x", "y" - ,show_line_colors: false // if the highlight is disabled for the line currently beeing edited (if enabled => heavy CPU use) - ,min_width: 400 - ,min_height: 125 - ,replace_tab_by_spaces: false - ,allow_toggle: true // true or false - ,language: "en" - ,syntax: "" - ,syntax_selection_allow: "basic,brainfuck,c,coldfusion,cpp,css,html,java,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml" - ,display: "onload" // onload or later - ,max_undo: 30 - ,browsers: "known" // all or known - ,plugins: "" // comma separated plugin list - ,gecko_spellcheck: false // enable/disable by default the gecko_spellcheck - ,fullscreen: false - ,is_editable: true - ,cursor_position: "begin" - ,word_wrap: false // define if the text is wrapped of not in the textarea - ,autocompletion: false // NOT IMPLEMENTED - ,load_callback: "" // click on load button (function name) - ,save_callback: "" // click on save button (function name) - ,change_callback: "" // textarea onchange trigger (function name) - ,submit_callback: "" // form submited (function name) - ,EA_init_callback: "" // EditArea initiliazed (function name) - ,EA_delete_callback: "" // EditArea deleted (function name) - ,EA_load_callback: "" // EditArea fully loaded and displayed (function name) - ,EA_unload_callback: "" // EditArea delete while being displayed (function name) - ,EA_toggle_on_callback: "" // EditArea toggled on (function name) - ,EA_toggle_off_callback: "" // EditArea toggled off (function name) - ,EA_file_switch_on_callback: "" // a new tab is selected (called for the newly selected file) - ,EA_file_switch_off_callback: "" // a new tab is selected (called for the previously selected file) - ,EA_file_close_callback: "" // close a tab - }; - - t.advanced_buttons = [ - // id, button img, command (it will try to find the translation of "id"), is_file_specific - ['new_document', 'newdocument.gif', 'new_document', false], - ['search', 'search.gif', 'show_search', false], - ['go_to_line', 'go_to_line.gif', 'go_to_line', false], - ['undo', 'undo.gif', 'undo', true], - ['redo', 'redo.gif', 'redo', true], - ['change_smooth_selection', 'smooth_selection.gif', 'change_smooth_selection_mode', true], - ['reset_highlight', 'reset_highlight.gif', 'resync_highlight', true], - ['highlight', 'highlight.gif','change_highlight', true], - ['help', 'help.gif', 'show_help', false], - ['save', 'save.gif', 'save', false], - ['load', 'load.gif', 'load', false], - ['fullscreen', 'fullscreen.gif', 'toggle_full_screen', false], - ['word_wrap', 'word_wrap.gif', 'toggle_word_wrap', true], - ['autocompletion', 'autocompletion.gif', 'toggle_autocompletion', true] - ]; - - // navigator identification - t.set_browser_infos(t); - - if(t.isIE>=6 || t.isGecko || ( t.isWebKit && !t.isSafari<3 ) || t.isOpera>=9 || t.isCamino ) - t.isValidBrowser=true; - else - t.isValidBrowser=false; - - t.set_base_url(); - - for(var i=0; i<t.scripts_to_load.length; i++){ - setTimeout("editAreaLoader.load_script('"+t.baseURL + t.scripts_to_load[i]+ ".js');", 1); // let the time to Object editAreaLoader to be created before loading additionnal scripts - t.waiting_loading[t.scripts_to_load[i]+ ".js"]= false; - } - t.add_event(window, "load", EditAreaLoader.prototype.window_loaded); -}; - -EditAreaLoader.prototype ={ - has_error : function(){ - this.error= true; - // set to empty all EditAreaLoader functions - for(var i in EditAreaLoader.prototype){ - EditAreaLoader.prototype[i]=function(){}; - } - }, - - // add browser informations to the object passed in parameter - set_browser_infos : function(o){ - ua= navigator.userAgent; - - // general detection - o.isWebKit = /WebKit/.test(ua); - o.isGecko = !o.isWebKit && /Gecko/.test(ua); - o.isMac = /Mac/.test(ua); - - o.isIE = (navigator.appName == "Microsoft Internet Explorer"); - if(o.isIE){ - o.isIE = ua.replace(/^.*?MSIE\s+([0-9\.]+).*$/, "$1"); - if(o.isIE<6) - o.has_error(); - } - - if(o.isOpera = (ua.indexOf('Opera') != -1)){ - o.isOpera= ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1"); - if(o.isOpera<9) - o.has_error(); - o.isIE=false; - } - - if(o.isFirefox =(ua.indexOf('Firefox') != -1)) - o.isFirefox = ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1"); - // Firefox clones - if( ua.indexOf('Iceweasel') != -1 ) - o.isFirefox = ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1"); - if( ua.indexOf('GranParadiso') != -1 ) - o.isFirefox = ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i, "$1"); - if( ua.indexOf('BonEcho') != -1 ) - o.isFirefox = ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i, "$1"); - if( ua.indexOf('SeaMonkey') != -1) - o.isFirefox = (ua.replace(/^.*?SeaMonkey.*?([0-9\.]+).*$/i, "$1") ) + 1; - - if(o.isCamino =(ua.indexOf('Camino') != -1)) - o.isCamino = ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1"); - - if(o.isSafari =(ua.indexOf('Safari') != -1)) - o.isSafari= ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i, "$1"); - - if(o.isChrome =(ua.indexOf('Chrome') != -1)) { - o.isChrome = ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i, "$1"); - o.isSafari = false; - } - - }, - - window_loaded : function(){ - editAreaLoader.win="loaded"; - - // add events on forms - if (document.forms) { - for (var i=0; i<document.forms.length; i++) { - var form = document.forms[i]; - form.edit_area_replaced_submit=null; - try { - - form.edit_area_replaced_submit = form.onsubmit; - form.onsubmit=""; - } catch (e) {// Do nothing - } - editAreaLoader.add_event(form, "submit", EditAreaLoader.prototype.submit); - editAreaLoader.add_event(form, "reset", EditAreaLoader.prototype.reset); - } - } - editAreaLoader.add_event(window, "unload", function(){for(var i in editAreas){editAreaLoader.delete_instance(i);}}); // ini callback - }, - - // init the checkup of the selection of the IE textarea - init_ie_textarea : function(id){ - var a=document.getElementById(id); - try{ - if(a && typeof(a.focused)=="undefined"){ - a.focus(); - a.focused=true; - a.selectionStart= a.selectionEnd= 0; - get_IE_selection(a); - editAreaLoader.add_event(a, "focus", IE_textarea_focus); - editAreaLoader.add_event(a, "blur", IE_textarea_blur); - - } - }catch(ex){} - }, - - init : function(settings){ - var t=this,s=settings,i; - - if(!s["id"]) - t.has_error(); - if(t.error) - return; - // if an instance of the editor already exists for this textarea => delete the previous one - if(editAreas[s["id"]]) - t.delete_instance(s["id"]); - - // init settings - for(i in t.default_settings){ - if(typeof(s[i])=="undefined") - s[i]=t.default_settings[i]; - } - - if(s["browsers"]=="known" && t.isValidBrowser==false){ - return; - } - - if(s["begin_toolbar"].length>0) - s["toolbar"]= s["begin_toolbar"] +","+ s["toolbar"]; - if(s["end_toolbar"].length>0) - s["toolbar"]= s["toolbar"] +","+ s["end_toolbar"]; - s["tab_toolbar"]= s["toolbar"].replace(/ /g,"").split(","); - - s["plugins"]= s["plugins"].replace(/ /g,"").split(","); - for(i=0; i<s["plugins"].length; i++){ - if(s["plugins"][i].length==0) - s["plugins"].splice(i,1); - } - // alert(settings["plugins"].length+": "+ settings["plugins"].join(",")); - t.get_template(); - t.load_script(t.baseURL + "langs/"+ s["language"] + ".js"); - - if(s["syntax"].length>0){ - s["syntax"]=s["syntax"].toLowerCase(); - t.load_script(t.baseURL + "reg_syntax/"+ s["syntax"] + ".js"); - } - //alert(this.template); - - editAreas[s["id"]]= {"settings": s}; - editAreas[s["id"]]["displayed"]=false; - editAreas[s["id"]]["hidden"]=false; - - //if(settings["display"]=="onload") - t.start(s["id"]); - }, - - // delete an instance of an EditArea - delete_instance : function(id){ - var d=document,fs=window.frames,span,iframe; - editAreaLoader.execCommand(id, "EA_delete"); - if(fs["frame_"+id] && fs["frame_"+id].editArea) - { - if(editAreas[id]["displayed"]) - editAreaLoader.toggle(id, "off"); - fs["frame_"+id].editArea.execCommand("EA_unload"); - } - - // remove toggle infos and debug textarea - span= d.getElementById("EditAreaArroundInfos_"+id); - if(span) - span.parentNode.removeChild(span); - - // remove the iframe - iframe= d.getElementById("frame_"+id); - if(iframe){ - iframe.parentNode.removeChild(iframe); - //delete iframe; - try { - delete fs["frame_"+id]; - } catch (e) {// Do nothing - } - } - - delete editAreas[id]; - }, - - - start : function(id){ - var t=this,d=document,f,span,father,next,html='',html_toolbar_content='',template,content,i; - - // check that the window is loaded - if(t.win!="loaded"){ - setTimeout("editAreaLoader.start('"+id+"');", 50); - return; - } - - // check that all needed scripts are loaded - for( i in t.waiting_loading){ - if(t.waiting_loading[i]!="loaded" && typeof(t.waiting_loading[i])!="function"){ - setTimeout("editAreaLoader.start('"+id+"');", 50); - return; - } - } - - // wait until language and syntax files are loaded - if(!t.lang[editAreas[id]["settings"]["language"]] || (editAreas[id]["settings"]["syntax"].length>0 && !t.load_syntax[editAreas[id]["settings"]["syntax"]]) ){ - setTimeout("editAreaLoader.start('"+id+"');", 50); - return; - } - // init the regexp for syntax highlight - if(editAreas[id]["settings"]["syntax"].length>0) - t.init_syntax_regexp(); - - - // display toggle option and debug area - if(!d.getElementById("EditAreaArroundInfos_"+id) && (editAreas[id]["settings"]["debug"] || editAreas[id]["settings"]["allow_toggle"])) - { - span= d.createElement("span"); - span.id= "EditAreaArroundInfos_"+id; - if(editAreas[id]["settings"]["allow_toggle"]){ - checked=(editAreas[id]["settings"]["display"]=="onload")?"checked='checked'":""; - html+="<div id='edit_area_toggle_"+i+"'>"; - html+="<input id='edit_area_toggle_checkbox_"+ id +"' class='toggle_"+ id +"' type='checkbox' onclick='editAreaLoader.toggle(\""+ id +"\");' accesskey='e' "+checked+" />"; - html+="<label for='edit_area_toggle_checkbox_"+ id +"'>{$toggle}</label></div>"; - } - if(editAreas[id]["settings"]["debug"]) - html+="<textarea id='edit_area_debug_"+ id +"' spellcheck='off' style='z-index: 20; width: 100%; height: 120px;overflow: auto; border: solid black 1px;'></textarea><br />"; - html= t.translate(html, editAreas[id]["settings"]["language"]); - span.innerHTML= html; - father= d.getElementById(id).parentNode; - next= d.getElementById(id).nextSibling; - if(next==null) - father.appendChild(span); - else - father.insertBefore(span, next); - } - - if(!editAreas[id]["initialized"]) - { - t.execCommand(id, "EA_init"); // ini callback - if(editAreas[id]["settings"]["display"]=="later"){ - editAreas[id]["initialized"]= true; - return; - } - } - - if(t.isIE){ // launch IE selection checkup - t.init_ie_textarea(id); - } - - // get toolbar content - area=editAreas[id]; - - for(i=0; i<area["settings"]["tab_toolbar"].length; i++){ - // alert(this.tab_toolbar[i]+"\n"+ this.get_control_html(this.tab_toolbar[i])); - html_toolbar_content+= t.get_control_html(area["settings"]["tab_toolbar"][i], area["settings"]["language"]); - } - // translate toolbar text here for chrome 2 - html_toolbar_content = t.translate(html_toolbar_content, area["settings"]["language"], "template"); - - - // create javascript import rules for the iframe if the javascript has not been already loaded by the compressor - if(!t.iframe_script){ - t.iframe_script=""; - for(i=0; i<t.sub_scripts_to_load.length; i++) - t.iframe_script+='<script language="javascript" type="text/javascript" src="'+ t.baseURL + t.sub_scripts_to_load[i] +'.js"></script>'; - } - - // add plugins scripts if not already loaded by the compressor (but need to load language in all the case) - for(i=0; i<area["settings"]["plugins"].length; i++){ - //if(typeof(area["settings"]["plugins"][i])=="function") continue; - if(!t.all_plugins_loaded) - t.iframe_script+='<script language="javascript" type="text/javascript" src="'+ t.baseURL + 'plugins/' + area["settings"]["plugins"][i] + '/' + area["settings"]["plugins"][i] +'.js"></script>'; - t.iframe_script+='<script language="javascript" type="text/javascript" src="'+ t.baseURL + 'plugins/' + area["settings"]["plugins"][i] + '/langs/' + area["settings"]["language"] +'.js"></script>'; - } - - - // create css link for the iframe if the whole css text has not been already loaded by the compressor - if(!t.iframe_css){ - t.iframe_css="<link href='"+ t.baseURL +"edit_area.css' rel='stylesheet' type='text/css' />"; - } - - - // create template - template= t.template.replace(/\[__BASEURL__\]/g, t.baseURL); - template= template.replace("[__TOOLBAR__]",html_toolbar_content); - - - // fill template with good language sentences - template= t.translate(template, area["settings"]["language"], "template"); - - // add css_code - template= template.replace("[__CSSRULES__]", t.iframe_css); - // add js_code - template= template.replace("[__JSCODE__]", t.iframe_script); - - // add version_code - template= template.replace("[__EA_VERSION__]", t.version); - //template=template.replace(/\{\$([^\}]+)\}/gm, this.traduc_template); - - //editAreas[area["settings"]["id"]]["template"]= template; - - area.textarea=d.getElementById(area["settings"]["id"]); - editAreas[area["settings"]["id"]]["textarea"]=area.textarea; - - // if removing previous instances from DOM before (fix from Marcin) - if(typeof(window.frames["frame_"+area["settings"]["id"]])!='undefined') - delete window.frames["frame_"+area["settings"]["id"]]; - - // insert template in the document after the textarea - father= area.textarea.parentNode; - /* var container= document.createElement("div"); - container.id= "EditArea_frame_container_"+area["settings"]["id"]; - */ - content= d.createElement("iframe"); - content.name= "frame_"+area["settings"]["id"]; - content.id= "frame_"+area["settings"]["id"]; - content.style.borderWidth= "0px"; - setAttribute(content, "frameBorder", "0"); // IE - content.style.overflow="hidden"; - content.style.display="none"; - - - next= area.textarea.nextSibling; - if(next==null) - father.appendChild(content); - else - father.insertBefore(content, next) ; - f=window.frames["frame_"+area["settings"]["id"]]; - f.document.open(); - f.editAreas=editAreas; - f.area_id= area["settings"]["id"]; - f.document.area_id= area["settings"]["id"]; - f.document.write(template); - f.document.close(); - - // frame.editAreaLoader=this; - //editAreas[area["settings"]["id"]]["displayed"]=true; - - }, - - toggle : function(id, toggle_to){ - - /* if((editAreas[id]["displayed"]==true && toggle_to!="on") || toggle_to=="off"){ - this.toggle_off(id); - }else if((editAreas[id]["displayed"]==false && toggle_to!="off") || toggle_to=="on"){ - this.toggle_on(id); - }*/ - if(!toggle_to) - toggle_to= (editAreas[id]["displayed"]==true)?"off":"on"; - if(editAreas[id]["displayed"]==true && toggle_to=="off"){ - this.toggle_off(id); - }else if(editAreas[id]["displayed"]==false && toggle_to=="on"){ - this.toggle_on(id); - } - - return false; - }, - - // static function - toggle_off : function(id){ - var fs=window.frames,f,t,parNod,nxtSib,selStart,selEnd,scrollTop,scrollLeft; - if(fs["frame_"+id]) - { - f = fs["frame_"+id]; - t = editAreas[id]["textarea"]; - if(f.editArea.fullscreen['isFull']) - f.editArea.toggle_full_screen(false); - editAreas[id]["displayed"]=false; - - // set wrap to off to keep same display mode (some browser get problem with this, so it need more complex operation - t.wrap = "off"; // for IE - setAttribute(t, "wrap", "off"); // for Firefox - parNod = t.parentNode; - nxtSib = t.nextSibling; - parNod.removeChild(t); - parNod.insertBefore(t, nxtSib); - - // restore values - t.value= f.editArea.textarea.value; - selStart = f.editArea.last_selection["selectionStart"]; - selEnd = f.editArea.last_selection["selectionEnd"]; - scrollTop = f.document.getElementById("result").scrollTop; - scrollLeft = f.document.getElementById("result").scrollLeft; - - - document.getElementById("frame_"+id).style.display='none'; - - t.style.display="inline"; - - try{ // IE will give an error when trying to focus an invisible or disabled textarea - t.focus(); - } catch(e){}; - if(this.isIE){ - t.selectionStart= selStart; - t.selectionEnd = selEnd; - t.focused = true; - set_IE_selection(t); - }else{ - if(this.isOpera && this.isOpera < 9.6 ){ // Opera bug when moving selection start and selection end - t.setSelectionRange(0, 0); - } - try{ - t.setSelectionRange(selStart, selEnd); - } catch(e) {}; - } - t.scrollTop= scrollTop; - t.scrollLeft= scrollLeft; - f.editArea.execCommand("toggle_off"); - - } - }, - - // static function - toggle_on : function(id){ - var fs=window.frames,f,t,selStart=0,selEnd=0,scrollTop=0,scrollLeft=0,curPos,elem; - - if(fs["frame_"+id]) - { - f = fs["frame_"+id]; - t = editAreas[id]["textarea"]; - area= f.editArea; - area.textarea.value= t.value; - - // store display values; - curPos = editAreas[id]["settings"]["cursor_position"]; - - if(t.use_last==true) - { - selStart = t.last_selectionStart; - selEnd = t.last_selectionEnd; - scrollTop = t.last_scrollTop; - scrollLeft = t.last_scrollLeft; - t.use_last=false; - } - else if( curPos == "auto" ) - { - try{ - selStart = t.selectionStart; - selEnd = t.selectionEnd; - scrollTop = t.scrollTop; - scrollLeft = t.scrollLeft; - //alert(scrollTop); - }catch(ex){} - } - - // set to good size - this.set_editarea_size_from_textarea(id, document.getElementById("frame_"+id)); - t.style.display="none"; - document.getElementById("frame_"+id).style.display="inline"; - area.execCommand("focus"); // without this focus opera doesn't manage well the iframe body height - - - // restore display values - editAreas[id]["displayed"]=true; - area.execCommand("update_size"); - - f.document.getElementById("result").scrollTop= scrollTop; - f.document.getElementById("result").scrollLeft= scrollLeft; - area.area_select(selStart, selEnd-selStart); - area.execCommand("toggle_on"); - - - } - else - { - /* if(this.isIE) - get_IE_selection(document.getElementById(id)); */ - elem= document.getElementById(id); - elem.last_selectionStart= elem.selectionStart; - elem.last_selectionEnd= elem.selectionEnd; - elem.last_scrollTop= elem.scrollTop; - elem.last_scrollLeft= elem.scrollLeft; - elem.use_last=true; - editAreaLoader.start(id); - } - }, - - set_editarea_size_from_textarea : function(id, frame){ - var elem,width,height; - elem = document.getElementById(id); - - width = Math.max(editAreas[id]["settings"]["min_width"], elem.offsetWidth)+"px"; - height = Math.max(editAreas[id]["settings"]["min_height"], elem.offsetHeight)+"px"; - if(elem.style.width.indexOf("%")!=-1) - width = elem.style.width; - if(elem.style.height.indexOf("%")!=-1) - height = elem.style.height; - //alert("h: "+height+" w: "+width); - - frame.style.width= width; - frame.style.height= height; - }, - - set_base_url : function(){ - var t=this,elems,i,docBasePath; - - if( !this.baseURL ){ - elems = document.getElementsByTagName('script'); - - for( i=0; i<elems.length; i++ ){ - if (elems[i].src && elems[i].src.match(/edit_area_[^\\\/]*$/i) ) { - var src = elems[i].src; - src = src.substring(0, src.lastIndexOf('/')); - this.baseURL = src; - this.file_name= elems[i].src.substr(elems[i].src.lastIndexOf("/")+1); - break; - } - } - } - - docBasePath = document.location.href; - if (docBasePath.indexOf('?') != -1) - docBasePath = docBasePath.substring(0, docBasePath.indexOf('?')); - docBasePath = docBasePath.substring(0, docBasePath.lastIndexOf('/')); - - // If not HTTP absolute - if (t.baseURL.indexOf('://') == -1 && t.baseURL.charAt(0) != '/') { - // If site absolute - t.baseURL = docBasePath + "/" + t.baseURL; - } - t.baseURL +="/"; - }, - - get_button_html : function(id, img, exec, isFileSpecific, baseURL) { - var cmd,html; - if(!baseURL) - baseURL= this.baseURL; - cmd = 'editArea.execCommand(\'' + exec + '\')'; - html = '<a id="a_'+ id +'" href="javascript:' + cmd + '" onclick="' + cmd + ';return false;" onmousedown="return false;" target="_self" fileSpecific="'+ (isFileSpecific?'yes':'no') +'">'; - html += '<img id="' + id + '" src="'+ baseURL +'images/' + img + '" title="{$' + id + '}" width="20" height="20" class="editAreaButtonNormal" onmouseover="editArea.switchClass(this,\'editAreaButtonOver\');" onmouseout="editArea.restoreClass(this);" onmousedown="editArea.restoreAndSwitchClass(this,\'editAreaButtonDown\');" /></a>'; - return html; - }, - - get_control_html : function(button_name, lang) { - var t=this,i,but,html,si; - for (i=0; i<t.advanced_buttons.length; i++) - { - but = t.advanced_buttons[i]; - if (but[0] == button_name) - { - return t.get_button_html(but[0], but[1], but[2], but[3]); - } - } - - switch (button_name){ - case "*": - case "return": - return "<br />"; - case "|": - case "separator": - return '<img src="'+ t.baseURL +'images/spacer.gif" width="1" height="15" class="editAreaSeparatorLine">'; - case "select_font": - html= "<select id='area_font_size' onchange='javascript:editArea.execCommand(\"change_font_size\")' fileSpecific='yes'>"; - html+="<option value='-1'>{$font_size}</option>"; - si=[8,9,10,11,12,14]; - for( i=0;i<si.length;i++){ - html+="<option value='"+si[i]+"'>"+si[i]+" pt</option>"; - } - html+="</select>"; - return html; - case "syntax_selection": - html= "<select id='syntax_selection' onchange='javascript:editArea.execCommand(\"change_syntax\", this.value)' fileSpecific='yes'>"; - html+="<option value='-1'>{$syntax_selection}</option>"; - html+="</select>"; - return html; - } - - return "<span id='tmp_tool_"+button_name+"'>["+button_name+"]</span>"; - }, - - - get_template : function(){ - if(this.template=="") - { - var xhr_object = null; - if(window.XMLHttpRequest) // Firefox - xhr_object = new XMLHttpRequest(); - else if(window.ActiveXObject) // Internet Explorer - xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); - else { // XMLHttpRequest not supported - alert("XMLHTTPRequest not supported. EditArea not loaded"); - return; - } - - xhr_object.open("GET", this.baseURL+"template.html", false); - xhr_object.send(null); - if(xhr_object.readyState == 4) - this.template=xhr_object.responseText; - else - this.has_error(); - } - }, - - // translate text - translate : function(text, lang, mode){ - if(mode=="word") - text=editAreaLoader.get_word_translation(text, lang); - else if(mode="template"){ - editAreaLoader.current_language= lang; - text=text.replace(/\{\$([^\}]+)\}/gm, editAreaLoader.translate_template); - } - return text; - }, - - translate_template : function(){ - return editAreaLoader.get_word_translation(EditAreaLoader.prototype.translate_template.arguments[1], editAreaLoader.current_language); - }, - - get_word_translation : function(val, lang){ - var i; - - for( i in editAreaLoader.lang[lang]){ - if(i == val) - return editAreaLoader.lang[lang][i]; - } - return "_"+val; - }, - - load_script : function(url){ - var t=this,d=document,script,head; - - if( t.loadedFiles[url] ) - return; - //alert("load: "+url); - try{ - script= d.createElement("script"); - script.type= "text/javascript"; - script.src= url; - script.charset= "UTF-8"; - d.getElementsByTagName("head")[0].appendChild(script); - }catch(e){ - d.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '" charset="UTF-8"></sc'+'ript>'); - } - - t.loadedFiles[url] = true; - }, - - add_event : function(obj, name, handler) { - try{ - if (obj.attachEvent) { - obj.attachEvent("on" + name, handler); - } else{ - obj.addEventListener(name, handler, false); - } - }catch(e){} - }, - - remove_event : function(obj, name, handler){ - try{ - if (obj.detachEvent) - obj.detachEvent("on" + name, handler); - else - obj.removeEventListener(name, handler, false); - }catch(e){} - }, - - - // reset all the editareas in the form that have been reseted - reset : function(e){ - var formObj,is_child,i,x; - - formObj = editAreaLoader.isIE ? window.event.srcElement : e.target; - if(formObj.tagName!='FORM') - formObj= formObj.form; - - for( i in editAreas ){ - is_child= false; - for( x=0;x<formObj.elements.length;x++ ) { - if(formObj.elements[x].id == i) - is_child=true; - } - - if(window.frames["frame_"+i] && is_child && editAreas[i]["displayed"]==true){ - - var exec= 'window.frames["frame_'+ i +'"].editArea.textarea.value= document.getElementById("'+ i +'").value;'; - exec+= 'window.frames["frame_'+ i +'"].editArea.execCommand("focus");'; - exec+= 'window.frames["frame_'+ i +'"].editArea.check_line_selection();'; - exec+= 'window.frames["frame_'+ i +'"].editArea.execCommand("reset");'; - window.setTimeout(exec, 10); - } - } - return; - }, - - - // prepare all the textarea replaced by an editarea to be submited - submit : function(e){ - var formObj,is_child,fs=window.frames,i,x; - formObj = editAreaLoader.isIE ? window.event.srcElement : e.target; - if(formObj.tagName!='FORM') - formObj= formObj.form; - - for( i in editAreas){ - is_child= false; - for( x=0;x<formObj.elements.length;x++ ) { - if(formObj.elements[x].id == i) - is_child=true; - } - - if(is_child) - { - if(fs["frame_"+i] && editAreas[i]["displayed"]==true) - document.getElementById(i).value= fs["frame_"+ i].editArea.textarea.value; - editAreaLoader.execCommand(i,"EA_submit"); - } - } - if( typeof(formObj.edit_area_replaced_submit) == "function" ){ - res= formObj.edit_area_replaced_submit(); - if(res==false){ - if(editAreaLoader.isIE) - return false; - else - e.preventDefault(); - } - } - return; - }, - - // allow to get the value of the editarea - getValue : function(id){ - if(window.frames["frame_"+id] && editAreas[id]["displayed"]==true){ - return window.frames["frame_"+ id].editArea.textarea.value; - }else if(elem=document.getElementById(id)){ - return elem.value; - } - return false; - }, - - // allow to set the value of the editarea - setValue : function(id, new_val){ - var fs=window.frames; - - if( ( f=fs["frame_"+id] ) && editAreas[id]["displayed"]==true){ - f.editArea.textarea.value= new_val; - f.editArea.execCommand("focus"); - f.editArea.check_line_selection(false); - f.editArea.execCommand("onchange"); - }else if(elem=document.getElementById(id)){ - elem.value= new_val; - } - }, - - // allow to get infos on the selection: array(start, end) - getSelectionRange : function(id){ - var sel,eA,fs=window.frames; - - sel= {"start": 0, "end": 0}; - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - eA= fs["frame_"+ id].editArea; - - sel["start"] = eA.textarea.selectionStart; - sel["end"] = eA.textarea.selectionEnd; - - }else if( elem=document.getElementById(id) ){ - sel= getSelectionRange(elem); - } - return sel; - }, - - // allow to set the selection with the given start and end positions - setSelectionRange : function(id, new_start, new_end){ - var fs=window.frames; - - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - fs["frame_"+ id].editArea.area_select(new_start, new_end-new_start); - // make an auto-scroll to the selection - if(!this.isIE){ - fs["frame_"+ id].editArea.check_line_selection(false); - fs["frame_"+ id].editArea.scroll_to_view(); - } - }else if(elem=document.getElementById(id)){ - setSelectionRange(elem, new_start, new_end); - } - }, - - getSelectedText : function(id){ - var sel= this.getSelectionRange(id); - - return this.getValue(id).substring(sel["start"], sel["end"]); - }, - - setSelectedText : function(id, new_val){ - var fs=window.frames,d=document,sel,text,scrollTop,scrollLeft,new_sel_end; - - new_val = new_val.replace(/\r/g, ""); - sel = this.getSelectionRange(id); - text = this.getValue(id); - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - scrollTop = fs["frame_"+ id].document.getElementById("result").scrollTop; - scrollLeft = fs["frame_"+ id].document.getElementById("result").scrollLeft; - }else{ - scrollTop = d.getElementById(id).scrollTop; - scrollLeft = d.getElementById(id).scrollLeft; - } - - text = text.substring(0, sel["start"])+ new_val +text.substring(sel["end"]); - this.setValue(id, text); - new_sel_end = sel["start"]+ new_val.length; - this.setSelectionRange(id, sel["start"], new_sel_end); - - - // fix \r problem for selection length count on IE & Opera - if(new_val != this.getSelectedText(id).replace(/\r/g, "")){ - this.setSelectionRange(id, sel["start"], new_sel_end+ new_val.split("\n").length -1); - } - // restore scrolling position - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - fs["frame_"+ id].document.getElementById("result").scrollTop= scrollTop; - fs["frame_"+ id].document.getElementById("result").scrollLeft= scrollLeft; - fs["frame_"+ id].editArea.execCommand("onchange"); - }else{ - d.getElementById(id).scrollTop= scrollTop; - d.getElementById(id).scrollLeft= scrollLeft; - } - }, - - insertTags : function(id, open_tag, close_tag){ - var old_sel,new_sel; - - old_sel = this.getSelectionRange(id); - text = open_tag + this.getSelectedText(id) + close_tag; - - editAreaLoader.setSelectedText(id, text); - - new_sel = this.getSelectionRange(id); - if(old_sel["end"] > old_sel["start"]) // if text was selected, cursor at the end - this.setSelectionRange(id, new_sel["end"], new_sel["end"]); - else // cursor in the middle - this.setSelectionRange(id, old_sel["start"]+open_tag.length, old_sel["start"]+open_tag.length); - }, - - // hide both EditArea and normal textarea - hide : function(id){ - var fs= window.frames,d=document,t=this,scrollTop,scrollLeft,span; - if(d.getElementById(id) && !t.hidden[id]) - { - t.hidden[id]= {}; - t.hidden[id]["selectionRange"]= t.getSelectionRange(id); - if(d.getElementById(id).style.display!="none") - { - t.hidden[id]["scrollTop"]= d.getElementById(id).scrollTop; - t.hidden[id]["scrollLeft"]= d.getElementById(id).scrollLeft; - } - - if(fs["frame_"+id]) - { - t.hidden[id]["toggle"]= editAreas[id]["displayed"]; - - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - scrollTop = fs["frame_"+ id].document.getElementById("result").scrollTop; - scrollLeft = fs["frame_"+ id].document.getElementById("result").scrollLeft; - }else{ - scrollTop = d.getElementById(id).scrollTop; - scrollLeft = d.getElementById(id).scrollLeft; - } - t.hidden[id]["scrollTop"]= scrollTop; - t.hidden[id]["scrollLeft"]= scrollLeft; - - if(editAreas[id]["displayed"]==true) - editAreaLoader.toggle_off(id); - } - - // hide toggle button and debug box - span= d.getElementById("EditAreaArroundInfos_"+id); - if(span){ - span.style.display='none'; - } - - // hide textarea - d.getElementById(id).style.display= "none"; - } - }, - - // restore hidden EditArea and normal textarea - show : function(id){ - var fs= window.frames,d=document,t=this,span; - if((elem=d.getElementById(id)) && t.hidden[id]) - { - elem.style.display= "inline"; - elem.scrollTop= t.hidden[id]["scrollTop"]; - elem.scrollLeft= t.hidden[id]["scrollLeft"]; - span= d.getElementById("EditAreaArroundInfos_"+id); - if(span){ - span.style.display='inline'; - } - - if(fs["frame_"+id]) - { - - // restore toggle button and debug box - - - // restore textarea - elem.style.display= "inline"; - - // restore EditArea - if(t.hidden[id]["toggle"]==true) - editAreaLoader.toggle_on(id); - - scrollTop = t.hidden[id]["scrollTop"]; - scrollLeft = t.hidden[id]["scrollLeft"]; - - if(fs["frame_"+id] && editAreas[id]["displayed"]==true){ - fs["frame_"+ id].document.getElementById("result").scrollTop = scrollTop; - fs["frame_"+ id].document.getElementById("result").scrollLeft = scrollLeft; - }else{ - elem.scrollTop = scrollTop; - elem.scrollLeft = scrollLeft; - } - - } - // restore selection - sel = t.hidden[id]["selectionRange"]; - t.setSelectionRange(id, sel["start"], sel["end"]); - delete t.hidden[id]; - } - }, - - // get the current file datas (for multi file editing mode) - getCurrentFile : function(id){ - return this.execCommand(id, 'get_file', this.execCommand(id, 'curr_file')); - }, - - // get the given file datas (for multi file editing mode) - getFile : function(id, file_id){ - return this.execCommand(id, 'get_file', file_id); - }, - - // get all the openned files datas (for multi file editing mode) - getAllFiles : function(id){ - return this.execCommand(id, 'get_all_files()'); - }, - - // open a file (for multi file editing mode) - openFile : function(id, file_infos){ - return this.execCommand(id, 'open_file', file_infos); - }, - - // close the given file (for multi file editing mode) - closeFile : function(id, file_id){ - return this.execCommand(id, 'close_file', file_id); - }, - - // close the given file (for multi file editing mode) - setFileEditedMode : function(id, file_id, to){ - var reg1,reg2; - reg1 = new RegExp('\\\\', 'g'); - reg2 = new RegExp('"', 'g'); - return this.execCommand(id, 'set_file_edited_mode("'+ file_id.replace(reg1, '\\\\').replace(reg2, '\\"') +'", '+ to +')'); - }, - - - // allow to access to editarea functions and datas (for advanced users only) - execCommand : function(id, cmd, fct_param){ - switch(cmd){ - case "EA_init": - if(editAreas[id]['settings']["EA_init_callback"].length>0) - eval(editAreas[id]['settings']["EA_init_callback"]+"('"+ id +"');"); - break; - case "EA_delete": - if(editAreas[id]['settings']["EA_delete_callback"].length>0) - eval(editAreas[id]['settings']["EA_delete_callback"]+"('"+ id +"');"); - break; - case "EA_submit": - if(editAreas[id]['settings']["submit_callback"].length>0) - eval(editAreas[id]['settings']["submit_callback"]+"('"+ id +"');"); - break; - } - if(window.frames["frame_"+id] && window.frames["frame_"+ id].editArea){ - if(fct_param!=undefined) - return eval('window.frames["frame_'+ id +'"].editArea.'+ cmd +'(fct_param);'); - else - return eval('window.frames["frame_'+ id +'"].editArea.'+ cmd +';'); - } - return false; - } -}; - - var editAreaLoader= new EditAreaLoader(); - var editAreas= {}; -
