/**
 * @author Mailo
 * @class Objekt pro správu a vytváření Toolboxu
 * @description  Nejprve nacist tento skript pres &lt;scipt src a pred konec body
 * dat volani Toolbox.init(). Toolboxy se pak zobrazuji volanim
 * Toolbox.showToolbox(&lt;klicove slovo textu, ktery bude v toolbox>)
 *
 * @example
 * &lt;a class="toolbox-opener"
 *    href="javascript:Toolbox.showToolbox('#TAXI_TEXT#');">
 *          Další info
 * &lt;/a>
 * &lt;script type="text/javascript">
 * &frasl;* &lt;![CDATA[ *&frasl;
 * Toolbox.init(
 *      &lt;?php echo json_encode(Text::getTranslations('text_preklad_toolbox')); ?>
 * );
 * &frasl;* ]]&gt; *&frasl;
 * &lt;/script>
 * &lt;/body>
 *
 * @example
 * //Priklad struktury arrayTranslateToolbox
 * arrayTranslateToolbox : {
 *       'text-1' : 'Prvni texticek',
 *       'text-2' : 'Druhy texticek'
 *   },
 * @property {json} arrayTranslateToolbox Defaultni preklady
 * @property {string} toolboxHtml Html ze ktereho sklada toolbox
 */

var Toolbox = {
    /*
         * @example
         * 'text-1' : 'Prvni texticek',
         * 'text-2' : 'Druhy texticek'
         */
    arrayTranslateToolbox : {
        'text-1' : 'Prvni <strong>texticek</strong>',
        'text-2' : 'Druhy texticek'
    },
    toolboxHtml : '<div id="toolbox"><div><div id="toolbox-handle">\n\
        <a id="toolbox-close" href="javascript:Toolbox.hideToolbox();">[x]<span></span></a></div>\n\
        <div style="clear:both;"></div><div id="toolbox-content"></div></div></div>',

    /**
     * @param {json} jsonInput Data od uzivatele
     */
    init : function(jsonInput) {

        this.loadJson(jsonInput);
        this.createToolbox();
        this.turnToolboxDraggable();
        this.putToolboxUnderMouse();
    },

    /**
     * Nacte do prekladu data od uzivatele
     *
     * @param {json} jsonInput Data od uzivatele
     */
    loadJson : function(jsonInput) {

        if ( jsonInput != null ) {
            this.arrayTranslateToolbox = jsonInput;
        }
    },
    /**
     * Vlozi toolbox skoro pod mys, tak aby se zobrazil pod odkazem,
     * ktery ho otevrel
     *
     */
    putToolboxUnderMouse: function() {
        
        $('.toolbox-opener').hover( function(e) {

            var coordX = e.pageX;
            var coordY = e.pageY+20;

            var tooltipX = e.pageX + $('#toolbox').width();

            if (tooltipX > $(window).width()) {
                coordX = coordX - (tooltipX - $(window).width()) - 40;
            }

            $('#toolbox').css({
                position: 'absolute',
                left:      coordX,
                top:       coordY
            });
        });
    },

    /**
     * Vlozi do html pred konec body html toolboxu
     */
    createToolbox : function() {

        $('body').append(this.toolboxHtml);

        $('#toolbox-close').click(function() {
            $("#toolbox").hide();
        });
    },

    /**
     * Udela z html toolboxu prvek jQuery Draggable
     */
    turnToolboxDraggable : function() {

     	var timer;
        $("#toolbox").draggable({
            zIndex: 2000,
            width:  150,
            height:  150,
            ghosting: true,
            opacity: 0.3,
            handle: '#toolbox'
        });

        $("#toolbox").hide();
		
        $("#toolbox, .toolbox-opener").mouseout(function () {
            timer = setTimeout(function() {
                $("#toolbox").hide()
            }, 4000);
        });

        $("#toolbox, .toolbox-opener").mouseover(function () {
            clearTimeout(timer);
        });
    },

    /**
     * zobrazi toolbox
     * @param keyword Index textu, ktery chceme zobrazi
     * @param width
     */
    showToolbox : function(keyword, width)
    {
        if (width == null) {
            width = 150;
        }

        //this.hideToolbox();
            
        $('#toolbox-content').html(this.arrayTranslateToolbox[keyword]);
        $('#toolbox').show();
        $('#toolbox').css("width", width);
    },

    /**
     * schová toolbox
     */
    hideToolbox : function()
    {
        $('#toolbox').hide();
    }
};
