﻿if (typeof (__dnn_m_aNamespaces) == 'undefined') var __dnn_m_aNamespaces = new Array();
function dnn_smilePicker() {
    this.pns = 'dnn';
    this.ns = 'smilePicker';
    this.dependencies = 'dnn,dnn.dom'.split(',');
    this.isLoaded = false;
    this.paletta = null;
    this.colorBtn = null;
    this.overedImg = null;
    this.smiles = null;
    this.imgFormat = "<img src='{1}' id='{0}'/>";
}
dnn_smilePicker.prototype.init = function() {
    if (this.paletta == null) {
        var div = document.createElement("div");
        div.setAttribute("id", "smile_Picker_paletta");
        div.className = "SmilesPanel";
        //Messer.Modules.MesSerChat.MesSerChatService.GetSmiles(null, Function.createDelegate(this, this.getSmiles), null, div);
        this.paletta = div;
        dnn.dom.addSafeHandler(this.paletta, "onclick", this, "hidePaletta");
    }
}
dnn_smilePicker.prototype.codesToSmiles = function(msg) {
    try {
        return msg.replace(/#(\d+)#/g, function($1) { return (dnn.smilePicker.smiles[arguments[1]] == null ? arguments[0] : String.format(dnn.smilePicker.imgFormat, 6, dnn.smilePicker.smiles[arguments[1]])) });
    }
    catch (e) { return msg; }
}

dnn_smilePicker.prototype.getSmiles = function(res, context) {
    this.smiles = res;
    var key;
    var imgs = new Sys.StringBuilder();
    imgs.append("<table cellspacing='0' cellpadding='0' border='0'><tr>");
    for (var i = 0; i < this.smiles.length; i++) {
        key = "#" + i + "#";
        imgs.append("<td>");
        imgs.append(String.format(this.imgFormat, key, this.smiles[i]));
        imgs.append("</td>");
        if ((i + 1) % 5 == 0)
            imgs.append("</tr><tr>");
    }
    imgs.append("</table>");
    context.innerHTML = imgs.toString();
    
    var oDimsPal = new dnn.dom.positioning.dims(this.paletta);
    var palettaHeight = oDimsPal.h;
    var palettaWidth = oDimsPal.w;
    var oDimsPic = new dnn.dom.positioning.dims(this.colorBtn);
    this.paletta.style.left = (oDimsPic.l - palettaWidth < 0 ? oDimsPic.l + oDimsPic.w : oDimsPic.l - palettaWidth)+"px";
    this.paletta.style.top = (oDimsPic.t - palettaHeight < 0 ? oDimsPic.t + oDimsPic.h : oDimsPic.t - palettaHeight)+"px";
    
    
}

dnn_smilePicker.prototype.SelectSmile = function(btnImg, callBackFunc) {
    var o = btnImg;
    if (this.paletta.parentElement == null) {
        document.body.appendChild(this.paletta);
        Messer.Modules.MesSerChat.MesSerChatService.GetSmiles(null, Function.createDelegate(this, this.getSmiles), null, this.paletta);
    }


    var oDimsPal = new dnn.dom.positioning.dims(this.paletta);
    var palettaHeight = oDimsPal.h;
    var palettaWidth = oDimsPal.w;
    this.callBackFunction = callBackFunc;
    if (this.colorBtn != o)
        this.paletta.style["visibility"] = 'hidden';

    this.colorBtn = o;
    var oDimsPic = new dnn.dom.positioning.dims(o);
    this.paletta.style.left = oDimsPic.l - palettaWidth < 0 ? oDimsPic.l + oDimsPic.w : oDimsPic.l - palettaWidth;
    this.paletta.style.top = oDimsPic.t - palettaHeight < 0 ? oDimsPic.t + oDimsPic.h : oDimsPic.t - palettaHeight;
    this.paletta.style["visibility"] = this.paletta.style["visibility"] == "hidden" ? "visible" : "hidden";
    var bShow = this.paletta.style["visibility"] == 'visible' ? true : false;
    dnn.dom.positioning.placeOnTop(this.paletta, bShow, '')
}

dnn_smilePicker.prototype.hidePaletta = function(e, obj) {
    var o = e.target || e.srcElement;
    if (o.tagName == "IMG") {
        this.paletta.style.visibility = "hidden";
        dnn.dom.positioning.placeOnTop(this.paletta, false, '')
        if (dnn.smilePicker.callBackFunction) {
            return this.callBackFunction(o)
        }
    }
}

dnn_smilePicker.prototype.dependenciesLoaded = function() {
    return (typeof (dnn) != 'undefined' && typeof (dnn.dom) != 'undefined');
}

dnn_smilePicker.prototype.loadNamespace = function() {
    if (this.isLoaded == false) {
        if (this.dependenciesLoaded()) {
            dnn.smilePicker = this;
            this.isLoaded = true;
            dnn.smilePicker.init();
        }
    }
}

__dnn_m_aNamespaces[__dnn_m_aNamespaces.length] = new dnn_smilePicker();
for (var i = __dnn_m_aNamespaces.length - 1; i >= 0; i--)
    __dnn_m_aNamespaces[i].loadNamespace();