/* $Id: main.js 1416 2010-12-17 11:52:49Z benas $ */

$().ready(function(){
    $('body').data('dialog.template.buttons', '<button type="button" class="{$className}">{$title}</button>');
});

function _(text) { return text; }

var project = {};

/**
 * Dialog
 *
 * @param string message - Message
 */
project.dialog = function(message)
{
    var ranId = 'dialog_'+ project.randomCode(16);
    $('<div id="'+ ranId +'"><div class="confirmContent">'+ message +'</div></div>').dialog({
        width : 350
    });
    $('#'+ ranId).dialog('open');
    return ranId;
};

/**
 * Aler dialog
 *
 * @param string message - Message
 */
project.alert = function(message, msgTitle, msgButton)
{
    var ranId = 'dialog_'+ project.randomCode(16);
    $('<div id="'+ ranId +'" title="'+ (msgTitle !== undefined ? msgTitle : _('Pranešimas')) +'"><div class="confirmContent">'+ message +'</div></div>').dialog({
        width : 350,
        template : {
            classTitle : 'redNotice'
        },
        buttons : [
            {
                title : (msgButton !== undefined ? msgButton : _('Gerai')),
                action : function()
                {
                    $('#'+ ranId).dialog('remove');
                    return false;
                },
                template : {
                    className : 'icon_ok'
                }
            }
        ]
    });
    $('#'+ ranId).dialog('open');
    $('#'+ ranId +' .icon_ok').focus();
    return ranId;
};

/**
 * Confirm dialog
 *
 * @param string message   - Message
 * @param string callback  - Callback function
 * @param string msgTitle  - Title
 * @param string msgOk     - Button OK text
 * @param string msgCancel - Button Cancel text
 */
project.confirm = function(message, callback, msgTitle, msgOk, msgCancel)
{
    var ranId = 'dialog_'+ project.randomCode(16);
    $('<div id="'+ ranId +'" title="'+ (msgTitle !== undefined ? msgTitle : _('Patvirtinkite')) +'"><div class="confirmContent">'+ message +'</div></div>').dialog({
        width : 350,
        template : {
            classTitle : 'redNotice'
        },
        buttons : [
            {
                title : (msgOk !== undefined ? msgOk : _('Gerai')),
                action : function()
                {
                    if(typeof(callback) == 'string')
                        eval(callback);
                    else
                        callback();

                    $('#'+ ranId).dialog('remove');
                    return false;
                },
                template : {
                    className : 'icon_ok'
                }
            },
            {
                title : (msgCancel !== undefined ? msgCancel : _('Atšaukti')),
                action : function()
                {
                    $('#'+ ranId).dialog('remove');
                    return false;
                },
                template : {
                    className : 'icon_cancel'
                }
            }
        ]
    });
    $('#'+ ranId).dialog('open');
    $('#'+ ranId +' .icon_ok').focus();
    return ranId;
};

project.randomCode = function(length)
{
    var chars = 'abcdefghijklmnopqrstuvwxyz';
    var code = '';
    for(x = 0; x < length; x++)
    {
        i = Math.floor(Math.random() * chars.length);
        code += chars.charAt(i);
    }
    return code;
};

/**
 * set cookie
 *
 * @param string  name
 * @param string  value
 * @param integer time  - seconds
 */
function setCookie(name, value, time)
{
    if(time)
    {
        var date = new Date();
        date.setTime(date.getTime()+(time*1000));
        var expires = '; expires='+ date.toGMTString();
    }
    else var expires = '';
    document.cookie = name +'='+ value + expires +'; path=/';
}

/**
 * get cookie value
 *
 * @param string name
 */
function getCookie(name)
{
    var nameEQ = name + '=';
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

/**
 * delete cookie
 *
 * @param string name
 */
function removeCookie(name)
{
    this.setCookie(name,'',-1);
}

function disableForms ()
{
    $(':submit').attr("disabled","disabled");
}

function enableForms()
{
    $(':submit').attr("disabled","");
}

/**
 * webkit bugfix
 *
 * @param string selector - jQuery selector
 * @param bool   focus    - Fokusuoti elementą (nebūtinas)
 */
function activateTextarea(selector, focus)
{
    var val = $(selector).val();
    $(selector).removeAttr('disabled');
    if(val == '')
        $(selector).html(' ').select().html('');

    if(focus === undefined || !focus)
        $(selector).blur();
}

/**
 * Format number
 *
 * @param float|integer pnumber  - Skaičius
 * @param integer       decimals - Vietos po kablelio
 *
 * @return string
 */
function format_number(pnumber, decimals)
{
    if(isNaN(pnumber))
        return 0;

    if(pnumber=='')
        return 0;

    var snum = new String(pnumber);
    var sec = snum.split('.');
    var whole = parseFloat(sec[0]);
    var result = '';

    if(sec.length > 1)
    {
        var dec = new String(sec[1]);
        dec = String(parseFloat(sec[1]) / Math.pow(10, (dec.length - decimals)));
        dec = String(whole + Math.round(parseFloat(dec)) / Math.pow(10, decimals));
        var dot = dec.indexOf('.');
        if(dot == -1)
        {
            dec += '.';
            dot = dec.indexOf('.');
        }

        while(dec.length <= dot + decimals)
            dec += '0';

        result = dec;
    }
    else
    {
        var dot;
        var dec = new String(whole);
        dec += '.';
        dot = dec.indexOf('.');
        while(dec.length <= dot + decimals)
            dec += '0';

        result = dec;
    }
    return result;
}


var wysiwyg = {
    /**
     * Get value
     */
    get : function(field, driver)
    {
        if(driver === undefined)
            var driver = SYS_WYSIWYG;

        switch(driver)
        {
            case 'CKEditor':
                return CKEDITOR.instances[field].getData();
            break;
            case 'FCKeditor':
                return FCKeditorAPI.GetInstance(field).GetXHTML(true);
            break;
            case 'TinyMCE':
                return $('#'+field).tinymce().getContent();
            break;
            default:
                return false;
        }
    },

    /**
     * Get value (plain text)
     */
    getText : function(field, driver)
    {
        if(driver === undefined)
            var driver = SYS_WYSIWYG;

        switch(driver)
        {
            case 'CKEditor':
                return CKEDITOR.instances[field].document.getBody().$.textContent;
            case 'FCKeditor':
                var oDOM = FCKeditorAPI.GetInstance(field).EditorDocument;
                if(document.all)
                    return oDOM.body.innerText;

                var r = oDOM.createRange();
                r.selectNodeContents(oDOM.body);
                return r.toString();
            case 'TinyMCE':
                return $('#'+field).tinymce().getContent({ format: "text"});
            default:
                return false;
        }
    },

    /**
     * Set data
     */
    put : function(field, html, driver)
    {
        if(driver === undefined)
            var driver = SYS_WYSIWYG;

        switch(driver)
        {
            case 'CKEditor':
                CKEDITOR.instances[field].setData(html);
                break;
            case 'FCKeditor':
                FCKeditorAPI.GetInstance(field).SetData(html);
                break;
            case 'TinyMCE':
                $('#'+field).tinymce().setContent(html);
            break;
            default:
                return false;
        }
    },

    /**
     * Add data
     */
    add : function(field, html, driver)
    {
        if(driver === undefined)
            var driver = SYS_WYSIWYG;

        switch(driver)
        {
            case 'CKEditor':
                CKEDITOR.instances[field].insertHtml(html);
                break;
            case 'FCKeditor':
                FCKeditorAPI.GetInstance(field).InsertHtml(html);
                break;
            case 'TinyMCE':
                $('#'+field).tinymce().setContent($('#'+field).tinymce().getContent()+'<br />'+html+'<br />');
            break;
            default:
                return false;
        }
    },

    /**
     * Focus
     */
    focus : function(field, driver)
    {
        if(driver === undefined)
            var driver = SYS_WYSIWYG;

        switch(driver)
        {
            case 'CKEditor':
                CKEDITOR.instances[field].focus();
            break;
            case 'FCKeditor':
                FCKeditorAPI.GetInstance(field).Focus();
            break;
            case 'TinyMCE':
                $('#'+field).tinymce().focus();
            break;
            default:
                return false;
        }
    }
};

/** DEBUG */
function DUMP(obj) { var temp = ''; for(var x in obj) { temp += x + ": " + obj[x] + "\n"; } alert(temp); }
