var OrangeBroadband = {};

OrangeBroadband.checklist = Class.create({
	initialize: function (alertElement, triggerElements, continueLinkId, options){
		this.triggerElements = triggerElements;
		this.continueLinkId = continueLinkId;
		alertElement.select('h2').invoke('addClassName', 'replacement'); 
		this.alertBoxHtml = alertElement.innerHTML;
		this.ready = false
		alertElement.remove();
		this.options = Object.extend({
			// options go here
		}, options || {});
		this.bShow = this.show.bindAsEventListener(this);
		this.addAlertHandlers()
	},
	addAlertHandlers: function(){
		this.triggerElements.each(function(elem){
			elem.observe('click', function(event){
				this.show(elem);
				Event.stop(event);
				return false;
			}.bind(this));
		}.bind(this)); 
	},
	show: function(event){
		Control.Modal.open(this.alertBoxHtml);
		$(this.continueLinkId).href = event.href;
		replaceHeaders();
	}
});

OrangeBroadband.checklistOverlay = Class.create({
	initialize: function (triggerElements, options){
		this.triggerElements = triggerElements;
		this.options = Object.extend({
			// options go here
		}, options || {});
		this.attachEventHandlers();
	},
	attachEventHandlers: function(){
		this.triggerElements.each(function(el) {
			el.observe('click', function(event){
				Event.stop(event);
				this.openModal(el);
				return false;
			}.bind(this));
		}.bind(this))
	},
	openModal: function (link, params) { 
		url = this.options.url + "?" + this.options.parampid + "=" + link.up('.package-option').id +"&" + this.options.paramskuid + "=" + link.up('.package-sku').id;
		new ajaxModal(url);
	}	
});

OrangeBroadband.duploOverlay = Class.create({
	initialize: function (triggerElements, options){
		this.triggerElements = triggerElements;
		this.options = Object.extend({
			// options go here
		}, options || {});
		this.attachEventHandlers();
	},
	attachEventHandlers: function(){
		this.triggerElements.each(function(el) {
			el.observe('click', function(event){
				Event.stop(event);
				this.openModal(el);
				return false;
			}.bind(this));
		}.bind(this))
	},
	openModal: function (link, params) { 
		url = this.options.url + "?" + this.options.parampid + "=" + link.up('.package-option').id +"&" + this.options.paramskuid + "=" + link.up('.package-sku').id  +"&" + this.options.parampage + "=" + link.up('.page').id;
		new ajaxModal(url);
	}	
});

OrangeShop.ajaxForm = Class.create({
	initialize: function (formElement, targetElement, options){
		this.formElement = $(formElement);
		this.targetElement = $(targetElement);
		this.options = Object.extend({
			// options go here
		}, options || {});
		
		// add onclick to submit buttons
		this.addEventHandlerToSubmit()
	},
	addEventHandlerToSubmit: function(){
		this.formElement.getInputs('image').invoke('observe', 'click', function(event){ 
			this.submitFormWithAjax(event);
		}.bind(this))
	},
	submitFormWithAjax: function(event) {
		Event.stop(event);
		new Ajax.Updater(this.targetElement, this.formElement.action, {
			evalScripts: true,
			method: 'get',
			parameters: '?isAjax=true&' + this.formElement.serialize()
		});
	}
});

OrangeBroadband.toggleProducts = Class.create(OrangeShop.toggleByLink, {
	initialize: function($super, triggerElement,togglingElement, options){
		$super(triggerElement,togglingElement, options);
		this.togglingElement[3].toggle()
	},
	toggle: function(){
		this.togglingElement.invoke('toggle');
		if (this.togglingElement[0].visible()) 
			{this.doAfterShow()} else {this.doAfterHide()}
	}
});

OrangeBroadband.showSmallPrint = Class.create({
	initialize: function(showLink,triggerElement,togglingElement,options){
		showLink.invoke('observe', 'click', function() {
			triggerElement.innerHTML = options.toggledText;
			triggerElement.addClassName(options.toggledClass);
			togglingElement.show();
			replaceHeaders();
		});
	}
});

Event.observe(window, 'load', function() {

	if($('customerCheckAvailabilityForm')){
		displayChecker();
		
	}
	if($('promo-code_On')){	
		$('promo-code_On').setStyle({
			display: 'none'
		});
		Event.observe('promo-code_On', 'click', function() {
			$('promo-code_On').setStyle({
				display: 'block'
			});
		});
		
	}
	if($$('.feature_price')){
		subscript();
	}
	if($('getting-connected') || $('help-me-choose-overlay') || $$('.duplo-new-customer-sticker')){
		$$('.fixMe').invoke('pngHack');
		$$('img.fixMe').invoke('pngHack');
	}

	if($('traffic-management-link')){
		Event.observe('traffic-management-link', 'click', function() {
			Effect.toggle('traffic', 'slide');
		});
	}
	
	if($('broadband_mobile_plan')){
		Event.observe('broadband_mobile_plan', 'click', openChecker);
	}
	if($('broadband_mobile_sim')){
		Event.observe('broadband_mobile_sim', 'click', openChecker );
	}
	if($('broadband_only')){
		Event.observe('broadband_only', 'click', openChecker );
	}
	if($('openChecker_broadband')){
		Event.observe('openChecker_broadband', 'click', openChecker);
	}
		
	if($$('.modal-link')){
		new linksToModal('.modal-link');
		replaceHeaders();
	}
	
	if($$('.slider')){
		obj = $$('.panelSection');
		for(var i=0; obj.length>i; i++){
			var objId = obj[i].id;
			$(objId).setStyle({
				display: 'none'
			});
		}
	}
	
});

document.observe("dom:loaded", function() {
	if($('showCodeSection')){
		if($('promo-code_On')){
			$('promo-code_On').setStyle({display:'block'});
		}
	}
	
	if($('broadbandAds')){
		var so2 = new SWFObject("/content/flash/05052/RHP_SFBB_v3.swf", "left_hand_nav", "170", "225", "9", "#ffffff");
		so2.addParam("wmode", "transparent");
		so2.write("broadbandAds");
	}
});


function checkInputValue(e){
	if($('customerCheckAvailability_PHONENUMBER').value == ""){ 
	    Event.stop(e);
	    $('jsvalidator_customerCheckAvailability_customerCheckAvailability_PHONENUMBER').setStyle({
	    display: 'block',
	    opacity: '1'
	    });
	    return false;
	}
}

function openChecker(el){
	var but1 = $('availability_checker_btn_up');
	var el = $('customerCheckAvailabilityForm');
	if($('customerCheckAvailabilityForm').offsetHeight == 0 ){
	   	toggleChecker(el, but1);
	}
}

function subscript(){
	var price, pound, pence, newPrice, i;
	var priceObject = $$('.feature_price');
	for(i = 0; i < priceObject.length; i++){
		price = priceObject[i].firstChild.nodeValue;
		if(priceObject[i].firstChild.nodeValue.length == 5){
			pound = price.slice(0,2);
			pence = price.slice(2,5);
		}else if(priceObject[i].firstChild.nodeValue.length == 6){
			pound = price.slice(0,3);
			pence =price.slice(3,6);
		}
		if($('broadband-landing')){
			var newPrice = '<em>'+ pound + '<span class="feature-price-sub">' + pence + '</span></em>';
		}else if($$('.broadband-product-details')){
			var newPrice = '<em class="price">'+ pound + '<span class="feature-price-sub">' + pence + '</span></em>';
		}
		
		var obj = $$('em');
		obj[i].replace(newPrice, price);
	}
}

/* Bundles Toggle slider */
function tog(myElement){

   var sliderPanel = myElement + "_On";   

       Effect.toggle(sliderPanel, 'slide');

       if ($(myElement).className == 'plusImg'){

           $(myElement).removeClassName('plusImg');
           $(myElement).addClassName('minusImg');           

       } else if ($(myElement).className == 'minusImg'){

           $(myElement).removeClassName('minusImg');
           $(myElement).addClassName('plusImg');           
       }

   }

function toggleChecker(el , button){
	if($('customerCheckAvailabilityForm')){
		submittedCheck("new");		
	}
	Effect.toggle(el, 'slide');
	
	if(el.offsetHeight == "0"){	
		if($('showResultsInDropDown')){
			el.parentNode.setStyle({display:'block'});
		}
		button.removeClassName('drop-down-down');			
		button.addClassName('drop-down-up');
	}else{
		button.removeClassName('drop-down-up');		
		button.addClassName('drop-down-down');
		
		if($('customerCheckAvailabilityForm') && !$$('.showAvailabilityDropDown')){
			clearAvailabilityChecker();
		}
	}	
}

function submittedCheck(val){
	var submit;
	if(val == "true"){
		submit = val;
	}
	if(submit == "true"){
		$('customerCheckAvailabilityForm').parentNode.style.display = "block"; 
	}
}

function clearAvailabilityChecker(){
	$('customerCheckAvailability.PHONENUMBER').value = " ";
}

function showLifeStyleChecker(url){
	var overlayUrl = url + '/broadband/fragments/lifestyleCheckerResults.jsp';
	//var packagesUrl = url + '/broadband/fragments/broadband-options.jsp';
	var availabilityUrl = url + '/broadband/fragments/check-availability.jsp';
	$('helpMeChoose').request({
		onSuccess: function(t) {
        	new Ajax.Updater('form' , overlayUrl , {
				asynchronous: true,
				method: 'post'
			}); 

        	/*new Ajax.Updater('package-list-overview' , packagesUrl , {
				asynchronous: true,
				method: 'post'
			});*/ 
			
			new Ajax.Updater('checkAvailabilityDropDown' , availabilityUrl , {
				asynchronous: true,
				method: 'post'
			});
			 
		}
    });
    setTimeout('replaceHeaders(), subscript(), displayChecker()', 5000);
    
}

function displayChecker(){
	var but1 = $('availability_checker_btn_up');
	var el = $('customerCheckAvailabilityForm');
	if(el.parentNode.className == "hideAvailabilityDropDown" && $('broadband-landing')){
		el.setStyle({display:'block'});
		but1.removeClassName('drop-down-down');			
		but1.addClassName('drop-down-up');
	}else if(el.parentNode.className == "hideAvailabilityDropDown" || $('showResultsInDropDown')){
		el.setStyle({display:'none'});
	}else{
		el.setStyle({display:'block'});
		but1.removeClassName('drop-down-down');			
		but1.addClassName('drop-down-up');
	}
	
	Event.observe('availability_checker_btn_up', 'click', function() {
		toggleChecker(el, but1);			
		return false;
	});
}

function refreshPage(){
	window.location.reload();
	
}
