﻿// Determine browser type and stuff.
// Borrowed from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var insertMode = 0;

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

var is_win  = ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac  = (myAgent.indexOf("mac")!=-1);

var dom     = (document.getElementById && !document.all);

function insertEmo( emo, box ) {
    box = document.getElementById(box);
    if ( !box ) return;
    
    var sel = _getTASelection(box);
    if (!sel) sel = new Array('');

    _insertAtSelection(box, sel, " " + emo + " ")
}
    
function _insertAtSelection(obj_ta, sel, val)
{
    obj_ta.focus();

    if(sel.length > 2){
        var txt  = obj_ta.value.substring(0, sel[1]);
        txt += val;
        txt += obj_ta.value.substring(sel[2], obj_ta.value.length);
        obj_ta.value = txt;

        if(obj_ta.setSelectionRange){
            sel[2] = sel[1] + val.length;
            if(insertMode == 1 || !sel[0].length)
		        obj_ta.setSelectionRange(sel[2], sel[2]);
	        else
		        obj_ta.setSelectionRange(sel[1], sel[2]);
        }
    }
    else if(sel.length == 2){
        var len = sel[1].text.length;
        sel[1].text = val;

        if(insertMode != 1 && len)
            sel[1].moveStart('character', -val.length);
        sel[1].select();
    }
    else {
        obj_ta.value = val;
    }

    obj_ta.focus();
}

// Returns a selection as described above
function _getTASelection(obj_ta)
{
    var sel;
    obj_ta.focus();

    if(obj_ta.setSelectionRange){
        var s = obj_ta.selectionStart;
        var e = obj_ta.selectionEnd;
        sel = obj_ta.value.substring(s, e);
        // Cut off blank at end
        if(s < e && sel.charAt(sel.length - 1) == ' '){
	        sel = sel.substring(0, sel.length - 1);
	        e--;
        }

        return new Array(sel, s, e);
    }
    else if(!dom && !window.opera && !is_mac){
        sel = document.selection;
        var rng = sel.createRange();

        if((sel.type == "Text" || sel.type == "None") && rng != null){
	        rng.collapse;
	        // Cut off blank at end
	        if(rng.text.length > 1 && rng.text.charAt(rng.text.length - 1) == ' ')
		        rng.moveEnd('character', -1);
            rng.select();

	        return new Array(rng.text, rng);
        }
    }

    return new Array('');
}


