$('#textInput textarea').ready( function() {

	if (jQuery.browser.mobile)
		return;

	var	rte_toolbar = {
		bold			: {command: 'bold', hint: 'Fett', tags:['b', 'strong']},
		italic			: {command: 'italic', hint: 'Kursiv', tags:['i', 'em']},
		underline		: {command: 'underline', hint: 'Unterstrichen', tags: ['u']},
		strikeThrough	: {command: 'strikethrough', hint: 'Durchgestrichen', tags: ['s', 'strike']},
		s2				: {separator: true },
		justifyLeft   	: {command: 'justifyleft', hint: 'Linksbündig'},
		justifyCenter	: {command: 'justifycenter', hint: 'Zentriert'},
		justifyRight	: {command: 'justifyright', hint: 'Rechtsbündig'},
		s3				: {separator : true },
		smileys			: {command: 'smiley', hint: 'Smiley hinzufügen', exec: function(){newWindow('/smileys/index.html', 500, 400);}}
	};

	editors = jQuery('#textInput textarea').rte({
		css: ['/templates/v4/media/iframe.css'],
		controls_rte: rte_toolbar
	});

	if ( !editors['text'] )
		return false;
		
	$(editors['text'].iframe_doc.body).bind("paste", function(e) {
		try {
			
			editors['text'].editor_cmd('insertHTML', '<div id="cleaner">_</div>');
			
			setTimeout( function() {
				
				var text = $('#cleaner', editors['text'].iframe_doc).html();
				var elem = $('<span>'+strip_tags(text, ['br','p','b','i','u','span','div','img'])+'</span>');
				$('#cleaner', editors['text'].iframe_doc).replaceWith(elem);
				
			}, 10);

		} catch (e) {}
	});


	$(editors['text'].iframe_doc).bind('keypress', function(e) {
		if (e.keyCode === 9) {
			e.preventDefault();
			$('.submit[type=submit]').focus();
		}
	});

});

function strip_tags (str, allowed_array) {
    var key = '', allowed = false;
    var matches = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = '';

    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
    
	str = str.replace(/^_/, '', str);
    matches = str.match(/(<\/?[\S][^>]*>)/gi);

    for (key in matches) {
        if (isNaN(key)) {
            continue;
        }

        html = matches[key].toString();
        allowed = false;

        for (k in allowed_array) {

            allowed_tag = allowed_array[k];
            i = -1;

            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

            if (i == 0) {
                allowed = true;
                break;
            }
        }

        if (!allowed) {
            str = replacer(html, "", str);
        }
    }

    return str;
}

/**
 * jQuery.browser.mobile (http://detectmobilebrowser.com/)
 *
 * jQuery.browser.mobile will be true if the browser is a mobile device
 *
 **/
(function(a){jQuery.browser.mobile=/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);


jQuery.fn.rte=function(a,b){if(!b||b.constructor!=Array){b=new Array()}$(this).each(function(c){var d=(this.id)?this.id:b.length;b[d]=new lwRTE(this,a||{})});return b};var lwRTE_resizer=function(a){this.drag=false;this.rte_zone=$(a).parents(".rte-zone")};lwRTE_resizer.mousedown=function(b,a){b.drag=true;b.event=(typeof(a)=="undefined")?window.event:a;b.rte_obj=$(".rte-resizer",b.rte_zone).prev().eq(0);$("body",document).css("cursor","se-resize");return false};lwRTE_resizer.mouseup=function(b,a){b.drag=false;$("body",document).css("cursor","auto");return false};lwRTE_resizer.mousemove=function(d,c){if(d.drag){c=(typeof(c)=="undefined")?window.event:c;var a=Math.max(1,d.rte_zone.width()+c.screenX-d.event.screenX);var b=Math.max(1,d.rte_obj.height()+c.screenY-d.event.screenY);d.rte_zone.width(a);d.rte_obj.height(b);d.event=c}return false};var lwRTE=function(a,b){this.css=[];this.css_class=b.frame_class||"";this.base_url=b.base_url||"";this.width=b.width||$(a).width()||"100%";this.height=b.height||$(a).height()||350;this.iframe=null;this.iframe_doc=null;this.textarea=null;this.event=null;this.range=null;this.toolbars={rte:"",html:""};this.controls={rte:{},html:{}};$.extend(this.controls.rte,b.controls_rte||{});$.extend(this.controls.html,b.controls_html||{});$.extend(this.css,b.css||{});if(document.designMode||document.contentEditable){$(a).wrap($("<div></div>").addClass("rte-zone").width(this.width));$('<div class="rte-resizer"><a href="#"></a></div>').insertAfter(a);var c=new lwRTE_resizer(a);$(".rte-resizer a",$(a).parents(".rte-zone")).mousedown(function(d){$(document).mousemove(function(f){return lwRTE_resizer.mousemove(c,f)});$(document).mouseup(function(f){return lwRTE_resizer.mouseup(c,f)});return lwRTE_resizer.mousedown(c,d)});this.textarea=a;this.enable_design_mode()}};lwRTE.prototype.editor_cmd=function(c,a){this.iframe.contentWindow.focus();try{this.iframe_doc.execCommand(c,false,a)}catch(b){}this.iframe.contentWindow.focus()};lwRTE.prototype.get_toolbar=function(){var a=(this.iframe)?$(this.iframe):$(this.textarea);return(a.prev().hasClass("rte-toolbar"))?a.prev():null};lwRTE.prototype.activate_toolbar=function(c,a){var b=this.get_toolbar();if(b){b.remove()}$(c).before($(a).clone(true))};lwRTE.prototype.enable_design_mode=function(){var a=this;a.iframe=document.createElement("iframe");a.iframe.frameBorder=0;a.iframe.frameMargin=0;a.iframe.framePadding=0;a.iframe.width="100%";a.iframe.height=a.height||"100%";a.iframe.src="javascript:void(0);";if($(a.textarea).attr("class")){a.iframe.className=$(a.textarea).attr("class")}if($(a.textarea).attr("id")){a.iframe.id=$(a.textarea).attr("id")}if($(a.textarea).attr("name")){a.iframe.title=$(a.textarea).attr("name")}if($(self.textarea).attr('tabindex')){self.iframe.tabIndex=$(self.textarea).attr('tabindex')}var f=$(a.textarea).val().replace('&','&amp;');$(a.textarea).hide().after(a.iframe).remove();a.textarea=null;var c="";for(var b in a.css){c+="<link type='text/css' rel='stylesheet' href='"+a.css[b]+"' />"}var g=(a.base_url)?"<base href='"+a.base_url+"' />":"";var d=(a.css_class)?"class='"+a.css_class+"'":"";if($.browser.mozilla&&$.trim(f)==''){f='<br>'}var j="<html><head>"+g+c+"</head><body "+d+">"+f+"</body></html>";a.iframe_doc=a.iframe.contentWindow.document;try{a.iframe_doc.designMode="on"}catch(h){$(a.iframe_doc).focus(function(){a.iframe_doc.designMode()})}a.iframe_doc.open();a.iframe_doc.write(j);a.iframe_doc.close();$(a.iframe_doc).bind('keypress',function(z){if(z.keyCode===9){z.preventDefault();$('.submit[type=submit]').focus();}});if(!a.toolbars.rte){a.toolbars.rte=a.create_toolbar(a.controls.rte)}a.activate_toolbar(a.iframe,a.toolbars.rte);$(a.iframe).parents("form").submit(function(){a.disable_design_mode(true)});$(a.iframe_doc).mouseup(function(e){if(a.iframe_doc.selection){a.range=a.iframe_doc.selection.createRange()}a.set_selected_controls((e.target)?e.target:e.srcElement,a.controls.rte)});$(a.iframe_doc).blur(function(e){if(a.iframe_doc.selection){a.range=a.iframe_doc.selection.createRange()}});$(a.iframe_doc).keyup(function(e){a.set_selected_controls(a.get_selected_element(),a.controls.rte)});a.editor_cmd("styleWithCSS",true);a.editor_cmd("useCSS",true)};lwRTE.prototype.disable_design_mode=function(b){var a=this;a.textarea=(b)?$('<input type="hidden" />').get(0):$("<textarea></textarea>").width("100%").height(a.height).get(0);if(a.iframe.className){a.textarea.className=a.iframe.className}if(a.iframe.id){a.textarea.id=a.iframe.id}if(a.iframe.title){a.textarea.name=a.iframe.title}$(a.textarea).val($("body",a.iframe_doc).html());$(a.iframe).before(a.textarea);if(!a.toolbars.html){a.toolbars.html=a.create_toolbar(a.controls.html)}if(b!=true){$(a.iframe_doc).remove();$(a.iframe).remove();a.iframe=a.iframe_doc=null;a.activate_toolbar(a.textarea,a.toolbars.html)}};lwRTE.prototype.toolbar_click=function(f,d){var b=d.exec;var a=d.args||[];var g=(f.tagName.toUpperCase()=="SELECT");$(".rte-panel",this.get_toolbar()).remove();if(b){if(g){a.push(f)}try{b.apply(this,a)}catch(c){}}else{if(this.iframe&&d.command){if(g){a=f.options[f.selectedIndex].value;if(a.length<=0){return}}this.editor_cmd(d.command,a)}}};lwRTE.prototype.create_toolbar=function(d){var c=this;var b=$("<div></div>").addClass("rte-toolbar").width("100%").append($("<ul></ul>")).append($("<div></div>").addClass("clear"));var h,a;for(var f in d){if(d[f].separator){a=$("<li></li>").addClass("separator")}else{if(d[f].init){try{d[f].init.apply(d[f],[this])}catch(g){}}if(d[f].select){h=$(d[f].select).change(function(i){c.event=i;c.toolbar_click(this,d[this.className]);return false})}else{h=$("<a href='#'></a>").attr("title",(d[f].hint)?d[f].hint:f).attr("rel",f).click(function(i){c.event=i;c.toolbar_click(this,d[this.rel]);return false})}a=$("<li></li>").append(h.addClass(f))}$("ul",b).append(a)}$(".enable",b).click(function(){c.enable_design_mode();return false});$(".disable",b).click(function(){c.disable_design_mode();return false});return b.get(0)};lwRTE.prototype.create_panel=function(h,c){var i=this;var e=i.get_toolbar();if(!e){return false}$(".rte-panel",e).remove();var f,b;var d=i.event.pageX;var g=i.event.pageY;var a=$("<div></div>").hide().addClass("rte-panel").css({left:d,top:g});$("<div></div>").addClass("rte-panel-title").html(h).append($("<a class='close' href='#'>X</a>").click(function(){a.remove();return false})).mousedown(function(){f=true;return false}).mouseup(function(){f=false;return false}).mousemove(function(j){if(f&&b){d-=b.pageX-j.pageX;g-=b.pageY-j.pageY;a.css({left:d,top:g})}b=j;return false}).appendTo(a);if(c){a.width(c)}e.append(a);return a};lwRTE.prototype.get_content=function(){return(this.iframe)?$("body",this.iframe_doc).html():$(this.textarea).val()};lwRTE.prototype.set_content=function(a){(this.iframe)?$("body",this.iframe_doc).html(a):$(this.textarea).val(a)};lwRTE.prototype.set_selected_controls=function(b,l){var h=this.get_toolbar();if(!h){return false}var k,a,d,f,m,c,j;try{for(k in l){f=l[k];d=$("."+k,h);d.removeClass("active");if(!f.tags){continue}a=b;do{if(a.nodeType!=1){continue}m=a.nodeName.toLowerCase();if($.inArray(m,f.tags)<0){continue}if(f.select){d=d.get(0);if(d.tagName.toUpperCase()=="SELECT"){d.selectedIndex=0;for(c=0;c<d.options.length;c++){j=d.options[c].value;if(j&&((f.tag_cmp&&f.tag_cmp(a,j))||m==j)){d.selectedIndex=c;break}}}}else{d.addClass("active")}}while(a=a.parentNode)}}catch(g){}return true};lwRTE.prototype.get_selected_element=function(){var c,b,a;var d=this.iframe.contentWindow;if(d.getSelection){try{b=d.getSelection();a=b.getRangeAt(0);c=a.commonAncestorContainer}catch(f){return false}}else{try{b=d.document.selection;a=b.createRange();c=a.parentElement()}catch(f){return false}}return c};lwRTE.prototype.get_selection_range=function(){var a=null;var c=this.iframe.contentWindow;this.iframe.focus();if(c.getSelection){a=c.getSelection().getRangeAt(0);if($.browser.opera){var b=a.startContainer;if(b.nodeType===Node.TEXT_NODE){a.setStartBefore(b.parentNode)}}}else{this.range.select();a=this.iframe_doc.selection.createRange()}return a};lwRTE.prototype.get_selected_text=function(){var a=this.iframe.contentWindow;if(a.getSelection){return a.getSelection().toString()}this.range.select();return a.document.selection.createRange().text};lwRTE.prototype.get_selected_html=function(){var b=null;var d=this.iframe.contentWindow;var a=this.get_selection_range();if(a){if(d.getSelection){var c=document.createElement("div");c.appendChild(a.cloneContents());b=c.innerHTML}else{b=a.htmlText}}return b};lwRTE.prototype.selection_replace_with=function(b){var a=this.get_selection_range();var c=this.iframe.contentWindow;if(!a){return}this.editor_cmd("removeFormat");if(c.getSelection){a.deleteContents();a.insertNode(a.createContextualFragment(b));this.editor_cmd("delete")}else{this.editor_cmd("delete");a.pasteHTML(b)}};
