window.addEvent('domready', function(){

	/* START - GETTING PAGE ELEMENTS */
	var tariff = $('tariff-table');
	var loader = $('loading');
	var warning = $('warning');
	var buybutton = $('buy-now-btn');
	
	var stepTwoHdrPm = $('step-two-hdr-pm');
	var stepTwoHdrPayg = $('step-two-hdr-payg');
	
	var insuranceSelect = $('select-insurance');
	var insuranceCheckbox = $('fonesafe_ins');
	var insuranceText = $('insurance-text');
	var insuranceCheck = $('insurance-check');
	
	insuranceSelect.set('disabled','');
	
	var pmTariff = $('pm-tariff');
	var paygTariff = $('payg-tariff');
	/* END - GETTING PAGE ELEMENTS */
	
	/* START - SETTING UP TWEENS FOR AJAX MESSAGING  */
	loader.set('tween',{'link':'chain'}).setStyles({'display':'block', 'opacity':0});
	warning.set('tween',{'link':'chain'}).setStyles({'display':'block', 'opacity':0});
	/* END - SETTING UP TWEENS FOR AJAX MESSAGING  */

	/* START - INITIALIZING FORM CLASS & CLEARING THE HIDDEN FORM FIELDS INCASE OF REMEMBERED VALUES */
	var formState = new FormState({
		inputBundleTypeGroup: 'bundleTypeGroup',
		inputCpc:'tariffName',
		inputMpc:'handsetName',
		inputOfferId:'offerId',
		inputPaymentType:'paymentType'
	});
	formState.clearForm();
	/* START - INITIALIZING FORM CLASS & CLEARING THE HIDDEN FORM FIELDS INCASE OF REMEMBERED VALUES */	
	
	/* START - INITIALIZING MESSAGING NEXT TO BUY BUTTON & SETTING INITIAL MESSAGE  */
	var messaging = new Messaging({
		'selectphone': 'select-phone',
		'selectplan': 'select-plan',
		'pmselection': 'pm-selection',
		'paygselection': 'payg-selection',
		'props': {duration:500, transition:'quad:in:out'}							  
	});
	messaging.set('selectphone');
	/* END - INITIALIZING MESSAGING NEXT TO BUY BUTTON & SETTING INITIAL MESSAGE  */	
	
	/* START - INITIALIZING BUY NOW BUTTON  */
	var buttonState = new ButtonState('buy-now-btn', {
		csson:'action-btn-magenta',
		cssoff:'action-btn-disabled',
		form:'ProductDetailsForm'								  
	});
	/* END - INITIALIZING BUY NOW BUTTON  */	
	
	/* START - RESETTING ALL RADIO BUTTONS INCASE OF REMEMBERED VALUES */
	$$('input[type=radio]').set('checked','');
	/* END - RESETTING ALL RADIO BUTTONS INCASE OF REMEMBERED VALUES */
	
	/* START - INITIALIZING HANDSET & BOOSTER RADIOS UI */
	var handsetRadios = new Radios({
		radios:'input.radio-handset',
		labels:'label.label-handset',
		csshover:'label-handset-hover',
		cssactive:'label-handset-active'
	});

	var boosterRadios = new Radios({
		radios:'input.radio-booster',
		labels:'label.label-booster',
		csshover:'label-booster-hover',
		cssactive:'label-booster-active'
	});
	/* END - INITIALIZING HANDSET & BOOSTER RADIOS UI */
	
	/* START - INITIALIZING BIZ BOOSTER */
	var bizSelectBooster = new BizSelectBooster('flexibleBoosterSelect');
	/* END - INITIALIZING BIZ BOOSTER */
	
	/* START - INITIALIZING TIPS FOR LABELS */
	var tips = new StaticTip({
		elements: 'label.standard-tips',
		classname:'standard-tip'
	});
	/* END - INITIALIZING TIPS FOR LABELS */
//$$('#buy-now-btn.iphone').set('rel', submitLink.rel() );

	/* START - ADDING EVENT TO THE INSURANCE DROPDOWN */
	insuranceSelect.addEvent('change', function(event){
		if(event.target.get('value')==0){
			
			/* check to see if the user has completed the form - if so set button to enabled */
			if($$('input.radio-booster').get('checked').contains(true) && $$('input.radio-tariff').get('checked').contains(true)) { 
		
				buttonState.set('enabled');	
			}
			/* reset insurance checkbox */
			insuranceCheckbox.set('checked','');
			insuranceCheckbox.set('disabled','disabled');
			insuranceText.setStyles({'display':'none'});
		} else {
			/* check form to see if user has completed the form - if so set button to enabled */
			//submitLink.insurance = $$('#fonesafe_ins').get('value');
			//$$('#buy-now-btn.iphone').set('rel', submitLink.rel() );
			/*
				if($$('##buy-now-btn.iphone')){
					var submitButtoniPhone = $$('##buy-now-btn.iphone')
						if(submitButtoniPhone.get('rel') == ''){
							submitButtoniPhone.set('rel',  "{'" + $$('#fonesafe_ins').get('name')+"':'" + $$('#fonesafe_ins').get('value')  + "'}"  ); 
						} else {
							var oldRel = " "+ submitButtoniPhone.get('rel') + " ";
							var newRel = oldRel.replace('}' , ", '" + $$('#fonesafe_ins').get('name')+"':'"+ $$('#fonesafe_ins').get('value') + "'}");
							alert(newRel)
							submitButtoniPhone.set('rel',  newRel  ); 
							}
					}
				*/
			if($$('.pm-radio').get('checked').contains(true) && $$('input.radio-booster').get('checked').contains(true) && $$('input.radio-tariff').get('checked').contains(true)) { 
	
				buttonState.set('enabled');	
			} else {
				buttonState.set('disabled');	
				insuranceText.setStyles({'display':'block'});
			}
			/* enable checkbox to be able to select insurance or not */

			insuranceCheckbox.set('disabled','');
		}	  
	});
	/* END - ADDING EVENT TO THE INSURANCE DROPDOWN */
	
	/* START - ADDING EVENT TO INSURANCE CHECKBOX */
	insuranceCheckbox.addEvent('click', function(event){
		/* check to see if user has completed the form, if so set button to enabled, if set button to enabled */
		if(event.target.get('checked') && $$('input.radio-booster').get('checked').contains(true) && $$('input.radio-tariff').get('checked').contains(true) ){
			buttonState.set('enabled');	
		} else {
			buttonState.set('disabled');	
		}											 
	});
	/* END - ADDING EVENT TO INSURANCE CHECKBOX */
	
	/* START - ADD EVENT TO PAYG RADIO LABELS */
	$$('.payg-radio').addEvent('click', function(event){
												 
		var target = $(event.target).getParent('label') || $(event.target);									 
		
		/* get mpc value from radio */
		var handsetValue = target.getElement('input[type=radio]').get('value');
		/* get offerId value from hidden field */
		var offerId = target.getElement('input.offerid').get('value');
		/* get cost value from hidden field */
		var cost = target.getElement('input.cost').get('value');
		
		/* reset form for payg */
		formState.clearForm();
		
		/* insert values into hidden form fields */
		formState.setPaymentType('pay-as-you-go');
		formState.setHandset(handsetValue);		
		formState.setOfferId(offerId);	
		
		/* set cost in payg messaging panel */
		$('payg-cost').set('html', cost );
		
		/* display payg messaging next to button */
		messaging.display('paygselection');
		
		/* disable insurance dropdown */
		insuranceSelect.set('value',0).set('disabled', 'disabled');
		/* disable insurance checkbox & disable it */
		insuranceCheckbox.set('checked','').set('disabled','disabled');
		insuranceText.setStyles({'display':'none'});

		
		/* clear booster radios (theres no flexible boosters on PAYG handsets) */
		boosterRadios.resetRadios();
		
		/* clear tariff table in PM */
		tariff.empty();
		
		/* switch panels between payg & pm headers */
		stepTwoHdrPm.setStyle('display','none');
		stepTwoHdrPayg.setStyle('display','block');
		
		/* switch between payg & pm panels */
		pmTariff.setStyle('display','none');
		paygTariff.setStyle('display','block');
		
		/* set button to enabled */
		buttonState.set('enabled');
	});
	/* END - ADD EVENT TO PAYG RADIO LABELS */	
	
		/* START - ADD EVENT TO PAYG RADIO LABELS */
	$$('.bizunlimited-radio').addEvent('click', function(event){
												 
		var target = $(event.target).getParent('label') || $(event.target);									 
		
		/* get mpc value from radio */
		var handsetValue = target.getElement('input[type=radio]').get('value');
		/* get offerId value from hidden field */
		var offerId = target.getElement('input.offerid').get('value');
		/* get cost value from hidden field */
		var cost = target.getElement('input.cost').get('value');
		/* get plan cost value from hidden field */
		var plancost = target.getElement('input.plancost').get('value');
		
		/* reset form for payg */
		formState.clearForm();
		
		/* insert values into hidden form fields */
		formState.setPaymentType('pay-as-you-go');
		formState.setHandset(handsetValue);		
		formState.setOfferId(offerId);	
		
		/* set costs in pm-selection panel */
		$('pm-cost').set('html', cost);
		$('tariff-cost').set('html', plancost);
		
		/* switch message to pm-selection */
		messaging.display('pmselection');
		
		/* disable insurance dropdown */
		insuranceSelect.set('value',0).set('disabled', 'disabled');
		/* disable insurance checkbox & disable it */
		insuranceCheckbox.set('checked','').set('disabled','disabled');
		insuranceText.setStyles({'display':'none'});
		
		/* clear booster radios (theres no flexible boosters on PAYG handsets) */
		boosterRadios.resetRadios();
		
		/* clear tariff table in PM */
		tariff.empty();
		
		/* switch panels between payg & pm headers */
		stepTwoHdrPm.setStyle('display','none');
		stepTwoHdrPayg.setStyle('display','block');
		
		/* switch between payg & pm panels */
		pmTariff.setStyle('display','none');
		paygTariff.setStyle('display','block');
		
		/* set button to enabled */
		buttonState.set('enabled');
	});
	/* END - ADD EVENT TO PAYG RADIO LABELS */	
	
	/* START - ADD EVENT TO PM RADIO LABELS */	
	$$('.pm-radio').addEvent('click', function(event){
		var target = $(event.target).getParent('label') || $(event.target);		
		
		/* get handset value */
		var handsetValue = target.getElement('input').get('value');
		
		/* reset form for pm */
		formState.clearForm();
		
		/* insert values into hidden form fields */
		formState.setPaymentType('pay-monthly');
		formState.setHandset(handsetValue);
		
		/* display select plan messaging next to button */
		messaging.display('selectplan');
		
		/* reset insurance checkbox */
		insuranceSelect.set('value',0)
		insuranceSelect.set('disabled', '');
		insuranceCheckbox.set('checked','');
		insuranceCheckbox.set('disabled','disabled');
		
		/* disable button */
		buttonState.set('disabled');
		
		/* reset booster radios so initial radio is selected */
		boosterRadios.setIndex(0);
		
		/* switch panels between payg & pm headers */
		stepTwoHdrPm.setStyle('display','block');
		stepTwoHdrPayg.setStyle('display','none');
			
		/* switch between payg & pm panels */
		pmTariff.setStyle('display','block');
		paygTariff.setStyle('display','none');
		
		/* request tariffs based on handset value */
		reqTariff.send({
			'method':'post',
			'data':'handset='+ handsetValue + '&business=' + $('business').get('value')
		});
		
	});
	/* END - ADD EVENT TO PM RADIO LABELS */

	/* get priceplans */
	var reqTariff = new Request.HTML({
		url:'/request/get-tariff/',
		secure:false,
		onRequest: function(){
			/* display loader */
			loader.tween('opacity',1);
			
			/* clear previous tariffs */
			tariff.empty();
		},
		onFailure: function(){
			/* display warning if things go wrong with request */
			warning.tween('opacity', 1).tween('opacity', 0);	
		},
		onSuccess: function(responseTree, responseElements, responseHTML){
			
			/* insert returned HTML into tariff container */
			tariff.adopt(responseTree);
			
			if( $('ins-value')){
				var insCostLoc = $('ins-value');
				$('ins-cost-value').set('html', insCostLoc.get('value'));
			}
			
			
			/* get table rows */
			var tableRows = tariff.getElements('tr.row-tariff');
			
			/* assign event to table row */
			tableRows.addEvent('click', function(event){
				
				/* ensure that the event target is the table row */
				var target = $(event.target).getParent('tr') || $(event.target);
				
				/* get label td and inputs */
				var inputTariff = target.getElement('td.label').getElement('input.radio-tariff');
				var inputOfferId = target.getElement('td.label').getElement('input.tariff-offerid');	
				var inputPhonePrice = target.getElement('td.label').getElement('input.tariff-mpc-price');	
				var inputTariffPrice = target.getElement('td.label').getElement('input.tariff-cpc-price');	
				
				/* set form variables */
				formState.setOfferId(inputOfferId.get('value'));
				formState.setTariff(inputTariff.get('value'));
				
				/* set costs in pm-selection panel */
				$('pm-cost').set('html', inputPhonePrice.get('value'));
				$('tariff-cost').set('html', inputTariffPrice.get('value'));
				
				/* switch message to pm-selection */
				messaging.display('pmselection');
				
				/* enable button */
				buttonState.set('enabled');
				
			});
			
			/*  initialize radio UI for table rows */
			var tariffRadios = new RadioTable({
				radios:'input.radio-tariff',
				labels:'label.label-tariff',
				rows:'tr.row-tariff',
				csshover:'label-tariff-hover',
				cssactive:'label-tariff-active',
				rowhover:'row-tariff-hover',
				rowactive:'row-tariff-active'
			});

			/*  fade out loader */
			loader.tween('opacity',0);
		}
	});
	

		$('buy-section').addEvent('mouseenter', function(event){
		var target = $(event.target).getNext('input-radio-booster') || $(event.target);		
			if ($('fonesafe_ins').get('checked')=='' && $('select-insurance').get('value')== '1' ) {
				insuranceCheck.setStyles({'display':'block'});
				buttonState.set('disabled');	
				}
		});
		
		$('buy-section').addEvent('mouseleave', function(event){
		var target = $(event.target).getNext('input-radio-booster') || $(event.target);		
			if ($('fonesafe_ins').get('checked')=='' && $('select-insurance').get('value')== '1' ) {
				insuranceCheck.setStyles({'display':'none'});
				}
		});

});

