
var timers = Array ();
Evonux.Control = {}



/* ====================================================================== */
/* LISTS
/* ====================================================================== */

Evonux.List = {}
Evonux.List.checkItem = function (item, form)
{
    cell = item.getParent ();
    row = cell.getParent ();
    if (!item.checked)
    row.removeClass ("selected");
    else
    row.addClass ("selected");
    Evonux.List.checkIds (form);
}

Evonux.List.checkItems = function (form)
{    
    var         t1 = $$ ("input.chk");

    for (var i = 0; i < t1.length; i++)
    {
        var item = t1[i];

        if (item.id != "chk-all")
            {
                cell = item.getParent ();
                row = cell.getParent ();
                if ($('chk-all').checked)
                    {
                        row.addClass ("selected");
                        item.checked = true;
                    }
                else
                    {
                        row.removeClass ("selected");
                        item.checked = false;
                    }
            }
    }
    Evonux.List.checkIds (form);
}

Evonux.List.checkIds = function (form)
{
    var         t1 = $$ ("input.chk");
    var         ids = "";

    for (var i = 0; i < t1.length; i++)
    {
        var item = t1[i];

        if (item.id != "chk-all")
            {
                if (item.checked)
                    {
			var id = item.id;
                        ids += id.substring (4, id.length) + ",";
                    }
            }
    }
    $(form).oids.value = ids.substring (0, ids.length - 1);
}

Evonux.List.changeState = function (select, prefix, label)
{
    var		frm = $('frm-' + prefix);

    if (select.selectedIndex && frm.oids.value)
    {
	if (confirm (label))
	{
	    Evonux.Page.get ("module=" + frm.module.value + "&action=" + select.value + "&oid=" + frm.oids.value, "", function () { Evonux.Control.reloadList (prefix); });
	}
    }
    select.selectedIndex = 0;
}



/**
 * Display message 
 */
Evonux.Control.showMsg = function (prefix, text)
{    
    $('msg-' + prefix).innerHTML = text;
    $('msg-box-' + prefix).style.display = "block";
}

/**
 * Reload a sorted list (grid)
 */
Evonux.Control.reloadList = function (prefix, params)
{
    var		frm = $('frm-' + prefix);

    Evonux.Page.get ('module=' + frm.module.value + '&action=getlist&update=1' + (params ? params : ''), 'list-' + prefix);
}

/**
 * Disable all inactive tabs in panel
 */
Evonux.Control.showTab = function (num, len)
{
    for (var i = 0; i < len; i++)
    {
	$('tab_' + i).removeClass ("active");
	$('pane_' + i).removeClass ("active");
    }
    $('tab_' + num).addClass ("active");
    $('pane_' + num).addClass ("active");
}

/**
 * Update checkbox hidden value
 */
Evonux.Control.updateCheckbox = function (chk)
{
    var		name;

    name = chk.name.substring (0, chk.name.length - 4);
    $(name).value = (chk.checked ? '1' : '0');
}

/**
 * User logout if message confirmed
 */
Evonux.Control.logout = function (msg)
{
    if (confirm (msg))
    {
	Evonux.Page.get ('module=user&action=logout');
    }
}

/**
 * Init all wysiwyg textareas
 */
Evonux.Control.initWysiwyg = function ()
{
	tinyMCE.init (
	{
	    /* Interface configuration */
	    document_base_url: U_ROOT + '/',
	    mode : "textareas",
	    editor_selector : "simple",
	    theme : "simple",
	    language : "fr",
	    content_css : U_ROOT + "/css/main.css",

	    /* Display */
	    width: "665",
	    height: "200"
	});
 
	tinyMCE.init(
	{
	    /* Interface configuration */
	    dialog_type: 'modal',
	    document_base_url: U_ROOT + '/',
	    mode : "textareas",
            editor_selector : "advanced",
            theme : "advanced",
            language : "fr",
            content_css : U_ROOT + "/css/main.css",

	    /* Display */
	    width: "665",
	    height: "400",

	    /* Cleanup */
	    cleanup_on_startup : true,
	    cleanup: true,

	    /* Plugins */
            plugins : "inlinepopups,contextmenu,save,advlink,advimage,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template",
            theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect,|,image,link,unlink,template",
            theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,unlink,anchor,cleanup,help,code,|,insertdate,inserttime,|,forecolor,backcolor,|,visualchars",
            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
	    theme_advanced_blockformats : "p,div,h1,h2,h3,h4",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",		
            theme_advanced_resizing : true,
            extended_valid_elements : "iframe[src|width|height|name|align],a[name|class|href|target|title|onclick],img[class|src|border|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style],input[type|name|value|class|size|maxlength|onclick],object[width,height],param[name,value],embed[src,type,allowfullscreen,width,height]",

	    /* Advanced plugins */
	    external_link_list_url : U_ROOT + "/?module=tools&action=getWebpagesList&dyn=1",
            external_image_list_url : U_ROOT + "/?module=tools&action=getFilesList&dyn=1",
            template_external_list_url : U_ROOT + "/?module=tools&action=getTemplatesList&dyn=1",

            // URLs behavior
            relative_urls: false,
            convert_urls: false,
            document_base_url : U_ROOT + "/",
            remove_script_host: true
       });	
}

/**
 * Load WYSIWYG components
 */
Evonux.Control.loadWysiwyg = function ()
{
    $$('textarea.wysiwyg').each (function (el)
	{
	    tinyMCE.execCommand('mceAddControl', false, el.id);
	});
}

/**
 * Unload WYSIWYG components
 */
Evonux.Control.unloadWysiwyg = function ()
{
    $$('textarea.wysiwyg').each (function (el)
	{
	    tinyMCE.execCommand('mceRemoveControl', false, el.id);
	});
}

/**
 * Init text images once (GD)
 */
Evonux.Control.initText = function ()
{
    $$('h1,h2,a.top').each (Evonux.Control.evalText (el));
}

/**
 * Update text images (GD)
 */
Evonux.Control.updateText = function ()
{
    $$('h1,h2').each (Evonux.Control.evalText (el));
}

/**
 * Eval text images (GD)
 */
Evonux.Control.evalText = function (el)
{
    var     text = el.get ("text");
    var     colors = el.getStyle ('color').hexToRgb (true);
    var     color = colors[0] + "-" + colors[1] + "-" + colors[2];
    var     size = el.getStyle ('font-size'); 
    
    el.innerHTML = '<img src="' + U_ROOT + '/?module=tools&action=getText&text=' + text + '&size=' + size + '&color=' + color + '" />';
}


/**
 * Load text images (GD)
 */
Evonux.Control.initText = function ()
{
    $$('h1,h2,a.top').each (function (el)
	{
	    var     text = el.get ("text");
	    var     colors = el.getStyle ('color').hexToRgb (true);
	    var     color = colors[0] + "-" + colors[1] + "-" + colors[2];
	    var     size = el.getStyle ('font-size'); 

	    el.innerHTML = '<img src="' + U_ROOT + '/?module=tools&action=getText&text=' + text + '&size=' + size + '&color=' + color + '" />';
	});
}


/**
 * text images (GD)
 */
Evonux.Control.updateText = function ()
{
    $$('h1,h2').each (function (el)
	{
	    var     text = el.get ("text");
	    var     colors = el.getStyle ('color').hexToRgb (true);
	    var     color = colors[0] + "-" + colors[1] + "-" + colors[2];
	    var     size = el.getStyle ('font-size'); 

	    el.innerHTML = '<img src="' + U_ROOT + '/?module=tools&action=getText&text=' + text + '&size=' + size + '&color=' + color + '" />';
	});
}

/**
 * Save all Wysiwyg buffers
 */
Evonux.Control.saveWysiwyg = function ()
{
    tinyMCE.triggerSave ();
}

/**
 * Get a radio group value
 */
Evonux.Control.getRadioValue = function (group)
{
    var		len = group.length;

    for (var i = 0; i < len; i++)
    {
	if (group[i].checked)
	    {
		return group[i].value;
	    }
    }

    return 0;
}

/**
 * Swap 2 items contents
 */

Evonux.Control.swapContents = function (div1, div2)
{
    var buffer = $(div1).innerHTML;
    $(div1).innerHTML = $(div2).innerHTML;
    $(div2).innerHTML = buffer;
}

/**
 * Make blink 
 */
Evonux.Control.blink = function (div, timer)
{
    if (!$(div))
    return;

    clearInterval (timers[timer]);
    $(div).style.display = ($(div).style.display == "inline-block" ? "none" : "inline-block");
    timers[timer] = setInterval ("Evonux.Control.blink ('" + div + "', " + timer + ");", $(div).style.display == "inline-block" ? 1000 : 100);
}


/**
 * Upload file
 */

Evonux.Control.submitFile = function ()
{
    var		frm = $('frm-file');

    frm.submit ();
}

/**
 * Show web 2.0 loader
 */

Evonux.Control.showLoader = function ()
{
    var		top = (screen.height - 32) / 2;
    var		left = (screen.width - 32) / 2;
    var		loc = $('header').getPosition ();

    $('loader').setPosition ({x: loc.x + 764, y: loc.y + 195});
    $('loader').removeClass ('off');
}

/**
 * Hide web 2.0 loader
 */
Evonux.Control.hideLoader = function ()
{
    $('loader').addClass ('off');
}

/**
 * 
 */
Evonux.Control.launchOperation = function (prefix, link, msg)
{
    if (confirm (msg))
    {
	Evonux.Page.get (link, 'msg-' + prefix, function () { $('msg-box-' + prefix).style.display = 'block'; });
    }
}
