﻿

function bbcodescript(previewurl,textboxid){

	jtextboxid='#'+textboxid;
    var messagebox=document.getElementById(textboxid);

    $("#emoticons>*").each(function() {
     $(this).click(function() {
	 
	 if (navigator.appName=="Microsoft Internet Explorer"){
	   selplaces = (getselection(textboxid));
	   var selStart = selplaces[0];
	   var selEnd = selplaces[1];
	  } else 
	  { var selStart = messagebox.selectionStart;
        var selEnd = messagebox.selectionEnd;
		};
        var messageboxval = messagebox.value ;
        var newvalue = messageboxval.substring(0,selStart) + $(this).attr("alt") + messageboxval.substring(selEnd,messageboxval.length);
        messagebox.value = newvalue;
		messagebox.focus();
//     $(jtextboxid).val($(jtextboxid).val()+$(this).attr("alt"))
   })});

    $("#messagepreview").hide();
	
    $("#previewbutton").click(function(){
	 $("#messagepreview").hide('slow');
	 $("#messagepreview").load(previewurl,{"text": $(jtextboxid).val()},
		function() { $("#messagepreview").prepend("תצוגה מקדימה:<br />").show('slow'); }
		);
	});
   
    $("#bbcode>*").each(function() {
     $(this).click(function() {
	  if (navigator.appName=="Microsoft Internet Explorer"){
	   selplaces = (getselection(textboxid));
	   var selStart = selplaces[0];
	   var selEnd = selplaces[1];
	  } else 
	  { var selStart = messagebox.selectionStart;
        var selEnd = messagebox.selectionEnd;
		};
        var messageboxval = messagebox.value ;
		var bbcodes = $(this).attr("bbcode");
		switch(bbcodes)
		{
		case "url":	
			var txt = 'לאיזו כתובת להפנות?<br /><input type="text" name="addrs" value="http://shuk.li" />';
			$.prompt(txt,{
				callback: function(v,n){
				if (v){
				var name=n.children('input').val();
				var prefix = (selEnd>selStart) ? ("[url "+name+"]") : ("[url]"+name); 
				var suffix = "[/url]";
				var newvalue = messageboxval.substring(0,selStart) + prefix + messageboxval.substring(selStart,selEnd) + suffix + messageboxval.substring(selEnd,messageboxval.length);
				messagebox.value = newvalue;
				messagebox.focus();
				}},
				buttons: { Ok: 'המשך'}
			});
			break;
		case "quote":
			var txt = 'ציטוט של מי?<br /><input type="text" name="quotea" value="שייקספיר" />';
			$.prompt(txt,{
				callback: function(v,n){
				if (v){
				var name=n.children('input').val();
				var prefix = (name) ? ("[quote ציטוט של "+name+"]") : ("[quote]"); 
				var suffix = "[/quote]";
				var newvalue = messageboxval.substring(0,selStart) + prefix + messageboxval.substring(selStart,selEnd) + suffix + messageboxval.substring(selEnd,messageboxval.length);
				messagebox.value = newvalue;
				messagebox.focus();
				}},
				buttons: { Ok: 'המשך'}
			});
			break;
		case "img":
			var txt = 'מה כתובת התמונה?<br /><input type="text" name="picurl" value="" />';
			$.prompt(txt,{
				callback: function(v,n){
				if (v){
				var name=n.children('input').val();
				var prefix = "[img "+messageboxval.substring(selStart,selEnd)+"]"; 
				var suffix = "[/img]";
				var newvalue = messageboxval.substring(0,selStart) + prefix + name + suffix + messageboxval.substring(selEnd,messageboxval.length);
				messagebox.value = newvalue;
				messagebox.focus();
				}},
				buttons: { Ok: 'המשך'}
			});
			break;
		default:
			var prefix = "["+bbcodes+"]";
			var suffix = "[/"+bbcodes+"]";
			var newvalue = messageboxval.substring(0,selStart) + prefix + messageboxval.substring(selStart,selEnd) + suffix + messageboxval.substring(selEnd,messageboxval.length);
			messagebox.value = newvalue;
			messagebox.focus();
		}
   })});
 }
 

function getselection(textboxid){ 
	var textarea = document.getElementById(textboxid);
	textarea.focus();
	var selection_range = document.selection.createRange().duplicate();

	if (selection_range.parentElement() == textarea) {    // Check that the selection is actually in our textarea
	// Create three ranges, one containing all the text before the selection,
	// one containing all the text in the selection (this already exists), and one containing all
	// the text after the selection.
	var before_range = document.body.createTextRange();
	before_range.moveToElementText(textarea);                    // Selects all the text
	before_range.setEndPoint("EndToStart", selection_range);     // Moves the end where we need it

	var after_range = document.body.createTextRange();
	after_range.moveToElementText(textarea);                     // Selects all the text
	after_range.setEndPoint("StartToEnd", selection_range);      // Moves the start where we need it

	var before_finished = false, selection_finished = false, after_finished = false;
	var before_text, untrimmed_before_text, selection_text, untrimmed_selection_text, after_text, untrimmed_after_text;

	// Load the text values we need to compare
	before_text = untrimmed_before_text = before_range.text;
	selection_text = untrimmed_selection_text = selection_range.text;
	after_text = untrimmed_after_text = after_range.text;

	// Check each range for trimmed newlines by shrinking the range by 1 character and seeing
	// if the text property has changed.  If it has not changed then we know that IE has trimmed
	// a \r\n from the end.
	do {
	  if (!before_finished) {
		  if (before_range.compareEndPoints("StartToEnd", before_range) == 0) {
			  before_finished = true;
		  } else {
			  before_range.moveEnd("character", -1)
			  if (before_range.text == before_text) {
				  untrimmed_before_text += "\r\n";
			  } else {
				  before_finished = true;
			  }
		  }
	  }
	  if (!selection_finished) {
		  if (selection_range.compareEndPoints("StartToEnd", selection_range) == 0) {
			  selection_finished = true;
		  } else {
			  selection_range.moveEnd("character", -1)
			  if (selection_range.text == selection_text) {
				  untrimmed_selection_text += "\r\n";
			  } else {
				  selection_finished = true;
			  }
		  }
	  }
	  if (!after_finished) {
		  if (after_range.compareEndPoints("StartToEnd", after_range) == 0) {
			  after_finished = true;
		  } else {
			  after_range.moveEnd("character", -1)
			  if (after_range.text == after_text) {
				  untrimmed_after_text += "\r\n";
			  } else {
				  after_finished = true;
			  }
		  }
	  }

	} while ((!before_finished || !selection_finished || !after_finished));

	// Untrimmed success test to make sure our results match what is actually in the textarea
	// This can be removed once you're confident it's working correctly
	var untrimmed_text = untrimmed_before_text + untrimmed_selection_text + untrimmed_after_text;
	var untrimmed_successful = false;
	if (textarea.value == untrimmed_text) {
	  untrimmed_successful = true;
	}
	// ** END Untrimmed success test

	var startPoint = untrimmed_before_text.length;
	var endPoint = startPoint + untrimmed_selection_text.length;
	var selected_text = untrimmed_selection_text;
	var selectionarray=new Array(2);
	selectionarray[0]=startPoint;
	selectionarray[1]=endPoint;
	return(selectionarray);
//	alert("Start Index: " + startPoint + "\nEnd Index: " + endPoint + "\nSelected Text\n'" + selected_text + "'");
}}