
var timer = new Array ();

Evonux.Custom = {}

/**
 * Update booking form
 */
Evonux.Custom.updateSens = function ()
{
    var		frm = $('frm-booking');
    var		force = true;
    
    // Save select indexes
    var go_airport_oid = frm.go_airport_oid.selectedIndex;
    var back_airport_oid = frm.back_airport_oid.selectedIndex;

    // Swap go from controls
    if ((Evonux.Control.getRadioValue (frm.sens) == "1" && $('zone-go-from').getFirst().name != "go_location") ||
	(Evonux.Control.getRadioValue (frm.sens) == "2" && $('zone-go-from').getFirst().name == "go_location"))
    {
	Evonux.Control.swapContents ('zone-go-from', 'zone-go-to');
    }

    // Swap back controls if round trip selected
    if ((Evonux.Control.getRadioValue (frm.sens) == "1" && $('zone-back-from').getFirst().name == "back_location") ||
	(Evonux.Control.getRadioValue (frm.sens) == "2" && $('zone-back-from').getFirst().name != "back_location"))
    {
	Evonux.Control.swapContents ('zone-back-from', 'zone-back-to');
    }

    // Reset select indexes
    frm.go_airport_oid.selectedIndex = go_airport_oid;
    frm.back_airport_oid.selectedIndex = back_airport_oid;
}

/**
 * Update booking form rate
 */
Evonux.Custom.updateRate = function ()
{
    var		frm = $('frm-booking');
    var		hide = true;

    // Update airport
    Evonux.Custom.pickAirport();

    // Post values to zone rate 
    frm.action.value = 'getRate';
    Evonux.Page.post ('frm-booking', 'zone-rate');
}

/**
 * Update luggages number txt_in booking form
 */
Evonux.Custom.updateLuggages = function ()
{
    var		frm = $('frm-booking');

    if (frm.num_luggages)
    {
	frm.num_luggages.value = parseInt (parseInt ($('frm-booking').num_adults.value) + 
					   parseInt ($('frm-booking').num_children.value) + 
					   parseInt ($('frm-booking').num_babies.value));
    }

    // Update rate
    Evonux.Custom.updateRate ();
}

/**
 * Autocomplete location according to location
 */
Evonux.Custom.updateLocation = function (type)
{
    var		frm = $('frm-booking');
    var		location = $(type + '_location');
    var		airport = $(type + '_airport');
    var		completion = $('completion-' + type);

    frm.action.value = 'completeLocation';
    frm.type.value = type;
    if (location.value)
    {
	var dec = (Browser.Engine.gecko ? 1 : 0);
	var coord = location.getPosition ();
	completion.setPosition ({x: coord.x + dec, y: coord.y + 20});
	location.value = location.value.toUpperCase ();
	Evonux.Page.post ('frm-booking', 'completion-' + type, function () {
	    if (this.response.text != "")
		{
		    completion.removeClass ('off');		    
		    return;
		}
	});
    }
    else
    {
	location.value = "";
    }
    completion.addClass ('off');
}

/**
 * Update hidden airport
 */
Evonux.Custom.pickAirport = function (type)
{
    var		frm = $('frm-booking');

    if (type == "go")
    {
	frm.go_airport.value = frm.go_airport_oid.options[frm.go_airport_oid.selectedIndex].text;
	if (frm.back_airport_oid)
	    {
		frm.back_airport.value = frm.go_airport.value;
		frm.back_airport_oid.selectedIndex = frm.go_airport_oid.selectedIndex;
	    }
    }
    else
    {
	if (frm.back_airport_oid)
	{
	    frm.back_airport.value = frm.back_airport_oid.options[frm.back_airport_oid.selectedIndex].text;
	}
    }       
}

/**
 * Update hidden location 
 */
Evonux.Custom.pickLocation = function (type, oid, label)
{
    var		frm = $('frm-booking');
    var		txt = $(type + '_location');
    var		hid = $(type + '_location_oid');
    var		completion = $('completion-' + type)

    // Copy precise location to input
    hid.value = oid;
    txt.value = label;
    completion.addClass ('off');

    // Update back location
    if (type == "go" && frm.back_airport_oid)
    {
	$('back_location').value = $('go_location').value;
	$('back_location_oid').value = $('go_location_oid').value;
    }

    // Update rate
    Evonux.Custom.updateRate ();
}


/**
 * Update back destinations
 */
// location
    //    $('zone-back-' + (Evonux.Control.getRadioValue (frm.sens) == '1' ? 'from' : 'to')).innerHTML = frm.location.value;

    // Update back airport
    //    $('zone-back-' + (Evonux.Control.getRadioValue (frm.sens) == '1' ? 'to' : 'from')).innerHTML = frm.airport_oid.options[frm.airport_oid.selectedIndex].text;



/**
 * Update service
 */
Evonux.Custom.updateService = function ()
{
    var		frm = $('frm-booking');   

    // Swap go date & time controls from service to disposal
    if ((Evonux.Control.getRadioValue (frm.service_oid) == "141" && ($('zone-transfer-go-date').getFirst() && $('zone-transfer-go-date').getFirst().name == "go_date_dd")) ||
	(Evonux.Control.getRadioValue (frm.service_oid) == "142" && ($('zone-mad-go-date').getFirst() && $('zone-mad-go-date').getFirst().name == "go_date_dd")))
    {	
	Evonux.Control.swapContents ('zone-mad-go-date', 'zone-transfer-go-date');
    }

    // Swap back date & time controls from service to disposal
    if ((Evonux.Control.getRadioValue (frm.service_oid) == "141" && ($('zone-transfer-back-date').getFirst() && $('zone-transfer-back-date').getFirst().name == "back_date_dd")) ||
	(Evonux.Control.getRadioValue (frm.service_oid) == "142" && ($('zone-mad-back-date').getFirst() && $('zone-mad-back-date').getFirst().name == "back_date_dd")))
    {	
	Evonux.Control.swapContents ('zone-mad-back-date', 'zone-transfer-back-date');
    }

    // Show or hide transfer fields
    $each ($$ (".transfer"), function (e) {
	/*  Airport transfert */
	if (Evonux.Control.getRadioValue (frm.service_oid) == "142")
	    e.removeClass ("off");	
	else
	    e.addClass ("off");
    });

    // Show or hide disposal fields
    $each ($$ (".mad"), function (e) {
	/*  Airport transfert */
	if (Evonux.Control.getRadioValue (frm.service_oid) == "142")
	    e.addClass ("off");	
	else
	    e.removeClass ("off");
    });

    // Update rate
    Evonux.Custom.updateRate();
}

/**
 * Update round service
 */
Evonux.Custom.updateRound = function ()
{
    var		frm = $('frm-booking'); 
    
    $each ($$ (".back"), function (e) {       
	if (Evonux.Control.getRadioValue (frm.is_round) == "1")
	    e.removeClass ("off");
	else
	    e.addClass ("off");
    });
}

/**
 * Update back traject
 */
Evonux.Custom.updateBack = function ()
{
    var		frm = $('frm-booking');

    if (Evonux.Control.getRadioValue (frm.is_round) == "1")
    {
	// Update back airport
	frm.back_airport.value = frm.go_airport.value;
	frm.back_airport_oid.selectedIndex = frm.go_airport_oid.selectedIndex;	

	// Update back location if not set
	if (!$('go_location').value)
	    {
		$('back_location').value = $('go_location').value;
		$('back_location_oid').value = $('go_location_oid').value;
	    }
    }
}

/**
 * Check booking is OK
 */
Evonux.Custom.checkBooking = function ()
{
    var		frm = $('frm-booking');

    frm.action.value = 'checkBooking';
    Evonux.Page.submit ('booking');
}

/**
 * Save booking form
 */
Evonux.Custom.saveBooking = function ()
{
    var		frm = $('frm-booking');

    frm.module.value = 'booking';
    frm.action.value = 'checkBooking';
    Evonux.Page.post (frm, '');
}

/**
 * Show option popup
 */
Evonux.Custom.showOption = function (ref, height, width)
{
    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 ();
}

/**
 * Fading slide
 */
Evonux.Custom.slide = function ()
{
    if ($('zone-ad-1'))
    {
	Evonux.Page.get ("module=ad&action=refresh", "zone-ad-1");
    }
}

/**
 * Logos slide
 */
Evonux.Custom.logos = function ()
{
    if ($('zone-logos'))
    {
	Evonux.Page.get ("module=tools&action=refreshLogos", "zone-logos");
    }
}

Evonux.Custom.selectMenu = function (i)
{
    $$('sub').each (function (el)
	{
	    el.addClass ("off");
	    el.removeClass ("selected");
	});
    $('submenu-item-' + i).removeClass ("off");
    $('submenu-item-' + i).addClass ("selected");
}

Evonux.Custom.selectsubMenu = function (sel)
{
    $$('sublink').each (function (el)
	{
	    el.removeClass ("selected");
	});
    sel.addClass ('selected');
}


Evonux.Custom.postBooking = function ()
{   
    var		frm = $('frm-booking');

    // Prepare form
    frm.target = "_blank";
    frm.module.value = "webpage";
    frm.action.value = "view";
    frm.ref.value = "BOOKING:STEP1";
    frm.kit.value = "";

    // Update back date
    frm.back_date_dd.value = frm.go_date_dd.value;
    frm.back_date_mm.value = frm.go_date_mm.value;
    frm.back_date_yyyy.value = frm.go_date_yyyy.value;
    frm.back_time_hh.value = frm.go_time_hh.value;
    frm.back_time_mm.value = frm.go_time_mm.value;

    // Post form
    frm.submit ();
}


Evonux.Custom.step = function (step)
{   
    var		frm = $('frm-booking');

    // Prepare form
    frm.module.value = "booking";
    frm.action.value = "saveStep";
    frm.newstep.value = step;

    // Save form & redirect to desired step
    Evonux.Page.post (frm, '', function () {
	if (this.response.text == "OK")
	    {		
		Evonux.Page.relocate (U_ROOT + '/?module=webpage&action=view&ref=BOOKING:STEP' + step);
	    }
    });
}

Evonux.Custom.saveBooking = function ()
{    
    var		frm = $('frm-booking');
    
    // Prepare form
    frm.module.value = "booking";
    frm.action.value = "save";

    // Save booking
    Evonux.Page.post (frm, '', function () {
	if (this.response.text == "OK")
	    Evonux.Page.relocate (U_ROOT + '/?module=webpage&action=view&ref=BOOKING:STEP4');
	else
	    alert ("Un probleme a ete rencontre lors de l'enregistrement de votre reservation. Veuillez reessayer.");
    });
}


Evonux.Custom.refreshBooking = function ()
{    
    console.log ("refresh");
    clearTimeout (timer2);
    Evonux.Control.reloadList ('booking');
    timer2 = setTimeout (Evonux.Custom.refreshBooking, 10000);;
}
