
var smile = /:([a-z]+):/gi;
var smile_path = '/_images/evoler/smile/';
var smile_path_2 = '/_images/evoler/smile/adds/';
var smile_img = ['angry.png','bigsmile.png','cool.png','doubt.png','inlove.png','nerdy.png','pleased.png','scared.png','smiley.png','smirking.png','snuffy.png','suprised.png','winking.png','worried.png'];

var smile_img_2 = ['sm01.png','sm02.png','sm03.png','sm04.png','sm05.png','sm06.png','sm07.png','sm08.png','sm09.png','sm10.png','sm11.png','sm12.png','sm13.png','sm14.png'];

var smile_desc = {};

smile_desc.en = ['angry','bigsmile','cool','doubt','inlove','nerdy','pleased','scared','smiley','smirking','snuffy','suprised','winking','worried'];
smile_desc.ru = ['злость','смех','крутой','сомнение','влюблённый','очкарик','довольный','испуганный','улыбка','ухмылка','неприязнь','удивлённый','подмигнуть','волнение'];
smile_desc.lv = ['ļauns','smiekli','stāvs','šaubas','iemīlējies','briļļainais','apmierināts','izbaidīts','smaids','smīns','antipātija','pārsteigts','piemirkšķināt','saviļņojums'];

var smile_ptrn = [' :angry: ',' :bigsmile: ',' :cool: ',' :doubt: ',' :inlove: ',' :nerdy: ',' :pleased: ',' :scared: ',' :smiley: ',' :smirking: ',' :snuffy: ',' :suprised: ',' :winking: ',' :worried: '];

$.fn.parse = function()
{
    var result = '';    
    $(this).each(function(){
        result = $(this).html();
        result = result.replace(smile, '<img src="'+smile_path+'$1.png" alt="$1"/>');
        $(this).html(result);
    });
}

$.fn.setCursorPosition = function(pos){
    if ($(this).get(0).setSelectionRange)
    {
      $(this).get(0).setSelectionRange(pos, pos);
    }
    else if ($(this).get(0).createTextRange)
    {
      var range = $(this).get(0).createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      range.select();
    }
};

function open_smile(edit, elem){

    if (elem == undefined) { elem='#global_system_message';}
    var smile_dlg = $(elem);
    smile_dlg.dialog('option', 'title', 'Smiles');
    var html = '';
    var result = '';
    var i;
    for (i=0;i<smile_img.length;++i)
    {
        html += '<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc[LANG][i]+'" alt="'+smile_desc[LANG][i]+'" onclick="insert_smile(\''+edit+'\','+i+')" /></td>';
        if ((i % 7) == 0 && (i != 0))
        {
            result += '<tr>' + html + '</tr>';
            html = '';            
        }
    }
    result += '<tr>'+html+'</tr>';
    smile_dlg.html('<table>'+result+'</table>');
    smile_dlg.dialog('option', 'buttons', {'OK':function(){smile_dlg.dialog('close');$(edit).focus();}});
    smile_dlg.dialog('open');
    $(edit).focus();
}

function insert_smile(edit, id)
{
    var pos = $(edit).getSelection();
    var posplus = pos.start + smile_ptrn[id].length;
    $(edit).val($(edit).val().substring(0, pos.start) + smile_ptrn[id] + $(edit).val().substring(pos.end, $(edit).val().length));
    $(edit).setCursorPosition(posplus);
}

/* == hz ==

function open_smile(edit,lang){
    var smile_dlg = $('#global_system_message');
    lang = LANG;
    smile_dlg.dialog('option', 'title', 'Smiles');
    var html = '';
    var result = '';
    var i;
    for (i=0;i<smile_img.length;++i){
	switch(lang){
		case "ru":
			html += '<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc_ru[i]+'" alt="'+smile_desc_ru[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
		
		case "lv":
			html += '<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc_lv[i]+'" alt="'+smile_desc_lv[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
	
		case "en":
			 html += '<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc[i]+'" alt="'+smile_desc[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
	}
       
        if ((i % 7) == 0 && (i != 0))
        {
            result += '<tr>' + html + '</tr>';
            html = '';            
        }
    }
    result += '<tr>'+html+'</tr>';
    smile_dlg.html('<table>'+result+'</table>');
    smile_dlg.dialog('option', 'buttons', {'OK':function(){smile_dlg.dialog('close');$(edit).focus();}});
    smile_dlg.dialog('open');
}


function insert_smile(edit, id){
    //var pos = $(edit).selection.createRange().text;
	if(document.selection){
			var pos = $(edit).createRange();
			var pos = pos.text;
	}
	else{
		if($(edit).getSelection){
			var pos = $(edit).getSelection();
		}
	}
    
    var posplus = pos.start + smile_ptrn[id].length;
   // var posplus_ie = pos_ie.start + smile_ptrn[id].length;

   // $(edit).html($(edit).html().substring(0, pos_ie.start) + smile_ptrn[id] + $(edit).html().substring(pos_ie.end, $(edit).html().length));
    // $(edit).setCursorPosition(posplus_ie);
    $(edit).val($(edit).val().substring(0, pos.start) + smile_ptrn[id] + $(edit).val().substring(pos.end, $(edit).val().length));
    $(edit).setCursorPosition(posplus);
}



//-------------------------------------------------------------------------------------------------------------------------------->
//-------------------------------------------------------------------------------------------------------------------------------->
//-------------------------------------------------------------------------------------------------------------------------------->
function open_smile_div(lang){
if($("#smile_div").is(":empty")){

var html = '<table><tr>';
var result = '';
var i;
for (i=0;i<smile_img.length;++i){
	switch(lang){
		case "ru":
			html +=
		'<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc_ru[i]+'" alt="'+smile_desc_ru[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
		
		case "lv":
			html +=
		'<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc_lv[i]+'" alt="'+smile_desc_lv[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
	
		case "en":
			 html +=
		'<td><img src="'+smile_path+smile_img[i]+'" title="'+smile_desc[i]+'" alt="'+smile_desc[i]+'" onclick="insert_smile_xBrowsers('+i+')" /></td>';
		break;
	}
	if(i == 17){ // Esli 8 smailov prorisoval, perehodim na sled. stroku
		html += '</tr><tr>';
	}
}
html += '</tr><table>';
$("#smile_div").html(html);
$("#smile_div").show("fast");
}
else{
	$("#smile_div").empty();
	$("#smile_div").hide("fast");	
}
}
//-------------------------------------------------------------------------------------------------------------------------------->
function strip(html){
	var tmp = document.createElement("DIV");
	tmp.innerHTML = html;
	return tmp.textContent||tmp.innerText;
}
//----------------------------------------------------------------------> FOR TEXTAREA
function insert_smile_xBrowsers(id){
	var CARRET = getCaretPos("text");
	var SMILE = smile_ptrn[id];
	var FULL_TXT = $("#text").val();
	var ELEMENT = document.getElementById("text");
	var PART_1 = FULL_TXT.substring(0, CARRET);
	var PART_2 = FULL_TXT.substring(CARRET, FULL_TXT.length);
	$("#text").val(PART_1+SMILE+PART_2);
	setCaretToPos(ELEMENT, CARRET+SMILE.length);
}
function insert_smile_xBrowsers_BOX(id,daddy_id){
	var real_id = daddy_id.substring(9,daddy_id.length);
	var CARRET = getCaretPos("text_"+real_id);
	var SMILE = smile_ptrn[id];
	var FULL_TXT = $("#text_"+real_id).val();
	var ELEMENT = document.getElementById("text_"+real_id);
	var PART_1 = FULL_TXT.substring(0, CARRET);
	var PART_2 = FULL_TXT.substring(CARRET, FULL_TXT.length);
	$("#text_"+real_id).val(PART_1+SMILE+PART_2);
	setCaretToPos(ELEMENT, CARRET+SMILE.length);
}
function setCaretToPos (input, pos) {
  setSelectionRange(input, pos, pos);
}
function setSelectionRange(input, selectionStart, selectionEnd) {
	if (input.setSelectionRange) {
		input.focus();
    		input.setSelectionRange(selectionStart, selectionEnd);
  	}
  	else if (input.createTextRange) {
    		var range = input.createTextRange();
    		range.collapse(true);
    		range.moveEnd('character', selectionEnd);
    		range.moveStart('character', selectionStart);
    		range.select();
 	     }
}
//----------------------------------------------------------------------> FOR TEXTAREA

//----------------------------------------------------------------------> FOR DIV
/*function insert_smile_xBrowsers(id){
	var carret_pos = getCursorPos();				//Works - Позиция курсора в DIV'e (CONTENTEDITABLE) - Позиция нового смайлика в диве
	//alert(carret_pos);
	var FULL_TEXT = $('#div_text').html();				//Works - Текст(HTML вида) - в диве
	var SMILE = '<div style="display: inline;"><img src="'+smile_path_2+smile_img_2[id]+'" width="25" height="25"></div>';
	var SMILE_LENGTH = SMILE.length;
	if($('#div_text img').length == 0){ //Нет смайликов
		var PART_1 = FULL_TEXT.substring(0, carret_pos);				//Works - Первая часть ТЕКСТА		(Между ними 
		var PART_2 = FULL_TEXT.substring(carret_pos, FULL_TEXT.length); 		//Works - Вторая часть ТЕКСТА			вставляется смайлик)
	} 	
	else{	//Есть смайлики				
		//Позицию нового смайлика - carret_pos;
		var img_count = $('#div_text').find('div').length; 	//Кол-во картинок, не считая новой, ктр добавим
		var coord = 0;
		var SWAPED = '';
		//Нарезка строки
		for(i=0; i<img_count; i++){
			var img_pos = FULL_TEXT.indexOf('<div'); 					//Позиция текущего смайлика	
			var TMP_STR = FULL_TEXT.substring(coord, img_pos);			//Строка ДО текущего смайлика		abc    		где строка(abc:SMILE:)
			var TMP_SMILE = FULL_TEXT.substring(img_pos, img_pos+SMILE_LENGTH); 	//Вырезанные смайл				:SMILE:		где строка(abc:SMILE:)
			coord = img_pos+SMILE_LENGTH;						//Переход, чтобы найти след СМАЙЛИК
			SWAPED += TMP_STR + 'S';
		}
		//Присоединяем последнюю часть(конец)
		SWAPED += FULL_TEXT.substring(coord, FULL_TEXT.length);
		var PART_1 = SWAPED.substring(0, carret_pos);				//Works - Первая часть ТЕКСТА		(Между ними 
		
		var PART_2 = SWAPED.substring(carret_pos, FULL_TEXT.length); 		//Works - Вторая часть ТЕКСТА			вставляется смайлик)
		alert("PART_1: "+PART_1+", PART_2: "+PART_2);
	}
	//var NEW_POS = PART_1.length+SMILE.length;				//Works - Новая позиция курсора(для фокуса, после вставки смайла)
	var NEW_HTML = PART_1 + SMILE + PART_2;				//Works - Новый HTML
	$('#div_text').html(NEW_HTML);						//Works - Впихиваем Новый HTML
}*/
//----------------------------------------------------------------------> FOR DIV
/*function setCursor(node,pos){
	var node = (typeof node == "string" || 
	node instanceof String) ? document.getElementById(node) : node;
	if(!node){
		return false;
	}else if(node.createTextRange){
			var textRange = node.createTextRange();
			textRange.collapse(true);
			textRange.moveEnd(pos);
			textRange.moveStart(pos);
			textRange.select();
			return true;
	      }else if(node.setSelectionRange){
				node.setSelectionRange(pos,pos);
				return true;
		    }
	return false;
}*/
//------------------------------------------------>
/*function getCursorPos(){ //Находим позицию курсора в CONTENTEDITABLE DIV
	var cursorPos;
	if(window.getSelection){
		var selObj = window.getSelection();
		var selRange = selObj.getRangeAt(0);
		cursorPos =  findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset;
		/* Может глючить, если поле(документ) длинее, чем 32767 символов 
	}
	else if(document.selection){
		var range = document.selection.createRange();
		var bookmark = range.getBookmark();
		/* Может глючить, если поле(документ) длинее, чем 65535 символов 
		cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] - опасная хрень - 
	     }
	return cursorPos;	
}*/
//------------------------------------------------>
function findNode(list, node){
	for (var i = 0; i < list.length; i++){
		if(list[i] == node){
			return i;
		}
	}
	return -1;
}
//------------------------------------------------>
/* NE STIRATJ ETO - UBJU */
function getCaretPos(objName) {
	var obj = document.getElementById(objName);
	obj.focus();
	if (document.selection) { // IE
		var sel = document.selection.createRange();
		var clone = sel.duplicate();
		sel.collapse(true);
		clone.moveToElementText(obj);
		clone.setEndPoint('EndToEnd', sel);
		return clone.text.length;
	} else if (obj.selectionStart!==false) return obj.selectionStart; // Gecko
		else return 0;
}
//-------------------------------------------------------------------------------------------------------------------------------->

