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

var SelCollectedDataId = { r08_sel1Benefit : new Array(), r08_sel2Benefit : new Array(), r08_sel3Benefit : new Array() };
var SelMax = new Array();
var ProceedButton = new proceedButton();

var popupUrl = '/your_aeroplan/top_tier_benefits/popup08.do?tierStatus=&contentID=benefits&displayPDF=true&giftID=&benefitID=';

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

String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};

function populateBenefitsCheckbox() {
	var w = 'r08_selectwhitebox';
	var b = 'r08_selectbluebox';
	var str, count, clr, checkboxAction;

	var __selName = new Array('r08_sel1Benefit','r08_sel2Benefit','r08_sel3Benefit');
	var __selData = new Array(Sel1Data, Sel2Data, Sel3Data);	
	
	// Loop for the 3 selections
	for (var ii = 0; ii < __selName.length; ii++) {		
		
		// Init
		str = '';
		rowCount = 0;
		clr = b;					
		
		// For flight passes
		//if (__selName[ii] == 'r08_sel3Benefit') checkboxAction = 'FP.open(this);"';
		//else 
		checkboxAction = 'ProceedButton.checkBenefitSelection(this.name);';
		
		// Each row of each selection
		$H(__selData[ii]).each(function(item) {	
			
			// Row Color
			clr = clr == b ? w : b;
			
			// Nb of row by selection
			rowCount++;
			
			// Row innerHTML
			str += '<div class="' + clr + '">';
			str += '<input onclick="' + checkboxAction + '" name="' + __selName[ii] + '" type="checkbox" value="' + item.key + '" class="r08_checkboxLink"/>';
			str += '<a href="javascript:;" onclick="renom08_popUp(\'' + popupUrl + item.key.substr(5,9) + '\');" class="r08_privLink">';
			str += unescape(item.value) + '</a></div>';		
		});	
		
		// Write html
		if (SelMax[__selName[ii]] > 0) {
			$(__selName[ii] + 'PH').innerHTML = str;
			$(__selName[ii] + 'NbMax').innerHTML = SelMax[__selName[ii]];
			$(__selName[ii] + 'PHNbTotal1').innerHTML = rowCount;
			$(__selName[ii] + 'PHNbTotal2').innerHTML = rowCount;	

		
			// Init Button
			$(__selName[ii] + 'StatusButton').innerHTML = SelMax[__selName[ii]] + "&#160;" + SELECTION_LEFT;
			$(__selName[ii] + 'StatusButton').className = "r08_statusButtonNotCompleted";		
		
		} else {
			
			// No bundle3 => SelMax = 0;
			Element.hide('r08_sel3BenefitStartBlock');
			Element.hide('r08_sel3BenefitStatusButton');
			Element.hide('r08_sel2BenefitProceedButtonLink');
		}
		
		// Proceed
		ProceedButton.disable(__selName[ii]);			
	}		
}

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

function proceedButton() {
	var id;
	var isSelOk;
	
	this.isSelOk = { r08_sel1Benefit : false, r08_sel2Benefit : false, r08_sel3Benefit : false };
	
	/* --------------------- */	
	
	proceedButton.prototype.checkBenefitSelection = function(id) {
		var totalBen = 0;	
		var f = document.forms['r08_benefitsSelection'].elements[id];
		var max = (f.length) ? f.length : 1;
		
		// Patch for 0 bundle3 to select => no checkbox => no test		
		if (SelMax['r08_sel3Benefit'] == 0) this.isSelOk['r08_sel3Benefit'] =  true;				
		
		// Patch for unique checkbox
		if (max == 1) f[0] = f;

		// Clear
		SelCollectedDataId[id].clear();
		
		// Check max
		for (var i = 0; i < max; i++) {
					
			if (f[i].checked) {
				
				// Save data for futur ajax call
				SelCollectedDataId[id].push(f[i].value);
				
				// Inc max selected
				totalBen += 1;
			}
		}
	
		// Nb ok
		if (totalBen == SelMax[id]) {
			$(id + 'StatusButton').innerHTML = SELECTION_COMPLETED;		
			$(id + 'StatusButton').className = "r08_statusButtonCompleted";
			
			// Validate selection
			this.isSelOk[id] = true;	
			
			// Proceed
			this.enable(id);
			this.checkContinue();
	
		} else {
			
			// Too few
			if (totalBen < SelMax[id]) {
				$(id + 'StatusButton').innerHTML = (SelMax[id] - totalBen) + "&#160;" + SELECTION_LEFT;
				$(id + 'StatusButton').className = "r08_statusButtonNotCompleted";
				
				// Validate selection
				this.isSelOk[id] = false;
				
				// Proceed						
				this.disable(id);						
				this.checkContinue();							
			
			// Too many
			} else {
				$(id + 'StatusButton').innerHTML = SELECTION_TOOMANY;
				$(id + 'StatusButton').className = "r08_statusButtonTooMany";		
	
				// Validate selection
				this.isSelOk[id] = false;
				
				// Proceed						
				this.disable(id);						
				this.checkContinue();							
			}
		}
	}	
	
	/* --------------------- */	
	
	proceedButton.prototype.checkContinue = function() {
		if (this.isSelOk['r08_sel1Benefit'] && this.isSelOk['r08_sel2Benefit'] && this.isSelOk['r08_sel3Benefit']) 
			this.enable('r08_sel3Benefit');
		else
			this.disable('r08_sel3Benefit');			
	}
	
	/* --------------------- */	
	
	proceedButton.prototype.enable = function(id) {			
		
		// Button events
		$(id + 'ProceedButton').className = "r08_proceedButton";		
		$(id + 'ProceedButton').onmouseover = function(){ $(id + 'ProceedButton').className = 'r08_proceedButton_on'; };
		$(id + 'ProceedButton').onmouseout = function(){ $(id + 'ProceedButton').className = 'r08_proceedButton'; };
		
		// Button action
		// Selection 1
		if (id == 'r08_sel1Benefit') 
			$(id + 'ProceedButtonLink').onclick = function(){	Sc.scrollToDiv('r08_sel2BenefitStartBlock'); };
		
		// Selection 2
		else if (id == 'r08_sel2Benefit') 
			$(id + 'ProceedButtonLink').onclick = function(){	Sc.scrollToDiv('r08_sel3BenefitStartBlock'); };
			
		// Selection 3
		else 
			$(id + 'ProceedButtonLink').onclick = function(){	StepNav.go(2,1);; };		
	}
	
	/* --------------------- */	

	proceedButton.prototype.disable = function(id) {			
		$(id + 'ProceedButtonLink').onclick = '';
		$(id + 'ProceedButton').onmouseover = '';
		$(id + 'ProceedButton').onmouseout = '';
		$(id + 'ProceedButton').className = 'r08_proceedButton_disabled';		
	}	
	
	/* --------------------- */	
	
}	

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

function r08_stepNavigator() {
	var ajaxUpdater;
	var stepURL;
	var nextStep;
	var nextId;		
	var previousId;
	var nextTitle;
	var previousTitle;
	var scrollToId;	
	
	/* --------------------- */	
	
	r08_stepNavigator.prototype.go = function(nextStep,previousStep,scrollToId) {
	
		var ajaxCall
		var registeringURL = '/renom08/Book_Ajax.jsp';
		var failureURL = '/error.do';
		var spinner = 'r08_confirmSpinner';
		var params = '';

			
		// Step to go
		this.nextStep = nextStep;
		this.previousStep = previousStep;		
		this.scrollToId = scrollToId;
		
		// For Confirmation page => launch special layer
		if ( this.nextStep == 'confirm') {	
			
			/********* Register data in backend - TODO ***************/
			
			// Register selected benefits (ajax)
			$H(SelCollectedDataId).each(function(item) {
				if (item.key != 'r08_sel1Benefit') params += '&';
				params += item.key + '=' + item.value.join('_sepData_');	
			});
			
			// Save data 					
			ajaxCall = new Ajax.Request( registeringURL, {
				method: 'post',
				parameters: params, 
				onLoading : function(){
					
					// Spinner
					r08_setSpinnerPosition();	
					
					// Disable fadelayer onclick
					$('fadeLayer').onclick = function() { };					
								
					// Disable the window 
					Layer.close();					
					
					// Show spinner
					Element.toggle('fadeLayer');				
					Element.toggle(spinner);
				},
				onComplete : function(oRequest){ 
					
					// Server response
					if (oRequest.responseText.trim() == 'OK') {
						
						// Enable fadelayer onclick
						$('fadeLayer').onclick = function() {Layer.close();};							
						
						// hide the spinner
						Element.toggle('fadeLayer');								
						Element.toggle(spinner); 					
					
						// Start the confirm layer
						//Layer.init('benefitsConfim', 'r08_benefitsConfirm.html');						
						Layer.init('benefitsConfim', '/renom08/Privileges_Confirm.jsp');
						
					} else {
												
						// Redirect to error page				
						window.location = failureURL;										
					}				
				},		
				onFailure: function(){			
					
					// Redirect to error page
					window.location = failureURL;
				}
			});		
			
			return;	
		}

		// Init		
		this.nextId = 'r08_step' + nextStep
		this.nextTitle = 'r08_step' + nextStep + 'Title';
		this.previousTitle = (previousStep) ? 'r08_step' + previousStep + 'Title' : '';		
		this.previousId = (previousStep) ? 'r08_step' + previousStep : '';
		//this.stepURL = 'r08_benefits_step' + nextStep + '.html';
		this.stepURL = '/renom08/Privileges_Step' + nextStep + '.jsp';
		
		// Title 3bis = 3
		if (this.nextStep == '3Bis') this.nextTitle = 'r08_step3Title';
		if (this.previousStep == '3Bis') this.previousTitle = 'r08_step3Title';		
		
		// Change Steps Title
		if ($(this.previousTitle)) $(this.previousTitle).className = 'r08_stepTitle';
		if ($(this.nextTitle)) $(this.nextTitle).className = 'r08_stepTitle_on';	
		
		// Start the show
		if ($(this.previousId)) Element.hide(this.previousId);		
		if (this.nextId) Element.show(this.nextId);
		
		// Load content
		this.loadLayer();
	}
	
	/* --------------------- */	
	
	r08_stepNavigator.prototype.loadLayer = function() {			
		
		// Loaded only once
		if ($(this.nextId).innerHTML == '') {
			// Load content in Ajax 
			ajaxUpdater = new Ajax.Updater( this.nextId, this.stepURL, { 
				method: 'get', onComplete : this.loadScript.bind(this)
			});		
			
		} else {	
			// Select action
			switch (this.nextStep) {
				case 1:		
					// Step Button onclick
					$('r08_step1Title').className = $('r08_step1Title').className.replace(/ pointer/g,'');
					$('r08_step1Title').onclick = '';	
				
					$('r08_step2Title').onclick = '';	
					$('r08_step2Title').className = $('r08_step2Title').className.replace(/ pointer/g,'');
				
					$('r08_step3Title').onclick = '';	
					$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');	
				break;				
				case 2:
					populateSelectedBenefits();
					// Step Button onclick
					$('r08_step1Title').className += ' pointer';
					$('r08_step1Title').onclick = function(){ StepNav.go(1,2); };	
				
					$('r08_step2Title').onclick = '';	
					$('r08_step2Title').className = $('r08_step2Title').className.replace(/ pointer/g,'');
				
					$('r08_step3Title').onclick = '';	
					$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');						
				break;					
				case 3:
					// Step Button onclick
					$('r08_step1Title').className += ' pointer';
					$('r08_step1Title').onclick = function(){ StepNav.go(1,3); };	
				
					$('r08_step2Title').className += ' pointer';
					$('r08_step2Title').onclick = function(){ StepNav.go(2,3); };
				
					$('r08_step3Title').onclick = '';	
					$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');						
				break;	
				
				case '3Bis':
					MP.editProfile();
				
					// Step Button onclick
					$('r08_step1Title').className += ' pointer';
					$('r08_step1Title').onclick = function(){ AD.start(1); };	
				
					$('r08_step2Title').className += ' pointer';
					$('r08_step2Title').onclick = function(){ AD.start(2); };

					$('r08_step3Title').className += ' pointer';				
					$('r08_step3Title').onclick = function(){ AD.start(3); };
				break;
			}			
			// Restart Scroller
			Sc.restart();
			
			// Scroll to div position in the layer
			if ( this.scrollToId && $(this.scrollToId) ) Sc.scrollToDiv(this.scrollToId);	
		} 					
	}
	
	/* --------------------- */	
	
	r08_stepNavigator.prototype.loadScript = function() {		
		
		// Select action
		switch (this.nextStep) {
			case 1:
				// Benefits Selection
				populateBenefitsCheckbox();	
				
				// Close Layer
				//$('fadeLayer').onclick = function() {Layer.close();};	
				//$('r08_benefitsCloseText').onclick = function() {Layer.close();};
				//$('r08_benefitsCloseButton').onclick = function() {Layer.close();};
				
				// Close Layer
				$('fadeLayer').onclick = startStepCancel;
				$('r08_benefitsCloseText').onclick = startStepCancel;
				$('r08_benefitsCloseButton').onclick = startStepCancel;	

				// Start Scrollbar
				Sc.init('r08_contentBN','r08_containerBN','r08_scrollerBN','r08_scrollAreaBN');
				
				// Step Button onclick
				$('r08_step1Title').className = $('r08_step1Title').className.replace(/ pointer/g,'');
				$('r08_step1Title').onclick = '';	
				
				$('r08_step2Title').onclick = '';	
				$('r08_step2Title').className = $('r08_step2Title').className.replace(/ pointer/g,'');
				
				$('r08_step3Title').onclick = '';	
				$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');								
			break;
			
			case 2:
			
				// Benefits Selection
				populateSelectedBenefits();	
				
				// Close Layer
				$('fadeLayer').onclick = startStepCancel;
				$('r08_benefitsCloseText').onclick = startStepCancel;
				$('r08_benefitsCloseButton').onclick = startStepCancel;	
				
				// Step Button onclick
				$('r08_step1Title').className += ' pointer';
				$('r08_step1Title').onclick = function(){ StepNav.go(1,2); };	
				
				$('r08_step2Title').onclick = '';	
				$('r08_step2Title').className = $('r08_step2Title').className.replace(/ pointer/g,'');
				
				$('r08_step3Title').onclick = '';	
				$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');																						
				
				// Re-init Scrollbar
				Sc.restart();			
			break;
			
			case 3:
				MP.verifyProfile();
				
				// Close Layer
				$('fadeLayer').onclick = startStepCancel;
				$('r08_benefitsCloseText').onclick = startStepCancel;
				$('r08_benefitsCloseButton').onclick = startStepCancel;	
				
				// Step Button onclick
				$('r08_step1Title').className += ' pointer';
				$('r08_step1Title').onclick = function(){ StepNav.go(1,3); };	
				
				$('r08_step2Title').className += ' pointer';
				$('r08_step2Title').onclick = function(){ StepNav.go(2,3); };
				
				$('r08_step3Title').onclick = '';	
				$('r08_step3Title').className = $('r08_step3Title').className.replace(/ pointer/g,'');													
				
				// Re-init Scrollbar
				Sc.restart();					
			break;
			
			case '3Bis':
				MP.editProfile();
				
				// Close Layer
				$('fadeLayer').onclick = startStepCancel;
				$('r08_benefitsCloseText').onclick = startStepCancel;
				$('r08_benefitsCloseButton').onclick = startStepCancel;
				
				// Step Button onclick
				$('r08_step1Title').className += ' pointer';
				$('r08_step1Title').onclick = function(){ AD.start(1); };	
				
				$('r08_step2Title').className += ' pointer';
				$('r08_step2Title').onclick = function(){ AD.start(2); };

				$('r08_step3Title').className += ' pointer';				
				$('r08_step3Title').onclick = function(){ AD.start(3); };				
				
				// Re-init Scrollbar
				Sc.restart();					
			break;			
			
			default:
				Sc.restart();
			break;
		}		
		
		// Scroll to div position in the layer
		if ( this.scrollToId && $(this.scrollToId) ) Sc.scrollToDiv(this.scrollToId);			
		
	}
	
	/* --------------------- */
	
}

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

function startStepCancel() {
	var orig, dx, dy ;
	
	// Position
	orig = findPos($('r08_layerXY'));
	dy = orig[1] + 31; // 31
	dx = orig[0] + 190; // 190 cf css layer dimension
	
	// Fade up
	$('fadeLayer').style.zIndex = 2;
	$('benefits').style.zIndex = 1;	
	
	// Apply style
	$('r08_stepCancel').style.top = dy + 'px';
	$('r08_stepCancel').style.left = dx + 'px';			
	$('r08_stepCancel').style.zIndex = 5000;		
	
	// Show
	Element.show('r08_stepCancel');
}

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

function stopStepCancel() {
	
	// Fade down
	$('fadeLayer').style.zIndex = 1;
	$('benefits').style.zIndex = 2;		
	
	// Show
	Element.hide('r08_stepCancel');
}

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

function exitStepCancel() {
	
	// Fade down
	$('fadeLayer').style.zIndex = 1;
	$('benefits').style.zIndex = 2;			
	
	// Close layer
	Layer.close();
	
	// Show
	Element.hide('r08_stepCancel');
}

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

function populateSelectedBenefits(confirm) {
	var w = 'r08_selectwhitebox';
	var b = 'r08_selectbluebox';
	var str, clr, cfr;	
	
	// For confirmation page => different id prevent IE crash
	if (confirm) cfr = '_Confirm';
	else cfr = '';
		
	// Selected values
	$H(SelCollectedDataId).each(function(item) {		
		
		if (item.key == 'r08_sel1Benefit') {		
			str = '';
			clr = b;			
			for (var i=0;i<item.value.length;i++) {	
				
				// Row Color
				clr = clr == b ? w : b;				

				// Row innerHTML
				str += '<div class="' + clr + '"><div class="r08_selectedPriv"><a href="javascript:;"';
				str += ' onclick="renom08_popUp(\'' + popupUrl + item.value[i].substr(5,9) + '\');">';
				str += unescape(Sel1Data[item.value[i]]) 
				str += '</a></div></div>';							
			}	
			$('r08_SelectedBenefits1' + cfr).innerHTML = str;			
			
		}	else if (item.key == 'r08_sel2Benefit') {		
			//alert(SelMax['r08_sel2Benefit']);
			str = '';
			clr = b;			
			for (var i=0;i<item.value.length;i++) {	
				
				// Row Color
				clr = clr == b ? w : b;				
							
				// Row innerHTML
				str += '<div class="' + clr + '"><div class="r08_selectedPriv"><a href="javascript:;"';
				str += ' onclick="renom08_popUp(\'' + popupUrl + item.value[i].substr(5,9) + '\');">';
				str += unescape(Sel2Data[item.value[i]]) 
				str += '</a></div></div>';							
			}	
			$('r08_SelectedBenefits2' + cfr).innerHTML = str;		
				
		}	else {		
			
			// No bundle 3
			//alert(SelMax['r08_sel3Benefit']);
			if (SelMax['r08_sel3Benefit'] > 0) {
			
				str = '';
				clr = b;			
				for (var i=0;i<item.value.length;i++) {	
					
					// Row Color
					clr = clr == b ? w : b;				
								
					// Row innerHTML
					str += '<div class="' + clr + '"><div class="r08_selectedPriv"><a href="javascript:;"';
					str += ' onclick="renom08_popUp(\'' + popupUrl + item.value[i].substr(5,9) + '\');">';
					str += unescape(Sel3Data[item.value[i]]) 
					str += '</a></div></div>';
				}
				$('r08_SelectedBenefits3' + cfr).innerHTML = str;
			} else {
				if ($('sel3StartBlock') != null) 
					Element.hide('sel3StartBlock');
			}
		}
	});
}


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

function r08_flightPasses() {
	var lastLayer;
	var newLayer;

	this.lastLayer = 'r08_benefitsLayerContent';
	this.newLayer = 'r08_flightPassesBenefitsPlaceHolder';

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

	r08_flightPasses.prototype.open = function(URL) {
		var ajaxUpdater;

		// Start the show
		Element.hide(this.lastLayer);
		Element.show(this.newLayer);

		// Load content in Ajax
		if ($(this.newLayer).innerHTML == '') {
			ajaxUpdater = new Ajax.Updater( {success: this.newLayer}, URL, {
				method: 'get',
				onFailure : this.close.bind(this)
			});
		}

		// Modify fadelayer onclick
		$('fadeLayer').onclick = this.close.bindAsEventListener(this);
	}

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

	r08_flightPasses.prototype.close = function() {

		// Return to last table
		Element.hide(this.newLayer);
		Element.show(this.lastLayer);

		// Modify fadelayer onclick
		$('fadeLayer').onclick = function() { Layer.close(); };
	}

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

	r08_flightPasses.prototype.toggle = function(id) {
		var m = 'r08_minusB';
		var p = 'r08_plusB';
		var ph = id + '_desc';

		// link style
		$(id).className = $(id).className == m ? p : m;

		// Show or hide
		Element.toggle(ph);

		// Restart Scrollbar
		ScFP.restart();
	}

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

}

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

function r08_agent_flightPasses() {

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

	r08_agent_flightPasses.prototype.open = function(URL) {
		// Display the layer
		Layer.init('r08_flightPassesBenefitsPlaceHolder', URL);
	}

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

	r08_agent_flightPasses.prototype.close = function() {
		// Modify fadelayer onclick
		Layer.close();
	}

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

	r08_agent_flightPasses.prototype.toggle = function(id) {
		var m = 'r08_minusB';
		var p = 'r08_plusB';
		var ph = id + '_desc';

		// link style
		$(id).className = $(id).className == m ? p : m;

		// Show or hide
		Element.toggle(ph);

		// Restart Scrollbar
		ScFP.restart();
	}
}

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

function r08_confirmAddress() {
	var ph,link;
	this.ph = 'r08_confirmAddressBlock'; 
	this.link = 'r08_saveAndContinue';   
	
	/* --------------------- */	

	r08_confirmAddress.prototype._reset = function() {	
	
		// hide	
		this.hide();	
		Element.hide('r08_POBox');
		// Reinit step3 display 
		MP.editProfile();
	}	
	
	/* --------------------- */	

	r08_confirmAddress.prototype.confirm = function() {	
		var ajaxCall;
		var spinner = 'r08_confirmSpinner';		
		var registeringProfileURL = '/renom08/UpdateProfile_Ajax.jsp';
		var timeoutErrorText = 'Server Error: please try again later';
		var params;
		
		// Register Member Profile
		if ($('r08_addressForm')) params = Form.serialize('r08_addressForm');			
		
		// hide the confirm block	
		this.hide();	

		// Save data 					
		ajaxCall = new Ajax.Request( registeringProfileURL, {
			method: 'post', 
			parameters: params, 
			onLoading : function(){
				
				// Disable fadelayer onclick				
				$('fadeLayer').onclick = function() { };
				
				// Spinner
				r08_setSpinnerPosition();								
				Element.hide('benefits');				
				Element.toggle(spinner);
									
			},
			onComplete : function(oRequest){ 
							
				// Enable fadelayer onclick
				$('fadeLayer').onclick = startStepCancel;
				
				// hide the spinner
				Element.show('benefits');																					
				Element.toggle(spinner); 					
				
				// Server response
				var responseText = oRequest.responseText.trim();
				if (responseText.substr(0,2) == 'OK') {
					
					var arrayValue = responseText.split('@|@');
					
					memberProfileData['firstName'] = escape(arrayValue[1]);
					memberProfileData['middleName'] = escape(arrayValue[2]);
					memberProfileData['lastName'] = escape(arrayValue[3]);
					memberProfileData['addr_type'] = escape(arrayValue[4]);
					memberProfileData['businessName'] = escape(arrayValue[5]);
					memberProfileData['businessTitle'] = escape(arrayValue[6]);
					memberProfileData['streetNumber'] = escape(arrayValue[7]);
					memberProfileData['streetName'] = escape(arrayValue[8]);
					memberProfileData['unit'] = escape(arrayValue[9]);
					memberProfileData['direction'] = escape(arrayValue[10]);
					memberProfileData['POBox_ZipCode'] = escape(arrayValue[11]);
					memberProfileData['POBox_Branch'] = escape(arrayValue[12]);
					memberProfileData['POBox_RoadNumber'] = escape(arrayValue[13]);
					memberProfileData['countryCode'] = escape(arrayValue[14]);
					memberProfileData['provinceStateCode'] = escape(arrayValue[15]);
					memberProfileData['city'] = escape(arrayValue[16]);
					memberProfileData['postalCode'] = escape(arrayValue[17]);
					memberProfileData['tel_AreaCode'] = escape(arrayValue[18]);
					memberProfileData['tel_PhoneNumber'] = escape(arrayValue[19]);
					memberProfileData['email'] = escape(arrayValue[20]);
					
							
					// Reinit step3 display 
					MP.verifyProfile();		
					
					// Redirect to step 3
					StepNav.go(3,'3Bis');				
					
				} else {		
		
					// Show error On form
					Element.update('r08_step3ErrorText',oRequest.responseText.trim());			
					Element.show('r08_step3ErrorBox');		
								
					// Reset scroller
					Sc.restart()					
									
				}				
			},		
			onFailure: function(){						
				
				// Show error On form
				Element.update('r08_step3ErrorText',timeoutErrorText);			
				Element.show('r08_step3ErrorBox');	
								
				// Reset scroller
				Sc.restart()						
			}
		});		

	}
	
	/* --------------------- */	
	
	r08_confirmAddress.prototype.show = function() {
		var pos;
		
		// Set position
		pos = findPos($(this.link));
		$(this.ph).style.left = (pos[0] - 30) + 'px';
		$(this.ph).style.top = (pos[1] - 110) + 'px';
		
		// show	
		Element.show(this.ph);			
	}
	
	/* --------------------- */	
	
	r08_confirmAddress.prototype.hide = function() {	
		Element.hide(this.ph);
	}
	
	/* --------------------- */	
	
}

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

function memberProfile() {
	var data;
	var radioBiz;
	var f;
	var POBox;
	var genError;

	this.data = memberProfileData;
	this.f = 'r08_addressForm';
	this.POBox = false;
	this.genError = {};

	/* --------------------- */	
		
	memberProfile.prototype.validateForm = function() {
		var prefix = 'r08_form_';
		var el = $('r08_addressForm').elements;
		var reg;
		
		var isRequired = {
			firstName : false,
			middleName : false,
			lastName : false,
			email : true,
			streetNumber : true,
			streetName : true,
			unit : false,
			postalCode : true,
			city : true,
			POBox_ZipCode : false,
			POBox_Branch : false,
			POBox_RoadNumber : false,
			tel_AreaCode  :true,
			tel_PhoneNumber : true
		}

		var isNumeric = {
			streetNumber : true,
			tel_AreaCode  :true,
			tel_PhoneNumber : true,
			POBox_RoadNumber : true,
			POBox_ZipCode : true
		};
		
		//alert(this.POBox);
		
		// For Business
		isRequired['businessName'] = (this.radioBiz[1].checked) ? true : false;
		isRequired['businessTitle'] = (this.radioBiz[1].checked) ? true : false;		

		// For POBox
		//isRequired['POBox_ZipCode'] = (this.POBox) ? true : false;
		//isRequired['POBox_Branch'] = (this.POBox) ? true : false;
		//isRequired['POBox_RoadNumber'] = (this.POBox) ? true : false;
				
		isRequired['streetName'] = Element.visible('r08_POBox') ? false : true;	
		isRequired['streetNumber'] = Element.visible('r08_POBox') ? false : true;

		// For class backup
		_this = this;
		
		// Re-init
		this.error = false;
		$H(r08_form_error).each( function(el) {
			_this.genError[el.key] = false;
		});		
	
		// Collect Form data
		Form.getElements(this.f).each(function(el) {
			
			if (el.name != 'addr_type') {
			
				// Required
				if(isRequired[el.name] && !$F(el)) {
					_this.toggleError(el.name,'show');
					_this.genError['required'] = true;
				} else {
					
					// Numeric
					if ( isNumeric[el.name] ){
						if (el.name == 'tel_PhoneNumber') {
							
							if (/[^\d-]/.test($F(el))) {
								_this.toggleError(el.name,'show');
								_this.genError['numeric'] = true;
							}
							
						}
						else {
							if (/[^\d]/.test($F(el))) {
								_this.toggleError(el.name,'show');
								_this.genError['numeric'] = true;
							}
						
						}
					} else {
						
						// Zip code
						if(el.name == 'postalCode' && !/([a-zA-Z0-9])+/.test($F(el))) {			
							_this.toggleError(el.name,'show');
							_this.genError['postal'] = true;
						} else {
								
							// Email
							if(el.name == 'email' && !/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test($F(el))) {			
								_this.toggleError(el.name,'show');
								_this.genError['email'] = true;
							
							} else {
								_this.toggleError(el.name,'hide');				
							}				
						}		
					}			
				}
			}					
		});		
		
		//Debug
		//alert($H(this.genError).inspect());
		
		// Error text
		var errorOutput = '';
		$H(r08_form_error).each( function(el) {
			if (_this.genError[el.key]) errorOutput += el.value + '<div class="r08_space2"></div>';
		});		
		
		// Display error
		if (errorOutput) {		
			// Show error
			Element.update('r08_step3ErrorText',errorOutput);			
			Element.show('r08_step3ErrorBox');
			
			// Restart scroller
			Sc.restart();
			
		} else {			
			
			// Proceed 
			this.formIsValid();
		}

	}
	
	/* --------------------- */
	
	memberProfile.prototype.formIsValid = function() {	
		
		// Hide error box
		Element.hide('r08_step3ErrorBox');			
			
		// Scrollto confirm box
		Sc.scrollToDiv($(CA.link));
			
		// Confirm Box
		CA.show();
	}
	
	/* --------------------- */

	
	memberProfile.prototype.toggleError = function(id,type) {
		var errorReg = new RegExp("_error","i");
		var cls = $(id).className;
		
		// Form element error
		if (type == 'show') {
			if (! errorReg.test(cls)) $(id).className = cls + '_error';		
		}	else {
			if (errorReg.test(cls)) $(id).className = cls.replace(errorReg,'');
		}
			
	}		

	/* --------------------- */	
		
	memberProfile.prototype.verifyProfile = function(confirmPage) {
		var prefix;
		var ph, display, countryCode;
		
		$H(this.data).each(function(el){
			// Element placeholder
			if(confirmPage) prefix = 'r08_confirm_';
			else prefix = 'r08_verify_';
			ph = prefix + el.key;
			
			// Direction, State, Country
			if (el.key == 'direction') display = r08_form_directionData[el.value];
			else if (el.key == 'countryCode') {
				display = r08_form_countryData[el.value];	
				countryCode = el.value;

				if (memberProfileData['country'] == null) {
					display = r08_form_countryData[el.value];
									
				}
				else {
					el.value = memberProfileData['country'];
					display = r08_form_countryData[el.value];
					countryCode = el.value;
				}
								
			}
			//Phone Number Formatting
			else if (el.key == 'tel_PhoneNumber') {
				
				if (el.value.indexOf("-") > 0) {
					display = el.value;
				}
				else {
					display = el.value.substr(0,3) + '-' + el.value.substr(3,4);
				}
				
			}
			else if (el.key == 'provinceStateCode' && countryCode == 'CA') {

				if (memberProfileData['province'] == null) {
					display = r08_form_provinceCAData[el.value];
									
				}
				else {
					el.value = memberProfileData['province'];
					display = r08_form_provinceCAData[el.value];
				}

			}				
			else if (el.key == 'provinceStateCode' && countryCode == 'US') {
				
				if (memberProfileData['province'] == null) {
					display = r08_form_provinceUSData[el.value];
									
				}
				else {
					el.value = memberProfileData['province'];
					display = r08_form_provinceUSData[el.value];
				}

			}
			else if (el.key == 'provinceStateCode') {
			
				display = '';
			
			}
			else display = el.value;

			// POBox
			if (el.key == 'POBox_ZipCode' && document.getElementById(prefix + 'POBoxPH')) {
				if (el.value != '')
					Element.show(prefix + 'POBoxPH');
				else 
					Element.hide(prefix + 'POBoxPH');
			}
 			
			// Display member info
			if ($(ph)) Element.update(ph, unescape(display));
			
		});
	}	
	
	/* --------------------- */		
	
	memberProfile.prototype.editProfile = function() {     
			
		// For Error
		Element.hide('r08_step3ErrorBox');
			
		// For text elements
		$H(this.data).each(function(el){	
			ph = $(el.key);	
			if (ph) {
				if (el.key == 'tel_PhoneNumber') {
					var tmpPhone = unescape(el.value);
					if (tmpPhone.indexOf("-") > 0) {
						ph.value = tmpPhone;
					}
					else {
						ph.value = tmpPhone.substr(0,3) + '-' + tmpPhone.substr(3,4);
					}
				}
				else {
					ph.value = unescape(el.value);	
				}
			}
		});	
		
		// For radio
		this.radioBiz = Form.getInputs('r08_addressForm', null, 'addr_type');
		if (this.data['addr_type'] == 'H') this.radioBiz[0].checked = true;
		else this.radioBiz[1].checked = true;
		
		// For business
		this.toggleBusiness();

		if (memberProfileData['country'] == null) {
			this.createDropdown('country', r08_form_countryData, this.data['countryCode']);
		}
		else {
			this.data['countryCode'] = memberProfileData['country'];
			this.createDropdown('country', r08_form_countryData, this.data['countryCode']);
		}

		// For Select country & direction & province
		//this.createDropdown('country', r08_form_countryData, this.data['countryCode']);
		this.createDropdown('direction', r08_form_directionData, this.data['direction'],'r08_inputShort60');	
		
		//// For province
		this.toggleProvince();
		$('country').onchange = this.toggleProvince.bind(this);		
		
		// For POBox
		if (this.data['POBox_ZipCode'] != ''){
			this.POBox = false;
			this.togglePOBox();	 
		 }
		
		// Disable entry for First Name, Last Name and Middle Name
		$('firstName').disabled = true;
		$('middleName').disabled = true;
		$('lastName').disabled = true;
		
	}		
	
	/* --------------------- */
	
	memberProfile.prototype.createDropdown = function(id,data,ref,_class) {			
		var drop = '';
		var cls = (_class) ? _class : 'r08_inputLong';
		
		var el = '<select id="' + id + '" name="' + id + '" size="1" class="'+ cls +'">' + "\n";		
		$H(data).each(function(item){
			var selected = (item.key == ref) ? 'selected' : '';
			el += '<option value="' + item.key + '" ' + selected + '>' + item.value + '</option>' + "\n";					
		});
		el += '</select>' + "\n";
		
		// Create select
		$('r08_' + id + 'PH').innerHTML = el;		
	}
	
	/* --------------------- */	

	memberProfile.prototype.toggleBusiness = function() {					
		// Disable Text input
		$('businessName').disabled = this.radioBiz[0].checked;
		$('businessTitle').disabled = this.radioBiz[0].checked;				
	}
	
	/* --------------------- */	
	
	memberProfile.prototype.toggleProvince = function() {			
		
		if ($('country').value == 'US') {
			Element.show('r08_provincePH');
			if (memberProfileData['province'] == null) {
				this.createDropdown('province', r08_form_provinceUSData, this.data['provinceStateCode']);
			}
			else {
				this.createDropdown('province', r08_form_provinceUSData, memberProfileData['province']);
			}
			Element.show('r08_provincePH2');
		}
		else if ($('country').value == 'CA') {
			Element.show('r08_provincePH');
			if (memberProfileData['province'] == null) {
				this.createDropdown('province', r08_form_provinceCAData, this.data['provinceStateCode']);
			}
			else {
				this.createDropdown('province', r08_form_provinceCAData, memberProfileData['province']);
			}
			Element.show('r08_provincePH2');
		}
		else {
			Element.update('r08_provincePH','');
			Element.hide('r08_provincePH');
			Element.hide('r08_provincePH2');
		}
	}
	
	/* --------------------- */		
	
	memberProfile.prototype.togglePOBox = function() {
		// Toggle
		this.POBox = (this.POBox) ? false : true;
		Element.toggle('r08_POBox');
		
		//alert(this.POBox);
		
		// Scroller restart
		Sc.restart();
	}

	
	/* --------------------- */				
}

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

function r08_setSpinnerPosition() {
	var spinner = 'r08_confirmSpinner';
	var layerSize = new Object();
	var windowSize = new Object();
	var posX, posY;
	var scrollpos;		
	
	// Size
	layerSize = Element.getDimensions(spinner);
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName=="Netscape") { 
			windowSize.h = window.innerHeight;
			windowSize.w = window.innerWidth;			
		}	
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			windowSize.h = document.body.offsetHeight;
			windowSize.w = document.body.offsetWidth;
		}				
	}			
	
	// Default position : top 30px
	if (window.innerHeight){
		scrollpos = window.pageYOffset
	} else if (document.documentElement && document.documentElement.scrollTop) {
		scrollpos = document.documentElement.scrollTop
	} else if (document.body) {
		scrollpos = document.body.scrollTop
	}		
	
	posX = (windowSize.w - layerSize.width) /2;		
	posY = scrollpos + 30;	
							
	$(spinner).style.top = posY + 'px';
	$(spinner).style.left = posX + 'px';		
}

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

function addressDiscard() {
	var nextStep;
		
	addressDiscard.prototype.start = function (step) {
		var orig, dx, dy ;
	
		// init
		this.nextStep = step;
	
		// Position
		orig = findPos($('r08_layerXY'));
		dy = orig[1] + 31; // 31
		dx = orig[0] + 190; // 190 cf css layer dimension
	
		// Fade up
		$('fadeLayer').style.zIndex = 2;
		$('benefits').style.zIndex = 1;	
	
		// Apply style
		$('r08_stepAddressDiscard').style.top = dy + 'px';
		$('r08_stepAddressDiscard').style.left = dx + 'px';			
		$('r08_stepAddressDiscard').style.zIndex = 5000;		
	
		// Show
		Element.show('r08_stepAddressDiscard');
	}

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

	addressDiscard.prototype.stop = function () {
	
		// Fade down
		$('fadeLayer').style.zIndex = 1;
		$('benefits').style.zIndex = 2;		
	
		// Show
		Element.hide('r08_stepAddressDiscard');
	}

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

	addressDiscard.prototype.go = function () {
	
		// Fade down
		$('fadeLayer').style.zIndex = 1;
		$('benefits').style.zIndex = 2;			
	
		// Show
		Element.hide('r08_stepAddressDiscard');
		
		// Go
		StepNav.go(this.nextStep,'3Bis');
	}

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

}
/* --------------------------------------------------------------- */
