/**
 * @author Arnaud Métral <arnaud.metral@evonux.com>
 * @version 1.0
 * @copyright Evonux 2009
 *
 * Evonux.Page.js
 *
 */


Evonux.Page = {};

/*
 * XHR get
 */
Evonux.Page.get = function (/* data, container, onComplete, async */) 
{
    var		p_data = null;
    var		p_container = null;
    var		p_complete = function () {};
    var		p_async = true;

    // Get arguments
    if (arguments.length > 0)
    p_data = arguments[0] + "&dyn=1";
    if (arguments.length > 1)
    p_container = $(arguments[1]);
    if (arguments.length > 2)
    p_complete = arguments[2];    
    if (arguments.length > 3)
    p_async = arguments[3];    

    // Load XHR
    new Request.HTML ({url: U_ROOT + "/", data: p_data, update: p_container, onComplete: p_complete, async: p_async, evalScripts: true}).get ();
}

/*
 * XHR post
 */
Evonux.Page.post = function (/* data, container, onComplete, prefix */)
{
    var         p_data = null;
    var         p_container = null;
    var         p_complete = function () {};

    // Get arguments
    if (arguments.length > 0)
    p_data = $(arguments[0]);
    if (arguments.length > 1)
    p_container = $(arguments[1]);
    if (arguments.length > 2)
    p_complete = arguments[2];

    // Post form
    new Request.HTML ({url: U_ROOT + "/index.php?dyn=1", data: p_data, update: p_container, onComplete: p_complete, evalScripts: true}).post ();
}

/*
 * XHR form submit 
 */
Evonux.Page.submit = function (prefix)
{    
    var		frm;
    var		box;
    var		msg;

    // Get arguments
    frm = $("frm-" + prefix);
    box = $("msg-box-" + prefix);
    msg = $("msg-" + prefix);

    // Save WYSIWYG content
    Evonux.Wysiwyg.save ();

    // Post request
    Evonux.Page.post (frm, msg, function ()
    {
	box.style.display = "block";
	if (frm.save && frm.save.value)	    	       
	    frm.save.value = 0;	    
    });
}

/**
 * Reset form and release document saving status 
 */
Evonux.Page.reset = function (prefix)
{    
    var		frm = $('frm-' + prefix);
    
    if (frm.save && frm.save.value)
    {
	frm.save.value = 0;
    }
    frm.reset ();
}

/**
 * Dummy alternate function to location
 */
Evonux.Page.relocate = function (url)
{
    document.location = url;
}

/**
 * Update location
 */
Evonux.Page.reload = function ()
{    
    document.location = document.location;
}

/**
 * Load an URL on site and update what is needed after (GD text, Ajax loader)
 */
Evonux.Page.loadUrl = function (url)
{
    /*     Evonux.Loader.show (); */
    new Request.HTML ({url: url, data: "dyn=1", update: "content", onComplete: function () { Evonux.Control.updateText (); Evonux.Loader.hide (); }, evalScripts: true }).get ();
}

/*
 * Goes back to previous URL if provided
 */
Evonux.Page.goBack = function (prefix, ref)
{
    var		frm = $('frm-' + prefix);
    var		url = "";
    var		go = true;

    // Display a confirm pop up if document not saved
    if (frm.action.value == "insertUpdate" && frm.save && frm.save.value == 1)
    {
	if (!confirm (Evonux.Metadata.confirm ("MSG_SAVE")))
	    go = false;
    }

    // Folow URL
    if (go == true)
    {
	if (frm.url && frm.url.value)
	{
	    ref = frm.url.value;
	}

	// Unload WYSIWYG
	Evonux.Wysiwyg.unload ();
	
	// Load URL & unlock item after
	Evonux.Page.loadUrl (U_ROOT + '/?module=webpage&action=view&ref=' + (ref ? ref : 'ADMIN'));
    }
}


/*
 * Show option popup
 */
Evonux.Page.view = function (ref)
{
    var		width = 500;
    var		height = 500;
    var		top = (screen.height - height) / 2;
    var		left = (screen.width - width) / 2;
    var		popup;

    popup = window.open (U_ROOT + '/?module=webpage&action=view&template=none&ref=' + ref, '', "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, border=no, left=" + left + ", top=" + top + ", width=" + width + ", height=" + height);    
    popup.focus ();
}


/*
 * Eval search item
 */
Evonux.Page.replace = function (text)
{
    Evonux.Page.get ('module=tools&action=replaceText&search=' + escape (text), '', function ()
    {
	$('text').value = this.response.text;
    });
}


