;(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);;(function($){var unparam,unserialzie,decode=decodeURIComponent,REGEXP=/([^=&]+)=([^&]*)/g;function _handleArray(obj){var result;$.each(obj,function(){if(typeof(result[this.name])=='undefined'){result[this.name]=this.value;}
else if($.isArray(result[this.name])){result[this.name].push(this.value);}
else{result[this.name]=[result[this.name],this.value];}});return result;}
function unparam(str){var match,k,v,result={},str=str.replace("+","%20");REGEXP.lastIndex=0;while((match=REGEXP.exec(str))){k=decode(match[1]);v=decode(match[2]);if(typeof result[k]==='undefined'){result[k]=v;}
else if($.isArray(result[k])){result[k].push(v);}
else{result[k]=[result[k],v];}}
return result;}
$.unparam=unparam;function unserialize(obj){if(typeof obj==='string'){obj=unparam(obj);}
else if(obj.constructor==Array){obj=_handleArray(obj);}
obj=$.extend(true,{},obj);$('input, select, textarea',this).each(function(){var node=$(this),key=node.attr('name');if(node.is(':button, :submit, :reset')){return;}
if(typeof(obj[key])=='undefined'){if(node.is(':checkbox, :radio')){node.removeAttr('checked');}
else{node.val('')}}
else if($.isArray(obj[key])){if(node.is(':checkbox, :radio')){var idx=$.inArray(node.val(),obj[key])
if(idx!==-1){node.attr('checked','checked');delete obj[key][idx]}else{node.removeAttr('checked');}}
else{node.val(obj[key].shift());}}
else{if(node.is(':checkbox, :radio')){if(node.val()==obj[key]){node.attr('checked','checked');delete obj[key];}else{node.removeAttr('checked');}}
else{node.val(obj[key]);delete obj[key];}}});return this}
$.fn.unserialize=unserialize;})(jQuery);;(function($){var ajaxQueue;function ajaxQueue(options){var callback=options.complete;options.complete=function(){if(callback){callback.apply(this,arguments);}
$.dequeue(ajaxQueue,"ajax");};if($.queue(ajaxQueue,'ajax').length){$.queue(ajaxQueue,"ajax",function(){$.ajax(options);});}else{$.ajax(options);}};$.ajaxQueue=ajaxQueue;})(jQuery);;(function($){var products,history=$.history,_updateFromState,_updateState,_containerDiv=null,_ready=false,_advanced=false,_filters={},_sort=null,_more=false,_history,_basic=[],E_MISSING_OR_INVALID_ARG='Missing or invalid argument',EV_PRODUCTS_READY='ready',EV_PRODUCTS_STATE_CHANGE='stateChange',EV_PRODUCTS_BEFORE_SEND='beforeSend',EV_PRODUCTS_SUCCESS='success',EV_PRODUCTS_ERROR='error',EV_PRODUCTS_COMPLETE='complete';_history=history.register('products','');function _updateFromState(data){var params=$.unparam(data),data=$.extend({},params);params.menu_id=_page;if(data.sort){_sort=data.sort;delete data.sort}else{_sort=null;}
_more=!!data.more;delete data.more
_advanced=!!data.advanced;delete data.advanced
_filters=data;products.trigger(EV_PRODUCTS_STATE_CHANGE);$.ajaxQueue({beforeSend:function(xhr){products.trigger(EV_PRODUCTS_BEFORE_SEND);},cache:true,complete:function(xhr,textStatus){products.trigger(EV_PRODUCTS_COMPLETE);},data:$.param(params),dataType:"html",error:function(xhr,textStatus,errorThrown){products.trigger(EV_PRODUCTS_ERROR);},global:false,success:function(data,textStatus){_containerDiv.html(data);products.trigger(EV_PRODUCTS_SUCCESS);},type:"GET",url:"/_ajax/product_table.php"+document.location.search});}
function _updateState(){var data={}
if(_sort){data.sort=_sort;}
if(_more){data.more=1;}
if(_advanced){$.extend(data,_filters)
data.advanced=1;}else{$.each(_basic,function(){if(_filters[this])data[this]=_filters[this];});}
history('products',$.param(data));}
function _setFilter(name,value){var states;if(!(typeof name==="string")){throw new Error(E_MISSING_OR_INVALID_ARG);}
filters={};filters[name]=value;return _setFilters(filters);}
function _setFilters(filters){var changed=false;if(!_ready){return false;}
$.each(filters,function(name,value){if(_filters[name]!==value){if(value===null||value===''){delete _filters[name];}else{_filters[name]=value;}
changed=true;}});if(!changed){return false;}
_updateState();return true;}
function _getFilters(){return $.extend({},_filters);}
function _getFilter(param){if(typeof _filters[param]!=='undefined'){return _filters[param];}
return null;}
products={init:function(containerDiv,page,basic){var state;if(_ready){return false;}
if(basic){_basic=basic;}
if(typeof containerDiv==="undefined"){throw new Error(E_MISSING_OR_INVALID_ARG);}
_containerDiv=$(containerDiv);if(typeof page==="undefined"){throw new Error(E_MISSING_OR_INVALID_ARG);}
_page=page
_ready=true;state=history.bookmark('products');if(state){_updateFromState(state);}
_history.bind('moduleStateChange',function(e,data){_updateFromState(data);});$(function(){products.trigger(EV_PRODUCTS_READY);});},advanced:function(flag){if(typeof flag==='undefined'){return _advanced;}
if(_advanced!==flag){_advanced=!!flag;_updateState();}},filter:function(param,value){if(typeof value==='undefined'){if(typeof param==='object'){return _setFilters(param);}
if(typeof param==="undefined"){return _getFilters()}
return _getFilter(param);}
return _setFilter(param,value);},sort:function(value){if(typeof value==='undefined'){return _sort;}
if(_sort!==value){_sort=value;_updateState();}},more:function(flag){if(typeof flag==='undefined'){return _more;}
if(_more!==flag){_more=!!flag;_updateState();}},bind:function(type,data,fn){$(products).bind(type,data,fn)},trigger:function(event,data){$(products).trigger(event,data)}};$.products=products;})(jQuery);;(function($){var serializeObject;function serializeObject(){var result={};$.each($(this).serializeArray(),function(){if(typeof result[this.name]==='undefined'){result[this.name]=this.value;}
else if($.isArray(result[this.name])){result[this.name].push(this.value);}
else{result[this.name]=[result[this.name],this.value];}});return result;}
$.fn.serializeObject=serializeObject;})(jQuery);;(function($){var products=$.products;$.history.bind('ready',function(){products.init('#products',page_id);});products.bind('ready',function(){var main=$('#products');$('th#position a',main).live('click',function(){products.sort('bestsellers');return false;});$('th#speed a',main).live('click',function(){products.sort('broadband_speed');return false;});$('th#downloads a',main).live('click',function(){products.sort('download_limit');return false;});$('th#contract a',main).live('click',function(){products.sort('contract_period');return false;});$('th#monthly_cost a',main).live('click',function(){products.sort('monthly_cost');return false;});$('a.more',main).live('click',function(){products.more(!products.more());if(!products.more()){$.scrollTo('#products tbody tr:eq(7)',0);}
return false;});});products.bind('beforeSend',function(){$('a.more').addClass('loading_tag').html('Loading...');$('.loading_overlay').show();$('.loading_faded').show();});products.bind('complete',function(){var more=$('#more_results'),main=$('#products');if(more.length>0){if(products.more()){more.html('<a href="#" title="Show Top 10 Results" class="more">'+PTABLE_SHOW_TOP_ONLY+'</a>');}else{var total_products=$('.allproducts').html();more.html('<a href="#" title="Show More Results" class="more"><span>'+PTABLE_SHOW_ALL_LINK+'</span> <span class="moreproducts"> ('+total_products+' more)</span></a>')}
more.show();$('a.more').removeClass('loading_tag');}
$('.loading_overlay').hide();$('.loading_faded').hide();$('#more_results > span').show();$('#loading_tag').hide();if($('#products_controls').is(':visible')){$('#filters_pointer').fadeIn();$('#products_extra li.filters').addClass('act');}
Cufon.refresh();if(!$.browser.msie||$.browser.version<7){$('#products .downloads.selected').css('background-color','#DDEDFB');$('#products .monthly_cost.selected').css('background-color','#FFE5F5');$('#products .contract.selected').css('background-color','#ECFAE6');$('#products .speed.selected').css('background-color','#D9E1F0');}
$('tbody tr:not(.divider)',main).mouseover(function(){$('#row_highlight .popup_width').remove();$('tbody tr.hover',main).removeClass('hover');$('tbody .new_button.hover',main).removeClass('hover');if(!$.browser.msie||$.browser.version>6){$(this).addClass('hover').find('.new_button').addClass('hover');}
var row=$(this).position();$('#row_highlight').show().find('a').unbind('click').attr('href',$(this).find('.monthly_cost .new_button').attr('href'));$(this).find('.popup_width').eq(0).clone().prependTo($('#row_highlight'));$('#row_highlight').css('top',row.top).css('left',row.left).css('height',$(this).innerHeight()-3);Cufon.refresh('.top10font');});main.mouseleave(function(){$('tbody tr.hover',main).removeClass('hover');$('#products tbody td .new_button').removeClass('hover');$('#products #row_highlight').hide();;Cufon.refresh('.top10font');});$('#products tbody tr.divider').mouseenter(function(){$('#products').mouseleave();});$('#products .monthly_cost .conditions_link').each(function(){var target=$(this).parent().find('.conditions');target.prepend($(this).prev('.cost').clone().append('a month'));$(this).hover(function(){target.fadeIn('fast');},function(){target.fadeOut('fast');});});$('<div id=\"sticky\"><table></table></div>').prependTo('#products').hide();$('#products table thead').clone().appendTo('#sticky table');$('#products table').stickyheader();return false;});products.bind('ready',function(){$('#products').addClass('js_active');$('.loading_overlay').hide();products.trigger('complete');});})(jQuery);;(function($){var products=$.products;products.bind('ready',function(){var main=$('#products'),extra=$('#products_extra');if(include_filters){extra.html('<div id="filters_pointer"></div><ul><li class="filters"><span></span><a href="">Filter packages </a></li><li class="email"><span></span><a href="#" class="open_bubble email">Email</a></li><li class="share"><span></span><a href="#" class="open_bubble share">Share</a></li></ul>');}
else{extra.html('<div id="filters_pointer"></div><ul><li class="email"><span></span><a href="#" class="open_bubble email">Email</a></li><li class="share"><span></span><a href="#" class="open_bubble share">Share</a></li></ul>');}
$('li.share',extra).click(function(){if($(this).is('.act')){$('#share_overlay').hide();$('#share').hide();$(this).removeClass('act');return false;}
else{$('#share_overlay').show();$('#share').fadeIn('slow');$('li:not(.filters)',extra).removeClass('act');$(this).addClass('act');$('#email').hide();var params=$.param({url:document.location,menu_id:MENU_ID});if(!$('#share').length){$('<div id="share"></div>').prependTo(main).load('/_ajax/share.php',params);}
return false;}});$('#share .close_share_card').live('click',function(){$('#share').hide();$('#share_overlay').hide()
$('li.share',extra).removeClass('act');return false});$('li.email',extra).click(function(){$('li.share .act').removeClass('act');$('#share_overlay').hide()
if($(this).is('.act')){$(this).removeClass('act');if($('#email form').length){$('#email').hide();}else{$('#email').remove();}
$('li.email').removeClass('act');return false}
else{if(!$.browser.msie||$.browser.version>7){$('#share_overlay').show();}
$('li:not(.filters)',extra).removeClass('act');$(this).addClass('act');$('#share').hide();var params=$.param({url:document.location})
if(!$('#email').length){$('<div id="email"></div>').prependTo(main).load('/_ajax/email.php',params,emailSub);}
$('#email').fadeIn();return false;}});function emailSub(){$('#email form').submit(function(){$('#email').load($(this).attr('action'),$(this).serializeObject(),emailSub);return false;});}
$('#share_overlay').click(function(){$(this).hide();$('#email').hide();$('li.email').removeClass('act');$('li.share',extra).removeClass('act');$('#share').hide();return false;});$('#email .close_share_card').live('click',function(){$('#share_overlay').hide()
if($('#email form').length){$('#email').hide();}else{$('#email').remove();}
$('li.email').removeClass('act');return false});});$('.close_share_card').live('mouseover',function(){$(this).addClass('hover');});$('.close_share_card').live('mouseout',function(){$(this).removeClass('hover');});})(jQuery);function checkPostCode(toCheck){var alpha1="[abcdefghijklmnoprstuwyz]";var alpha2="[abcdefghklmnopqrstuvwxy]";var alpha3="[abcdefghjkpmnrstuvwxy]";var alpha4="[abehmnprvwxy]";var alpha5="[abdefghjlnpqrstuwxyz]";var pcexp=new Array();pcexp.push(new RegExp("^("+alpha1+"{1}"+alpha2+"?[0-9]{1,2})(\\s*)([0-9]{1}"+alpha5+"{2})$","i"));pcexp.push(new RegExp("^("+alpha1+"{1}[0-9]{1}"+alpha3+"{1})(\\s*)([0-9]{1}"+alpha5+"{2})$","i"));pcexp.push(new RegExp("^("+alpha1+"{1}"+alpha2+"{1}"+"?[0-9]{1}"+alpha4+"{1})(\\s*)([0-9]{1}"+alpha5+"{2})$","i"));pcexp.push(/^(GIR)(\s*)(0AA)$/i);pcexp.push(/^(bfpo)(\s*)([0-9]{1,4})$/i);pcexp.push(/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);pcexp.push(/^([A-Z]{4})(\s*)(1ZZ)$/i);var postCode=toCheck;var valid=false;for(var i=0;i<pcexp.length;i++){if(pcexp[i].test(postCode)){pcexp[i].exec(postCode);postCode=RegExp.$1.toUpperCase()+" "+RegExp.$3.toUpperCase();postCode=postCode.replace(/C\/O\s*/,"c/o ");valid=true;break;}}
if(valid){return postCode;}else{return false;}};(function($){var products=$.products;products.bind('ready',function(){var main=$('#products'),form=$('#products_form'),wrap=$('#products_controls'),extra=$('#products_extra'),postcode=$('#postcode_form');$('#products_controls h2').click(function(){hideFilters();return false});$('.no_deals .reset').live('click',function(){$('#products_form').trigger('reset');return false;});$('.filters',extra).click(function(){if($(this).is('.act')){$(this).removeClass('act');hideFilters();return false}
else{$('li',extra).removeClass('act');wrap.slideDown(function(){form.submit();products.advanced(1);});return false;}});$('.close_button',wrap).click(function(){hideFilters();return false;});if($.browser.msie||$.browser.version<=7){$('.close_button, .reset_button').hover(function(){$(this).css('opacity','1');},function(){$(this).css('opacity','0.8');});}
$(document).bind('keyup',function(e){if(e.keyCode==27){$('#email, #share').hide();$('li.email, li.share').removeClass('act');hideFilters();}});function hideFilters(){$('#filters_pointer').fadeOut();$('#products_extra li.filters').removeClass('act');wrap.slideUp(function(){products.advanced(0);form.trigger('reset');if(!$.browser.msie||$.browser.version==7){$('#products_extra').hide().fadeIn('slow');}});return false;}
form.submit(function(){var data=form.serializeObject()
data['merchants[]']=data['merchants[]']||null;data['features[]']=data['features[]']||null;products.filter(data);return false;});form.bind('reset',function(){$('select',form).val('');$('.providers input:checkbox',form).attr('checked',true);$('.features input:checkbox',form).removeAttr('checked');var data=form.serializeObject()
data['merchants[]']=data['merchants[]']||null;data['features[]']=data['features[]']||null;data['postcode']=null;products.filter(data);return false;});$('input:checkbox',form).click(function(){form.submit();});$('select',form).change(function(){form.submit();});postcode.submit(function(){products.filter('postcode',$("#postcode2",this).val());return false;});$('#products_controls #postcode_form').checkPostcode();});products.bind('beforeSend',function(){$('#products_controls input, #products_controls select').attr('disabled',true)});products.bind('complete',function(){$('#products_controls input, #products_controls select').removeAttr('disabled')});products.bind('stateChange',function(){var wrap=$('#products_controls')
postcode=$('#postcode_form');if(products.advanced()){$('#products_form').unserialize(products.filter());wrap.show();}else{wrap.hide();}
if(products.filter('postcode')){if(!$('#postcode_output').length){$('#products_controls').append('<div id="postcode_output"><span class="icon_small"></span>Showing packages available in the <span class="postcode">'+products.filter('postcode')+'</span> area <span class="edit_location">Change location</span></div>')
$('#postcode_output .edit_location').click(function(){products.filter('postcode',null);return false;});postcode.hide();}}else{$('#postcode_output').remove();postcode.show();}
$('#postcode',postcode).val(products.filter('postcode'));});})(jQuery);function videoLoader(video_url){$('#vzaar_media_player').remove();var callback=function(){var flashvars={border:"none",autoplay:"true"};var params={wmode:"transparent"};var attributes={wmode:"transparent"};var id='video_player'+Math.round(Math.random()*1000);$('#video').empty().append('<div id="'+id+'"></div>');$('#video').show();swfobject.embedSWF(video_url,id,560,329,"10.0.0","/_swf/expressInstall.swf",flashvars,params,attributes);}
if($('#video_controls').length==0){$('#fancy_close').append('<a id=\"video_controls\">Close video</a>');}
if($.browser.msie){$('#fancy_close a').hover(function(){$(this).addClass('hover')},function(){$(this).removeClass('hover')});}
var direct_link=false;$(".open_video").fancybox({'width':560,'height':329,'onStart':function(){callback();},'onCleanup':function(){$('#video').hide();}});}