function clearLiveCookies()
{
	Cookie.remove('oid');
	Cookie.remove('contractLength');
	Cookie.remove('tid');
}

function ShowPhoneNumber()
{
	/*			var showNumber = document.getElementById('affiliate-cart-contact');
				showNumber.style.display='none';
				var hideNumber = document.getElementById('affiliate-cart-hotline');
				hideNumber.style.display='';
	*/
}

var Loader = {
	initialized: 0,
	stack: [],

	push: function(funct) {
		Loader.stack.push(funct);
	},
	start: function() {
		if (Loader.initialized == 0) {
			for (var i=0,length=Loader.stack.length; i<length; i++) {
				Loader.stack[i]();
				Loader.stack[i] = null;
			}
			Loader.stack.length = 0;
			Loader.stack = [];
		}
		Loader.initialized += 1;
	}
}

var $ = function(id) {
	return document.getElementById(id);
}

var $$ = function(tagName, classNameMatch)
{
    var res = new Array();
    var tags = document.getElementsByTagName(tagName);
    for (var i=0, length=tags.length; i<length; i++)
    {
        if (typeof(classNameMatch) == 'undefined' || tags[i].className.match(classNameMatch))
        {
            res.push(tags[i]);
        }
    }
    return res;
}

var Leftnav = {
	menu: [],

	init: function()
	{
		var containers = $$('ul', 'js_leftnav_container');
		for (var i=0, length=containers.length; i<length; i++)
		{
		    var ul = containers[i];
			var first = Leftnav.getFirstNode(ul);
			var li = first;
			while(li) {
				var needClose = true;
				if ((li.nodeName == 'LI') && !li.className.match('noarrow')) {
					if (Leftnav.getSubNode(li)) {
						var a = Leftnav.getLink(li);
						a.onclick = function() { Leftnav.openNode(this); return false; };
						this.menu.push(a);
						needClose = false;
					}
				}
				if ((li.nodeName == 'LI') && needClose) {
					var a = Leftnav.getLink(li);
					a.onclick = function() { Leftnav.closeAll(); };
				}
				li = li.nextSibling;
			}
		}
		if(containers.length == 0) return false;
		else return true;
	},

    withinElement: function (e, elem)
	{
		if ( !e.target )
		    e.target = e.srcElement || document; // Fixes #1925 where srcElement might not be defined either

		if ( !e.relatedTarget && e.fromElement )
			e.relatedTarget = e.fromElement == e.target ? e.toElement : e.fromElement;

		// Check if mouse(over|out) are still within the same parent element
		var parent = e.relatedTarget;
		// Traverse up the tree
		while ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem;}
		// Return true if we actually just moused on to a sub-element
		return parent == elem;
	},

	openNode: function(element) {
		Leftnav.closeAll();
		var li = element.parentNode;
		var ul = Leftnav.getSubNode(li);
		if (ul) {
			ul.style.display = '';
			if(ul.tagName.toLowerCase() == 'div')
			{
			      li.style.position = "relative";
			      ul.onmouseover = function() {
			            Leftnav.clearCloseTimer();
			      }
			      ul.onmouseout = function(e) {
			            if(e == null) e = event;
			            if(Leftnav.withinElement(e, this)) return true;
			            Leftnav.setCloseTimer();
			      };
			      this.clearCloseTimer();
				  this.closeTimer = window.setTimeout('Leftnav.closeAll();', 3000);
			}
			else
			{
				li.className = 'group';
			}
		}
	},

	closeTimer: null,
	
	setCloseTimer: function()
	{
		this.clearCloseTimer();
		this.closeTimer = window.setTimeout('Leftnav.closeAll();', 1000);
	},

	clearCloseTimer: function() 
	{
		if(this.closeTimer != null)
		{
			var tm = this.closeTimer;
			this.closeTimer = null;
			window.clearTimeout(tm);
		}
	},

	closeAll: function() {
		Leftnav.clearCloseTimer();
		var menu = Leftnav.menu;
		for (var i=0, length = menu.length; i<length; i++) {
			var li = menu[i].parentNode;
			li.className = '';
			li.style.position = "static";
			var ul = Leftnav.getSubNode(li);
			if (ul)
			{
				ul.style.display = 'none';
			}
			window.onclick = null;
		}
	},

	getFirstNode: function(ul) {
		var li = ul.getElementsByTagName('li');
		if (li && (li.length > 0)) return li[0];
		return false;
	},

	getSubNode: function(li) {
		var div = li.getElementsByTagName('div');
		if (div && (div.length > 0) && div[0].className.match('menu-balloon')) return div[0];

		var ul = li.getElementsByTagName('ul');
		if (ul && (ul.length > 0)) return ul[0];
		
		return false;
	},

	getLink: function(li) {
		var a = li.getElementsByTagName('a');
		if (a && (a.length > 0)) return a[0];
		return false;
	}
}
Loader.push(function(){ Leftnav.init(); });

/* var Tabs = {
	nodes: {},
	init: function() {
		var ul = document.getElementsByTagName('ul');

		for (var i=0, length=ul.length; i<length; i++) {
			if (ul[i].className.match('js_tabs')) {
				Tabs.attachLinks(ul[i], ul[i].id);
			}
		}
	},

	attachLinks: function(ul, parent) {
		var a = Tabs.getTabLinks(ul);
		Tabs.nodes[parent] = [];
		for (var i=0, length=a.length; i<length; i++) {
			var id = a[i].id
			a[i].onclick = function() { Tabs.openTab(this); return false; };
			Tabs.nodes[parent].push(id);
		}
	},

	getTabLinks: function(ul) {
		return ul.getElementsByTagName('a');
	},

	openTab: function(element) {
		Tabs.closeAll(element);
		element.className += ' active';
		var data = $(element.id+'_data');
		if (data) data.style.display = '';
	},

	closeAll: function(element) {
		var parent = element;
		while (parent.nodeName != 'UL') {
			parent = parent.parentNode;
		}
		var nodes = Tabs.nodes;
		if (nodes && nodes[parent.id]) {
			var links = nodes[parent.id];
			for (var i=0, length=links.length; i<length; i++) {
				var id = links[i];
				var e = $(id);
				if (e && e.className.match('active')) {
					e.className = e.className.replace(/active/, '');
					var tab_data = $(id+'_data');
					if (tab_data) {
						tab_data.style.display = 'none';
						var ul = tab_data.getElementsByTagName('ul');
						for (var i=0, length=ul.length; i<length; i++) {
							if (ul[i].className.match('js_tabs')) {
								this.closeAll(ul[i]);
							}
						}
					}
				}
			}
		}
	}

}
Loader.push(function(){ Tabs.init(); }); */

var TabsPAYG = {
	nodes: {},
	init: function() {
		var ul = document.getElementsByTagName('ul');

		for (var i=0, length=ul.length; i<length; i++) {
			if (ul[i].className.match('payg_js_tabs')) {
				TabsPAYG.attachLinks(ul[i], ul[i].id);
			}
		}
	},

	attachLinks: function(ul, parent) {
		var a = TabsPAYG.getTabLinks(ul);
		TabsPAYG.nodes[parent] = [];
		for (var i=0, length=a.length; i<length; i++) {
			var id = a[i].id
			a[i].onclick = function() { TabsPAYG.openTab(this); };
			TabsPAYG.nodes[parent].push(id);
		}
	},

	getTabLinks: function(ul) {
		return ul.getElementsByTagName('a');
	},

	openTab: function(element) {
		TabsPAYG.closeAll(element);
		element.className += ' active';
		var data = $(element.id+'_data');
		if (data) data.style.display = '';
	},

	closeAll: function(element) {
		var parent = element;
		while (parent.nodeName != 'UL') {
			parent = parent.parentNode;
		}
		var nodes = TabsPAYG.nodes;
		if (nodes && nodes[parent.id]) {
			var links = nodes[parent.id];
			for (var i=0, length=links.length; i<length; i++) {
				var id = links[i];
				var e = $(id);
				if (e && e.className.match('active')) {
					e.className = e.className.replace(/active/, '');
					var tab_data = $(id+'_data');
					if (tab_data) {
						tab_data.style.display = 'none';
						var ul = tab_data.getElementsByTagName('ul');
						for (var i=0, length=ul.length; i<length; i++) {
							if (ul[i].className.match('js2_tabs')) {
								this.closeAll(ul[i]);
							}
						}
					}
				}
			}
		}
	}

}
Loader.push(function(){ TabsPAYG.init(); });


var Message = {
	messages: [],
	init: function() {
		var div = document.getElementsByTagName('div');
		for (var i=0, length=div.length; i<length; i++) {
			if (div[i].className.match('js_question')) {
				var box = this.getBox(div[i]);
				if (box) {
					this.attachLinks(div[i], box);
				}
			}
		}
	},

	getBox: function(div) {
		var box = div.getElementsByTagName('div');
		for (var i=0, length=box.length; i<length; i++) {
			if (box[i].className.match('question_box')) {
				this.messages.push(box[i]);
				return box[i];
			}
		}
		return false;
	},

	attachLinks: function(div, box) {
		var a = div.getElementsByTagName('a');
		for (var i=0, length=a.length; i<length; i++) {
			switch (a[i].className) {
				case 'close-box':
					a[i].onclick = function() {
						box.style.display = 'none';
						return false;
						};
					break;
				case 'ico-question':
					a[i].onclick = function() {
						if (box.style.display == 'none') var show = true;
						Message.closeOthers();
						if (show) box.style.display = '';
						return false;
						};
					break;
				default: break;
			}
		}
	},

	closeOthers: function() {
		for (var i=0, length=this.messages.length; i<length; i++) {
			this.messages[i].style.display = 'none';
		}
	}
}
Loader.push(function(){ Message.init(); });

var Bookmark = {
	init: function() {
		var link = $('js_addtofavorite');
		if (link && typeof link != 'undefined') {
			this.attach(link);
		}
	},
	add: function() {
	 	if (window.sidebar) {
			window.sidebar.addPanel(document.title, window.location, '');
			return false;
		} else if( window.external ) {
			window.external.AddFavorite(window.location, document.title);
			return false;
		} else if(window.opera && window.print) {
			return true;
		}
	},
	attach: function(link) {
		if (typeof link != 'undefined') {
			if(window.opera && window.print) {
				link.rel = "sidebar";
				link.href = location.href;
			}
			link.onclick = function() { return Bookmark.add(); }
		}
	}
}
Loader.push(function(){ Bookmark.init(); });

var Cookie = {
	get: function(name,defaultValue) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return defaultValue;
	},
	remove: function(name) {
		this.set(name,'',-1);
	},
	set: function(name,value,days) {
		var expires = '';
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			expires = '; expires='+date.toGMTString();
		}
		var cookie = name+'='+escape(value)+expires+'; path=/';
		document.cookie = cookie;
	}
	
}

var Querystring = {
	initialised: 0,
	items: [],
	init: function() {
		if ( this.initialised == 0 ) {
			items = new Array();

		    	// get the query string, ignore the ? at the front.
			var querystring=location.search.substring(1,location.search.length);

		    	// parse out name/value pairs separated via &
			var args = querystring.split('&');

	    		// split out each name = value pair
			for (var i = 0; i < args.length; i++) {
				var pair = args[i].split('=');

				// Fix broken unescaping
				temp = unescape(pair[0]).split('+');
				name = temp.join(' ');

				temp = unescape(pair[1]).split('+');
				value = temp.join(' ');
		
				this.items[name]=value;
			}
			this.initialised += 1;
		}
	},
	get: function (strKey,strDefault) {
		this.init();
		var value=this.items[strKey];
		if (value==null) {
			value=strDefault;
		}
		return value;
	}
}
Loader.push(function(){Querystring.init();});

var Offer = {
	initialised: 0,
	init: function() {
		if ( this.initialised == 0 ) {
			var offerId = Querystring.get('oid','');
			var tariffId = Querystring.get('tid','');
			var clearFeedCookie = Querystring.get('cfc','');
			var isAffiliate = Querystring.get('isaffiliate','');
			if ( clearFeedCookie.length == 0 ) {
			} else {	
				clearLiveCookies();
			}
			if ( offerId.length == 0 ) {
				offerId = Cookie.get('oid','');
			} else {	
				Cookie.set('oid',offerId);
			}
			if ( tariffId.length == 0 ) {
				tariffId = Cookie.get('ttid','');
			} else {	
				Cookie.set('ttid',tariffId);
			}
			if ( isAffiliate.length == 0 ) {
				isAffiliate = Cookie.get('isaffiliate','');
			} else {	
				Cookie.set('isaffiliate',isAffiliate);
			}
			if (isAffiliate != 1) 
			{	
				/*var showNumber = document.getElementById('affiliate');
				if (showNumber != null) {
					showNumber.style.display='none';
					var hideNumber = document.getElementById('mobiles');
					hideNumber.style.display='';
				}*/
			};
			if ( offerId.length > 0 && tariffId.length == 0 ) {//if oid only!
				var defaultOffer = document.getElementById('js_tabs_best_offer_default_data');//Select layer of the default
				var newOffer = document.getElementById('o' + offerId);//Select layer matching the oid
				if ( defaultOffer && newOffer ) {
					defaultOffer.className = 'best_deal_image_hidden';//hide the default layer
					if (newOffer.parentNode == undefined)
					{}else{
					newOffer.parentNode.className = 'best_deal_image';//Show the layer matching the oid
					}
				}
			}
			if ( tariffId.length > 0 && offerId.length == 0 ) {//if tid only!
				var defaultOffer = document.getElementById('js_tabs_best_offer_default_data');//Select layer of the default
				var newOffer = document.getElementById('t' + tariffId);//Select layer matching the tid
				if ( defaultOffer && newOffer ) {
					defaultOffer.className = 'best_deal_image_hidden';//hide the default layer
					if (newOffer.parentNode == undefined)
					{}else{
					newOffer.parentNode.className = 'best_deal_image';//Show the layer matching the oid
					}
				}
			}
			if ( offerId.length > 0 && tariffId.length > 0 ) {//for both oid and tid! 
				var defaultOffer = document.getElementById('js_tabs_best_offer_default_data');//Select layer of the default
				var newOffer = document.getElementById('js_tabs_best_offer_' + offerId + '_' + tariffId + '_data');//Select layer matching the oid and tid
				if ( defaultOffer && newOffer ) {
					defaultOffer.className = 'best_deal_image_hidden';//hide the default layer
					if (newOffer.parentNode == undefined)
					{}else{
					newOffer.className = 'best_deal_image';//Show the layer matching the oid
					}
				}
			}
			this.initialised += 1;
		}
	}	
}
Loader.push(function(){Offer.init(); });

var Cookie = {
	get: function(name,defaultValue) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return defaultValue;
	},
	remove: function(name) {
		this.set(name,'',-1);
	},
	set: function(name,value,days) {
		var expires = '';
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			expires = '; expires='+date.toGMTString();
		}
		var cookie = name+'='+escape(value)+expires+'; path=/';
		document.cookie = cookie;
	}
	
}

var Querystring = {
	initialised: 0,
	items: [],
	init: function() {
		if ( this.initialised == 0 ) {
			items = new Array();

		    	// get the query string, ignore the ? at the front.
			var querystring=location.search.substring(1,location.search.length);

		    	// parse out name/value pairs separated via &
			var args = querystring.split('&');

	    		// split out each name = value pair
			for (var i = 0; i < args.length; i++) {
				var pair = args[i].split('=');

				// Fix broken unescaping
				temp = unescape(pair[0]).split('+');
				name = temp.join(' ');

				temp = unescape(pair[1]).split('+');
				value = temp.join(' ');
		
				this.items[name]=value;
			}
			this.initialised += 1;
		}
	},
	get: function (strKey,strDefault) {
		this.init();
		var value=this.items[strKey];
		if (value==null) {
			value=strDefault;
		}
		return value;
	}
}
Loader.push(function(){Querystring.init();});


window.onload = Loader.start;

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}

function Toggle(elem) {
	if ($(elem).style.display=="block")	{
		$(elem).style.display="none";
	}
	else $(elem).style.display="block";
}


function faqMainContent(divName)
{

	var mainFAQContainer = document.getElementById('mainFAQContainer');
	var headingDivs = mainFAQContainer.getElementsByTagName("div");
	for(i = 0; i < headingDivs.length; i++)
	{ 
		 var x=headingDivs[i];
		 	if(x.id == divName)
			{
				x.style.display='block';
			}
			else
			{
				x.style.display='none';
			}
	}
	var subHeadingDivs = mainFAQContainer.getElementsByTagName("span");
	for(i = 0; i < subHeadingDivs.length; i++)
	{ 
		 var f=subHeadingDivs[i];
		f.style.display='none';
	}
	
}

function faqSubContent(divName)
{

	var mainFAQContainer = document.getElementById('mainFAQContainer');
	var subHeadingDivs = mainFAQContainer.getElementsByTagName("span");
	for(i = 0; i < subHeadingDivs.length; i++)
	{ 
		 var x=subHeadingDivs[i];
		 	if(x.id == divName)
			{
				x.style.display='block';
			}
			else
			{
				x.style.display='none';
			}
	}

}

function switchFGAJAXLoadingGraphic(lfg)
{
	document.getElementById('switchFGAJAXLoadingGraphicMainContainer').style.display='none';
	document.getElementById('loadMeMain').style.display='block';
	document.getElementById(lfg).style.display='block';
}
	function UpdateImg(ctrl,imgsrc) 
	{
		var browser=navigator.appName;
		if(browser == 'Microsoft Internet Explorer')
		{
			setTimeout("UpdateImgGo('"+ctrl+"','"+imgsrc+"')",10);
		}
	}
	function UpdateImgGo(a,b)
	{
		var img = document.getElementById(a);
		img.src = b;
	}
	
function swapTestimonial() 
{
	var rand1 = 0;
	var useRand = 0;
	TestimonialImages = new Array;
	TestimonialImages[1] = new Image();
	TestimonialImages[1].src = "http://www.mobiles.co.uk/white_labels/mobiles/images/testimonial-2.jpg";
	TestimonialImages[1].alt = "Mobiles.co.uk Testimonial from JH - Shropshire";
	TestimonialImages[1].title = "Mobiles.co.uk Testimonial from JH - Shropshire";
	TestimonialImages[2] = new Image();
	TestimonialImages[2].src = "http://www.mobiles.co.uk/white_labels/mobiles/images/testimonial-1.jpg";
	TestimonialImages[2].alt = "Mobiles.co.uk Testimonial from TN - York";
	TestimonialImages[2].title = "Mobiles.co.uk Testimonial from TN - York";
	TestimonialImages[3] = new Image();
	TestimonialImages[3].src = "http://www.mobiles.co.uk/white_labels/mobiles/images/testimonial-3.jpg";
	TestimonialImages[3].alt = "Mobiles.co.uk Testimonial from JR - Liverpool";
	TestimonialImages[3].title = "Mobiles.co.uk Testimonial from JR - Liverpool";
	
	var imgnum = TestimonialImages.length - 1;
	do 
	{
		var randnum = Math.random();
		rand1 = Math.round((imgnum - 1) * randnum) + 1;
	} 
	while (rand1 == useRand);
	useRand = rand1;
	document.randTestimonialimg.src = TestimonialImages[useRand].src;
	document.randTestimonialimg.alt = TestimonialImages[useRand].alt;
	document.randTestimonialimg.title = TestimonialImages[useRand].title;
}
