$(document).ready(function(){
	$(".tabRow .carousel_tab, .tabRow .productDetail_tab").hover(
		function(){
			$(this).addClass('hover');
		},
		function(){
			$(this).removeClass('hover');
		}
	);
	if($(".ie6").length>0){
		$(".btn").hover(
			function(){
				$(this).addClass('hover');
			},
			function(){
				$(this).removeClass('hover');
			}
		);
	}
});

QLJS.setupExpansionButtons = function (maxOpen, parentSelector){
	$(parentSelector + " .expansionBtn").bind("click", function(){
		var btn = $(this);
		if($(btn).hasClass("expansionBtnMinus")){
			QLJS.closeExpansionPanel(btn);
			
		}else{
			QLJS.closeBottomExpansionPanels(parentSelector + " .expansionBtnMinus", maxOpen);
			QLJS.openExpansionPanel(btn);
		}
	});
}

/**
	@param openElements - array of jQuery elements that match .expansionBtnMinus
	@param maxOpen - number of expansion elements that can be open at a given time
	
	This function closes expansion panels based on the maximum number allowed open.
	Panels at the bottom are closed first. 


**/
QLJS.closeBottomExpansionPanels = function (selector, maxOpen){
	if(maxOpen >= 0){
		var openElements = $(selector);
		var numberOpen = openElements.length;
		var numberToClose = numberOpen - maxOpen;
		if(numberToClose>0){
			var firstToClose = numberOpen - numberToClose;
			for(var i = firstToClose; i<numberOpen; i++){
				var element = openElements[i];
				QLJS.closeExpansionPanel(element);
			}
		}
	}
}

QLJS.openExpansionPanel = function (btn){
	$(btn).siblings(".priceAbrv").css("visibility", "hidden");
	$(btn).siblings(".expansionPanel").slideDown('slow', function(){
		if($(".ie6") && $(".ie6").length > 0){
			DD_belatedPNG.fix(".expansionPanel .png_bg");
		}
		$(btn).find(".expansionText").html("-");
		$(btn).addClass("expansionBtnMinus");
	});
}

QLJS.closeExpansionPanel = function (btn){
	$(btn).siblings(".expansionPanel").slideUp('slow', function(){
		$(btn).siblings(".priceAbrv").css("visibility", "visible");
		$(btn).find(".expansionText").html("+");
		$(btn).removeClass("expansionBtnMinus");
	});
}

function getparam( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function addToCookieForPlans(){
	var prodArray = [] ;
	var prodArrayFinal = [] ;
	var compare_param = getparam( 'compare' );
	
	if (document.compareTariffs.compareProductList) {
		   if (typeof document.compareTariffs.compareProductList != 'undefined') {
			   
			   if(document.compareTariffs.compareProductList.checked){
			    	  prodArray.push(
			        		 document.compareTariffs.compareProductList.value
			        	    );				     
			   }
		      for (i = 0; i < document.compareTariffs.compareProductList.length; i++) {
		         if (document.compareTariffs.compareProductList[i].checked) {		        
		        	 prodArray.push(
		        		 document.compareTariffs.compareProductList[i].value
		        	    );		        	 
		        	 
		         }
		      }
		   } else {
		      if(document.compareTariffs.compareProductList.checked){
		    	  prodArray.push(
		        		 document.compareTariffs.compareProductList.value
		        	    );
			     
		      }
		   }
	}		
	
 	 
		
	if(QLJS.getCookie("compareTariff")!=""){		
		var prodArrayCookie=QLJS.getCookie("compareTariff").split(",");	 
		for( j=0;j<prodArrayCookie.length;j++) {		
			if(prodArrayFinal=="" || (prodArrayFinal.indexOf(prodArrayCookie[j]) == -1 & prodArrayFinal.length<3)){				
				prodArrayFinal.push(prodArrayCookie[j]);
			}	
		}	
	}
	
	for( j=0;j<prodArray.length;j++) {		 
    	if(prodArrayFinal=="" || (prodArrayFinal.indexOf(prodArray[j]) == -1 && prodArrayFinal.length<3)) { 
    		prodArrayFinal.push(prodArray[j]);
    	}
    }
	QLJS.setCookie("compareTariff", prodArrayFinal, 1); 
	
}

function addToCookieForDevices(){
	var prodArray = [] ;
	var prodArrayFinal = [] ;
	var compare_param = getparam( 'compare' );
	
	if (document.compareDevices.compareProductList) {
		   if (typeof document.compareDevices.compareProductList != 'undefined') {
			   
			   if(document.compareDevices.compareProductList.checked){
			    	  prodArray.push(
			        		 document.compareDevices.compareProductList.value
			        	    );				     
			   }
		      for (i = 0; i < document.compareDevices.compareProductList.length; i++) {
		         if (document.compareDevices.compareProductList[i].checked) {		        
		        	 prodArray.push(
		        		 document.compareDevices.compareProductList[i].value
		        	    );		        	 
		        	 
		         }
		      }
		   } else {
		      if(document.compareDevices.compareProductList.checked){
		    	  prodArray.push(
		        		 document.compareDevices.compareProductList.value
		        	    );
			     
		      }
		   }
	}		
	
 	 
		
	if(QLJS.getCookie("compareDevice")!=""){		
		var prodArrayCookie=QLJS.getCookie("compareDevice").split(",");	 
		for( j=0;j<prodArrayCookie.length;j++) {		
			if(prodArrayFinal=="" || (prodArrayFinal.indexOf(prodArrayCookie[j]) == -1 & prodArrayFinal.length<3)){				
				prodArrayFinal.push(prodArrayCookie[j]);
			}	
		}	
	}
	
	for( j=0;j<prodArray.length;j++) {		 
    	if(prodArrayFinal=="" || (prodArrayFinal.indexOf(prodArray[j]) == -1 && prodArrayFinal.length<3)) { 
    		prodArrayFinal.push(prodArray[j]);
    	}
    }
	QLJS.setCookie("compareDevice", prodArrayFinal, 1); 
	
}

QLJS.updateCheckboxBtns = function(){
	var numberChecked = $(".compareCheckbox:checked").length;
	if(numberChecked  == 2 || numberChecked == 3){
		$(".compareCheckbox:checked").siblings(".btn").removeClass("inactiveCompare").addClass("activeCompare");
		$('.compareCheckbox').not(':checked').siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}else{
		$(".compareCheckbox").siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}
}


QLJS.updateCheckboxBtnsForPlans = function(){
	

	var numberChecked =0;
	var compareArray = [] ;
	var compare_param = getparam('compare');
	var page_param = getparam( 'page' );
	
	if (page_param=="" && compare_param!="") {	 
		compareArray=unescape(compare_param).substring(1).split(",");	
		numberChecked=compareArray.length;	  	 
	} else {
		if (QLJS.getCookie("compareTariff")!="") {	
			compareArray=QLJS.getCookie("compareTariff").split(",");
			numberChecked=compareArray.length;
		 }		
	}
 
 
	numberChecked=numberChecked+$(".compareCheckbox:checked").length;
 
 
	if(compareArray!=null && compareArray!=""){				
		if (typeof document.compareTariffs.compareProductList != 'undefined') {
			if(compareArray.indexOf(document.compareTariffs.compareProductList.value)  != -1){
				compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList.value), 1);	
				if(document.compareTariffs.compareProductList.checked ==true){
					numberChecked--;
				}else{
					document.compareTariffs.compareProductList.checked=true;			
				}
		   }
			for (i = 0; i < document.compareTariffs.compareProductList.length; i++) {    	    		 
				if(compareArray.indexOf(document.compareTariffs.compareProductList[i].value)  != -1) {
					compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList[i].value), 1);
					if(document.compareTariffs.compareProductList[i].checked ==true){
						numberChecked--;
					}else{
						document.compareTariffs.compareProductList[i].checked=true;
						
							
					}
					
					
			    }			        
			 }
		} else{				 				    			 
			if(compareArray.indexOf(document.compareTariffs.compareProductList.value)  != -1){
				compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList.value), 1);
				if(document.compareTariffs.compareProductList.checked ==true){
					numberChecked--;
				}else{
					document.compareTariffs.compareProductList.checked=true;
					
					
				}
			}	
		}
		QLJS.setCookie("compareTariff", compareArray, 1); 
	}
	
	if(numberChecked  == 2 || numberChecked == 3){
		$(".compareCheckbox:checked").siblings(".btn").removeClass("inactiveCompare").addClass("activeCompare");
		$('.compareCheckbox').not(':checked').siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}else{
		$(".compareCheckbox").siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}
}


QLJS.updateCheckboxBtnsForDevices = function(){
	

	var numberChecked =0;
	var compareArray = [] ;
	var compare_param = getparam('compare');
	var page_param = getparam( 'page' );
	
	if(page_param==""){	 
		if(compare_param!=""){
			compareArray=unescape(compare_param).substring(1).split(",");	
			numberChecked=compareArray.length;	  	 
		} 
	}else{
		if(QLJS.getCookie("compareDevice")!=""){	
			compareArray=QLJS.getCookie("compareDevice").split(",");
			numberChecked=compareArray.length;
		 }		
	}
 
 
	numberChecked=numberChecked+$(".compareCheckbox:checked").length;
 
 
	if(compareArray!=null && compareArray!=""){				
		if (typeof document.compareDevices.compareProductList != 'undefined') {
			if(compareArray.indexOf(document.compareDevices.compareProductList.value)  != -1){
				compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList.value), 1);	
				if(document.compareDevices.compareProductList.checked ==true){
					numberChecked--;
				}else{
					document.compareDevices.compareProductList.checked=true;			
				}
		   }
			for (i = 0; i < document.compareDevices.compareProductList.length; i++) {    	    		 
				if(compareArray.indexOf(document.compareDevices.compareProductList[i].value)  != -1) {
					compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList[i].value), 1);
					if(document.compareDevices.compareProductList[i].checked ==true){
						numberChecked--;
					}else{
						document.compareDevices.compareProductList[i].checked=true;
						
							
					}
					
					
			    }			        
			 }
		} else{				 				    			 
			if(compareArray.indexOf(document.compareDevices.compareProductList.value)  != -1){
				compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList.value), 1);
				if(document.compareDevices.compareProductList.checked ==true){
					numberChecked--;
				}else{
					document.compareDevices.compareProductList.checked=true;
					
					
				}
			}	
		}
		QLJS.setCookie("compareDevice", compareArray, 1); 
	}
	
	if(numberChecked  == 2 || numberChecked == 3){
		$(".compareCheckbox:checked").siblings(".btn").removeClass("inactiveCompare").addClass("activeCompare");
		$('.compareCheckbox').not(':checked').siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}else{
		$(".compareCheckbox").siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}
}

QLJS.updateCheckboxBtnsOnChangeForDevices = function(){
	var numberChecked =0;
	var compareArray = [] ;
	var compare_param = getparam('compare');
	var page_param = getparam( 'page' );
 
	if(page_param==""){	 
		if(compare_param!=""){
			compareArray=unescape(compare_param).substring(1).split(",");	
			numberChecked=compareArray.length;	  	 
		} 
	}else{
		if(QLJS.getCookie("compareDevice")!=""){	
			compareArray=QLJS.getCookie("compareDevice").split(",");
			numberChecked=compareArray.length;
		 }		
	}		
 
 
	
	numberChecked=numberChecked+$(".compareCheckbox:checked").length;
	if(compareArray!=null && compareArray!=""){				
		if (typeof document.compareDevices.compareProductList != 'undefined') {	
			if(compareArray.indexOf(document.compareDevices.compareProductList.value)  != -1){				 
				compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList.value), 1);
				numberChecked--; 
		    }
			for (i = 0; i < document.compareDevices.compareProductList.length; i++) {    	    		 
				if(compareArray.indexOf(document.compareDevices.compareProductList[i].value)  != -1) {
				 
						compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList[i].value), 1);
						numberChecked--;
					  
					 
					
					
			    }			        
			 }
		} else{				 				    			 
			if(compareArray.indexOf(document.compareDevices.compareProductList.value)  != -1){
				 
					compareArray.splice(compareArray.indexOf(document.compareDevices.compareProductList.value), 1);
					numberChecked--;
			 
				 
				 
			}	
		}
		QLJS.setCookie("compareDevice", compareArray, 1); 
		document.compareDevices.selectedProd.value=QLJS.getCookie("compareDevice");	
	}
	 
	
	if(numberChecked  == 2 || numberChecked == 3){
		$(".compareCheckbox:checked").siblings(".btn").removeClass("inactiveCompare").addClass("activeCompare");
		$('.compareCheckbox').not(':checked').siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}else{
		$(".compareCheckbox").siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}
}

QLJS.updateCheckboxBtnsOnChangeForPlans = function(){
	var numberChecked =0;
	var compareArray = [] ;
	var compare_param = getparam('compare');
	var page_param = getparam( 'page' );
 
	if(page_param==""){	 
		if(compare_param!=""){
			compareArray=unescape(compare_param).substring(1).split(",");	
			numberChecked=compareArray.length;	  	 
		} 
	}else{
		if(QLJS.getCookie("compareTariff")!=""){	
			compareArray=QLJS.getCookie("compareTariff").split(",");
			numberChecked=compareArray.length;
		 }		
	}		
 
 
	
	numberChecked=numberChecked+$(".compareCheckbox:checked").length;
	if(compareArray!=null && compareArray!=""){				
		if (typeof document.compareTariffs.compareProductList != 'undefined') {	
			if(compareArray.indexOf(document.compareTariffs.compareProductList.value)  != -1){				 
				compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList.value), 1);
				numberChecked--; 
		    }
			for (i = 0; i < document.compareTariffs.compareProductList.length; i++) {    	    		 
				if(compareArray.indexOf(document.compareTariffs.compareProductList[i].value)  != -1) {
				 
						compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList[i].value), 1);
						numberChecked--;
					  
					 
					
					
			    }			        
			 }
		} else{				 				    			 
			if(compareArray.indexOf(document.compareTariffs.compareProductList.value)  != -1){
				 
					compareArray.splice(compareArray.indexOf(document.compareTariffs.compareProductList.value), 1);
					numberChecked--;
			 
				 
				 
			}	
		}
		QLJS.setCookie("compareTariff", compareArray, 1); 
		document.compareTariffs.selectedProd.value=QLJS.getCookie("compareTariff");	
	}
	 
	
	if(numberChecked  == 2 || numberChecked == 3){
		$(".compareCheckbox:checked").siblings(".btn").removeClass("inactiveCompare").addClass("activeCompare");
		$('.compareCheckbox').not(':checked').siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}else{
		$(".compareCheckbox").siblings(".btn").addClass("inactiveCompare").removeClass("activeCompare");
	}
}

/**

	Coverage checker functions

**/
QLJS.cc_url = '';
QLJS.runThisCov = function(){
	
	if (document.getElementById('cmmpcid').value != null && document.getElementById('cmmpcid').value != 'postcode'){
		if(document.type.coverageType[1].checked) {
			QLJS.cc_url = 'http://www.three.co.uk/_popup/Coverage_checker?maptypeForm=mbb&placename=&postcode='+(document.getElementById('cmmpcid').value);
		}
		else {
			QLJS.cc_url = 'http://www.three.co.uk/_popup/Coverage_checker?maptypeForm=mobile&placename=&postcode='+(document.getElementById('cmmpcid').value);
		}
		window.open(QLJS.cc_url,'','scrollbars=no,menubar=no,height=960,width=965,resizable=yes,toolbar=no,location=no,status=no');
	}
}

QLJS.tryThisCov = function(){
	if (document.getElementById('cmmpnid').value != null && document.getElementById('cmmpnid').value != 'place name'){
		if(document.type.coverageType[1].checked) {
			QLJS.cc_url = 'http://www.three.co.uk/_popup/Coverage_checker?maptypeForm=mbb&postcode=&placename='+(document.getElementById('cmmpnid').value);
		}
		else {
			QLJS.cc_url = 'http://www.three.co.uk/_popup/Coverage_checker?maptypeForm=mobile&postcode=&placename='+(document.getElementById('cmmpnid').value);
		}
		window.open(QLJS.cc_url,'','scrollbars=no,menubar=no,height=960,width=965,resizable=yes,toolbar=no,location=no,status=no');
	}
}

QLJS.setupCheckoutErrorStyling = function(){
	$(".checkoutErrorBox").parent().addClass("checkoutError");
}

QLJS.setupTooltip = function(){
	$(".pageCheckout input").bind('focus', function(){
		$(this).parents('.formInput').siblings('.tooltip').show();
	});
	$(".pageCheckout input").bind('blur', function(){
		$(this).parents('.formInput').siblings('.tooltip').hide();
	});
	$(".pageCheckout select").bind('focus', function(){
		$(this).siblings('.tooltip').show();
	});
	$(".pageCheckout select").bind('blur', function(){
		$(this).siblings('.tooltip').hide();
	});
}
QLJS.bindLightbox = function(clickSelector, lightboxContentSelector, lightboxClass){
	$(clickSelector).bind('click', function(){
		$.facebox({ div: lightboxContentSelector}, lightboxClass);
		
		return false;
	});
}
QLJS.bindIFrameLightbox = function(clickSelector, iFrameURL, lightboxClass){
	$(clickSelector).bind('click', function(){
		$.facebox({ iFrameURL: iFrameURL}, lightboxClass);
		
		return false;
	});
}
QLJS.closeLightbox = function(){
	$(document).trigger('close.facebox'); 
}
QLJS.setupMegaMenu = function() {
	if($(".ie6").length > 0 ){
		$(".subLinks").bgiframe();
	}
	
	if($(".no-touch").length > 0){
		QLJS.noTouchMegaMenuInteraction();
	} else{
		QLJS.hasTouchMegaMenuInteraction();
	}
	
}
QLJS.noTouchMegaMenuInteraction = function() {
	$(".mainNavTabWrapper").hover(
		function() {
			
			$(this).data("hover", true);
			$(".hoverTab").removeClass("hoverTab");
			$(this).addClass("hoverTab");
		},

		function() {
			QLJS.finishHover(this);
			
		}
	);
	$(".mainNavTab").hover(
		function() {
			$(this).parent().data("tabHover", true);
		},
		function() {
			$(this).parent().data("tabHover", false);
			QLJS.finishHover($(this).parent());
		}
	);

	$(".subLinks").hover(
		function() {
			
			$(this).parent().data("menuHover", true);
		},
		function() {
			$(this).parent().data("menuHover", false);
			QLJS.finishHover($(this).parent());
		}
	);
}
QLJS.hasTouchMegaMenuInteraction = function() {
	$(".mainNavTabWrapper").bind('click', function(){
		if($(this).hasClass("hoverTab")){
			//$(this).removeClass("hoverTab");
			return true;
		}else{
			$(".hoverTab").removeClass("hoverTab");
			$(this).addClass("hoverTab");
			return false;
		}
	});
	$(".mainNavTabWrapper .closeMegaMenu").bind('click', function(){
		$(this).parents('.hoverTab').removeClass('hoverTab');
		return false;
	});
	$('*').bind('click',function (event) {	
			if($(event.target).parents('#mainNavTabs').length == 0){
				$(".hoverTab").removeClass("hoverTab");
				
			}
		}
	);
}
QLJS.finishHover = function(element) {
	setTimeout(
		function() {
			if (!$(element).data("menuHover") && !$(element).data("tabHover")) {
				$(element).removeClass("hoverTab");
			}
		}
		, 200);

}

QLJS.disbaleInputSubmit = function(){
	$("input:text, select").bind("keypress", function(e) {
	  if (e.keyCode == 13) return false;
	});
}

