/* ---------------------------------------------------------------
   Author : Remi Palard
   october 2006
   remi.palard@gmail.com  
/* --------------------------------------------------------------- */

// Global Layer objects
var Layer = new popupLayer({draggable:false,closeOnClick:true});
var Sc = new scrollbar('Sc');
//var ScNCB = new scrollbar('ScNCB');

// For Benefits Step navigation
var StepNav = new r08_stepNavigator();

// For Comparaison table
var ScTB = new scrollbar('ScTB');
var CTB = new comparaisonTable();

// For flight Passes in benefits
var ScFP = new scrollbar('SCFP');
var FP = new r08_agent_flightPasses();
var FPA = new r08_agent_flightPasses();

// For Address Form
var CA = new r08_confirmAddress();
var MP;
if(typeof( window[ 'memberProfileData' ] ) != "undefined")
	MP = new memberProfile();

// For Ajax calls
var AjaxTimeOutLimit = 180000; // 3 minutes

// For step navigation alert
var AD = new addressDiscard();

/* --------------------------------------------------------------- */
var xConfirmLayer;

// Layer positioning for IE printing - FF only needs r08_print.css
window.onbeforeprint = function() {
	if(Layer.openedLayer) {
        xConfirmLayer = $(Layer.openedLayer).style.left;
		$(Layer.openedLayer).style.left = 0 + 'px';
//		window.resizeTo(750,600);
	}
};
window.onafterprint = function() {
	if(Layer.openedLayer) {
		$(Layer.openedLayer).style.left = xConfirmLayer;
//		window.resizeTo(750,600);
	}
};

/* --------------------------------------------------------------- */

function r08_mainOnload() {
	
	// Flash
	flashGordon('r08_genericFlash','./static/flash/renom08/ae_generic_en.swf');
	
	// Benefits popup - for demo only
	//Layer.init('benefits', 'r08_benefits.html');
	//Layer.init('priority', 'r08_priorityContacts.html');
	//Layer.init('privileges', 'r08_privileges.html');
	//Layer.init('benefitsConfim', 'r08_benefits_step3Bis.html');	
}

/* --------------------------------------------------------------- */

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

/* --------------------------------------------------------------- */

function flashGordon(id,path) {
	var guyleclair;	
	guyleclair = new FlashObject(path, "tiers", "554", "100", "7", "");
	guyleclair.addParam("wmode", "transparent");
	guyleclair.write(id);				
}

/* --------------------------------------------------------------- */

function r08_priorityPhoneLoader() {	
	var ajaxUpdater;
	var ph = 'r08_priorityPhonePlaceHolder';
	var spinner = 'r08_priorityPhoneSpinner';
	var URL = '/renom08/InternationalPhone_Ajax.jsp';
	//var URL = 'ajax.php';
	var id = $F('r08_priorityPhoneSelect');
	
	// No choice
	if (id == '_null_') return;

	// Ajax call
	ajaxUpdater = new Ajax.Updater( {success: ph}, URL, {
		method: 'post', 
		parameters: 'phone=' + id, 
		onLoading : function(){ 
			Element.toggle(ph);
			Element.toggle(spinner);
		},
		onComplete : function(){ 
			Element.toggle(spinner);
			Element.toggle(ph); 
		},		
		onFailure: function(){
			Element.update(ph, 'Loading Error');
		}
	});
}

/* --------------------------------------------------------------- */

function r08_showTableHelp(link, type) {
	var pos;
	var ph = 'r08_tableHelpBlock';
	
	
	// Set position
	pos = findPos($(link.id));
	//$(ph).style.left = (pos[0] - 30) + 'px';
	//$(ph).style.top = (pos[1] - 35) + 'px';
	
	$(ph).style.left = (pos[0]) + 'px';
	$(ph).style.top = (pos[1]) + 'px';
	
	// Set text
	if (type == 'StatusMiles') Element.show('r08_tableHelpStatusMiles'); 
	if (type == 'StatusFlight') Element.show('r08_tableHelpStatusFlight'); 
	if (type == 'priv') Element.show('r08_tableHelpPriv'); 		
	
	// show	
	Element.show(ph);
}

/* --------------------------------------------------------------- */

function r08_hideTableHelp(link, type) {
	var ph = 'r08_tableHelpBlock';
	
	// hide	
	Element.hide(ph);
	Element.hide('r08_tableHelpStatusMiles'); 
	Element.hide('r08_tableHelpStatusFlight'); 
	Element.hide('r08_tableHelpPriv'); 		
}

/* --------------------------------------------------------------- */

function comparaisonTable() {
	var lastLayer;
	var tableLayer;
	var isStandAlone;
	
	this.isStandAlone = false;
	
	/* --------------------- */
	
	comparaisonTable.prototype.open = function(tableLayer, lastLayer) {
		
		var ajaxUpdater;
		//var URL = 'r08_comparaisonTable.html';
		var URL = '/renom08/Comparison.jsp';
		
		// Register
		this.tableLayer = tableLayer;
		this.lastLayer = lastLayer;
		
		// Start the show
		Element.hide(this.lastLayer);
		Element.show(this.tableLayer);		
	
		// Load content in Ajax 	
		if ($(this.tableLayer).innerHTML == '') ajaxUpdater = new Ajax.Updater( this.tableLayer, URL, {method: 'get'});		
		
		// Modify fadelayer onclick
		$('fadeLayer').onclick = this.close.bindAsEventListener(this);
	}
	
	/* --------------------- */
	
	comparaisonTable.prototype.close = function() {
		
		if (this.isStandAlone) {
			Layer.close();
			this.isStandAlone = false;			
		} else {

			// Return to last table
			Element.hide(this.tableLayer);
			Element.show(this.lastLayer);
			
			// restart scroller
			Sc.restart();		
			
			// Modify fadelayer onclick
			$('fadeLayer').onclick = function() { Layer.close(); };			
		}	
	}	
	
	/* --------------------- */
	
	comparaisonTable.prototype.standAloneOpen = function() {	
		this.isStandAlone = true;
		//Layer.init('comparaisonTable', 'r08_comparaisonTable.html');
		Layer.init('comparaisonTable', '/renom08/Comparison.jsp');
	}	
	
	/* --------------------- */

}	

/* --------------------------------------------------------------- */

// For Ajax Timout
function callInProgress (xmlhttp) {
	switch (xmlhttp.readyState) {
		case 1: case 2: case 3:
			return true;
		break;
		
		// Case 4 and 0
		default:
			return false;
		break;
	}
}

// Register global responders that will occur on all AJAX requests
Ajax.Responders.register({
	onCreate: function(request) {
		request['timeoutId'] = window.setTimeout(
			function() {
				
				// If we have hit the timeout and the AJAX request is active, abort it and let the user know
				if (callInProgress(request.transport)) {
					
					// Abort
					request.transport.abort();
					
					// Run the onFailure method if we set one up when creating the AJAX object
					if (request.options['onFailure']) request.options['onFailure'](request.transport, request.json);

				}
			}, AjaxTimeOutLimit );
	},
	
	onComplete: function(request) {
		// Clear the timeout
		window.clearTimeout(request['timeoutId']);
	}
});

/* --------------------------------------------------------------- */

// Function to load a media print css file	
function loadDynamicCSSPrintFile(url) {
	var linkTag = document.createElement('link');
	linkTag.rel = "stylesheet";
	linkTag.type = "text/css";
	linkTag.media ="print";
	linkTag.href = url;
	document.getElementsByTagName('head')[0].appendChild(linkTag);
}
 
// Function to unload a media print css file	
function unloadDynamicCSSPrintFile(file_name) {
	var parg = document.getElementsByTagName('head')[0];
	if (parg.hasChildNodes()) {
		var children = parg.childNodes;
		for (var i = 0; i < children.length; i++) {
		var linkTag = children[i]; 
			if (linkTag.rel == "stylesheet" ) {
				if ( linkTag.media == 'print' ) {
					var url = linkTag.href;
					if ( url.indexOf(file_name) > -1 ) {   
						document.getElementsByTagName('head')[0].removeChild(linkTag);
					}
				}
			}
		}
	}
}

// Debugging function to display all the media print css loaded	
function displayCSSPrintFile() {
	var stringDisp;
	var parg = document.getElementsByTagName('head')[0];
	if (parg.hasChildNodes()) {
		var children = parg.childNodes;
		for (var i = 0; i < children.length; i++) {
			var linkTag = children[i]; 	
			if (linkTag.rel == "stylesheet" ) {	
				if ( linkTag.media == 'print' ) {
					var url = linkTag.href;
					stringDisp = stringDisp + url;
				}
			}
		}
	}
	alert("CSS :" + stringDisp);
}
	
/* --------------------------------------------------------------- */	
