/*
 * SimpleModal 1.3.5 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2010 Eric Martin (http://twitter.com/EricMMartin)
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 245 2010-03-25 20:41:15Z emartin24 $
 */
;(function($){var ie6=$.browser.msie&&parseInt($.browser.version)==6&&typeof window['XMLHttpRequest']!="object",ieQuirks=null,w=[];$.modal=function(data,options){return $.modal.impl.init(data,options);};$.modal.close=function(){$.modal.impl.close();};$.fn.modal=function(options){return $.modal.impl.init(this,options);};$.modal.defaults={appendTo:'body',focus:true,opacity:50,overlayId:'simplemodal-overlay',overlayCss:{},containerId:'simplemodal-container',containerCss:{},dataId:'simplemodal-data',dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:false,autoPosition:true,zIndex:1000,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:'simplemodal-close',escClose:true,overlayClose:false,position:null,persist:false,modal:true,onOpen:null,onShow:null,onClose:null};$.modal.impl={o:null,d:{},init:function(data,options){var s=this;if(s.d.data){return false;}ieQuirks=$.browser.msie&&!$.boxModel;s.o=$.extend({},$.modal.defaults,options);s.zIndex=s.o.zIndex;s.occb=false;if(typeof data=='object'){data=data instanceof jQuery?data:$(data);s.d.placeholder=false;if(data.parent().parent().size()>0){data.before($('<span></span>').attr('id','simplemodal-placeholder').css({display:'none'}));s.d.placeholder=true;s.display=data.css('display');if(!s.o.persist){s.d.orig=data.clone(true);}}}else if(typeof data=='string'||typeof data=='number'){data=$('<div></div>').html(data);}else{alert('SimpleModal Error: Unsupported data type: '+typeof data);return s;}s.create(data);data=null;s.open();if($.isFunction(s.o.onShow)){s.o.onShow.apply(s,[s.d]);}return s;},create:function(data){var s=this;w=s.getDimensions();if(s.o.modal&&ie6){s.d.iframe=$('<iframe src="javascript:false;"></iframe>').css($.extend(s.o.iframeCss,{display:'none',opacity:0,position:'fixed',height:w[0],width:w[1],zIndex:s.o.zIndex,top:0,left:0})).appendTo(s.o.appendTo);}s.d.overlay=$('<div></div>').attr('id',s.o.overlayId).addClass('simplemodal-overlay').css($.extend(s.o.overlayCss,{display:'none',opacity:s.o.opacity/100,height:s.o.modal?w[0]:0,width:s.o.modal?w[1]:0,position:'fixed',left:0,top:0,zIndex:s.o.zIndex+1})).appendTo(s.o.appendTo);s.d.container=$('<div></div>').attr('id',s.o.containerId).addClass('simplemodal-container').css($.extend(s.o.containerCss,{display:'none',position:'fixed',zIndex:s.o.zIndex+2})).append(s.o.close&&s.o.closeHTML?$(s.o.closeHTML).addClass(s.o.closeClass):'').appendTo(s.o.appendTo);s.d.wrap=$('<div></div>').attr('tabIndex',-1).addClass('simplemodal-wrap').css({height:'100%',outline:0,width:'100%'}).appendTo(s.d.container);s.d.data=data.attr('id',data.attr('id')||s.o.dataId).addClass('simplemodal-data').css($.extend(s.o.dataCss,{display:'none'})).appendTo('body');data=null;s.setContainerDimensions();s.d.data.appendTo(s.d.wrap);if(ie6||ieQuirks){s.fixIE();}},bindEvents:function(){var s=this;$('.'+s.o.closeClass).bind('click.simplemodal',function(e){e.preventDefault();s.close();});if(s.o.modal&&s.o.close&&s.o.overlayClose){s.d.overlay.bind('click.simplemodal',function(e){e.preventDefault();s.close();});}$(document).bind('keydown.simplemodal',function(e){if(s.o.modal&&s.o.focus&&e.keyCode==9){s.watchTab(e);}else if((s.o.close&&s.o.escClose)&&e.keyCode==27){e.preventDefault();s.close();}});$(window).bind('resize.simplemodal',function(){w=s.getDimensions();s.setContainerDimensions(true);if(ie6||ieQuirks){s.fixIE();}else if(s.o.modal){s.d.iframe&&s.d.iframe.css({height:w[0],width:w[1]});s.d.overlay.css({height:w[0],width:w[1]});}});},unbindEvents:function(){$('.'+this.o.closeClass).unbind('click.simplemodal');$(document).unbind('keydown.simplemodal');$(window).unbind('resize.simplemodal');this.d.overlay.unbind('click.simplemodal');},fixIE:function(){var s=this,p=s.o.position;$.each([s.d.iframe||null,!s.o.modal?null:s.d.overlay,s.d.container],function(i,el){if(el){var bch='document.body.clientHeight',bcw='document.body.clientWidth',bsh='document.body.scrollHeight',bsl='document.body.scrollLeft',bst='document.body.scrollTop',bsw='document.body.scrollWidth',ch='document.documentElement.clientHeight',cw='document.documentElement.clientWidth',sl='document.documentElement.scrollLeft',st='document.documentElement.scrollTop',s=el[0].style;s.position='absolute';if(i<2){s.removeExpression('height');s.removeExpression('width');s.setExpression('height',''+bsh+' > '+bch+' ? '+bsh+' : '+bch+' + "px"');s.setExpression('width',''+bsw+' > '+bcw+' ? '+bsw+' : '+bcw+' + "px"');}else{var te,le;if(p&&p.constructor==Array){var top=p[0]?typeof p[0]=='number'?p[0].toString():p[0].replace(/px/,''):el.css('top').replace(/px/,'');te=top.indexOf('%')==-1?top+' + (t = '+st+' ? '+st+' : '+bst+') + "px"':parseInt(top.replace(/%/,''))+' * (('+ch+' || '+bch+') / 100) + (t = '+st+' ? '+st+' : '+bst+') + "px"';if(p[1]){var left=typeof p[1]=='number'?p[1].toString():p[1].replace(/px/,'');le=left.indexOf('%')==-1?left+' + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"':parseInt(left.replace(/%/,''))+' * (('+cw+' || '+bcw+') / 100) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';}}else{te='('+ch+' || '+bch+') / 2 - (this.offsetHeight / 2) + (t = '+st+' ? '+st+' : '+bst+') + "px"';le='('+cw+' || '+bcw+') / 2 - (this.offsetWidth / 2) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';}s.removeExpression('top');s.removeExpression('left');s.setExpression('top',te);s.setExpression('left',le);}}});},focus:function(pos){var s=this,p=pos||'first';var input=$(':input:enabled:visible:'+p,s.d.wrap);input.length>0?input.focus():s.d.wrap.focus();},getDimensions:function(){var el=$(window);var h=$.browser.opera&&$.browser.version>'9.5'&&$.fn.jquery<='1.2.6'?document.documentElement['clientHeight']:$.browser.opera&&$.browser.version<'9.5'&&$.fn.jquery>'1.2.6'?window.innerHeight:el.height();return[h,el.width()];},getVal:function(v){return v=='auto'?0:v.indexOf('%')>0?v:parseInt(v.replace(/px/,''));},setContainerDimensions:function(resize){var s=this;if(!resize||(resize&&s.o.autoResize)){var ch=$.browser.opera?s.d.container.height():s.getVal(s.d.container.css('height')),cw=$.browser.opera?s.d.container.width():s.getVal(s.d.container.css('width')),dh=s.d.data.outerHeight(true),dw=s.d.data.outerWidth(true);var mh=s.o.maxHeight&&s.o.maxHeight<w[0]?s.o.maxHeight:w[0],mw=s.o.maxWidth&&s.o.maxWidth<w[1]?s.o.maxWidth:w[1];if(!ch){if(!dh){ch=s.o.minHeight;}else{if(dh>mh){ch=mh;}else if(dh<s.o.minHeight){ch=s.o.minHeight;}else{ch=dh;}}}else{ch=ch>mh?mh:ch;}if(!cw){if(!dw){cw=s.o.minWidth;}else{if(dw>mw){cw=mw;}else if(dw<s.o.minWidth){cw=s.o.minWidth;}else{cw=dw;}}}else{cw=cw>mw?mw:cw;}s.d.container.css({height:ch,width:cw});if(dh>ch||dw>cw){s.d.wrap.css({overflow:'auto'});}}if(s.o.autoPosition){s.setPosition();}},setPosition:function(){var s=this,top,left,hc=(w[0]/2)-(s.d.container.outerHeight(true)/2),vc=(w[1]/2)-(s.d.container.outerWidth(true)/2);if(s.o.position&&Object.prototype.toString.call(s.o.position)==="[object Array]"){top=s.o.position[0]||hc;left=s.o.position[1]||vc;}else{top=hc;left=vc;}s.d.container.css({left:left,top:top});},watchTab:function(e){var s=this;if($(e.target).parents('.simplemodal-container').length>0){s.inputs=$(':input:enabled:visible:first, :input:enabled:visible:last',s.d.data[0]);if((!e.shiftKey&&e.target==s.inputs[s.inputs.length-1])||(e.shiftKey&&e.target==s.inputs[0])||s.inputs.length==0){e.preventDefault();var pos=e.shiftKey?'last':'first';setTimeout(function(){s.focus(pos);},10);}}else{e.preventDefault();setTimeout(function(){s.focus();},10);}},open:function(){var s=this;s.d.iframe&&s.d.iframe.show();if($.isFunction(s.o.onOpen)){s.o.onOpen.apply(s,[s.d]);}else{s.d.overlay.show();s.d.container.show();s.d.data.show();}s.focus();s.bindEvents();},close:function(){var s=this;if(!s.d.data){return false;}s.unbindEvents();if($.isFunction(s.o.onClose)&&!s.occb){s.occb=true;s.o.onClose.apply(s,[s.d]);}else{if(s.d.placeholder){var ph=$('#simplemodal-placeholder');if(s.o.persist){ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display',s.display));}else{s.d.data.hide().remove();ph.replaceWith(s.d.orig);}}else{s.d.data.hide().remove();}s.d.container.hide().remove();s.d.overlay.hide().remove();s.d.iframe&&s.d.iframe.hide().remove();s.d={};}}};})(jQuery);
// Set up wrapper object
if(!TELUS){
  var TELUS = {};
};

TELUS.parse = function(url){
        var options = {
          strictMode: false,
            key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
            q:   {
              name:   "queryKey",
              parser: /(?:^|&)([^&=]*)=?([^&]*)/g
            },
            parser: {
              strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
              loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
            }
        };
        var o = options;
        var m = o.parser[o.strictMode ? "strict" : "loose"].exec(url);
        var uri = {};
        var i = o.key.length;

        while (i--) uri[o.key[i]] = m[i] || "";

        uri[o.q.name] = {};
        uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
          if ($1) uri[o.q.name][$1] = $2;
        });
        
        return uri;
      };

TELUS.selectRegion = {
  LANGS : ['en','fr'],
  NOCONTENT : { residential : 'NT,NU,YT,INTL,USA' },
  MOBILITY_REGION_URL : 'www.telusmobility.com/en/common/js/setRegion.html',
  MYTELUS_REGION_URL : 'www.mytelus.com/order2/bundles/setRegion.vm',
  curr : {
    lang : null,
    region : null,
    customerType : null
  },
  init  : function(){
    var that = this;
    // smart defaults
    if(jQuery.cookie('lang')){
      jQuery("input:radio[value='"+jQuery.cookie('lang')+"']").attr('checked',true);
    };
    if(jQuery.cookie('CustomerType')){
      jQuery("input:radio[value='"+jQuery.cookie('CustomerType')+"']").attr('checked',true);
    };
    // set up click handlers
    // language options
    jQuery("#english-en,#french-en,#english-fr,#french-fr").bind('click',function(){
      jQuery(TELUS.selectRegion).trigger('changelanguage',[{lang:this.value}]);
      return true;
    });
    // personal/business
    jQuery('#personalUse-en,#personalUse-fr,#businessUse-en,#businessUse-fr').bind('click',function(){
      jQuery(TELUS.selectRegion).trigger('changecustomertype',[{type:this.value}]);
      return true;
    });
    // province links
    jQuery('.prov').bind('click',function(e){
      if(e.target.tagName.toLowerCase()=='a'){
        var el = e.target;
        // return if disabled
        if(el.parentNode.className.indexOf('disabled')>=0){
          return false;
        };
        jQuery(TELUS.selectRegion).trigger('changeregion',[{region:el.className.toUpperCase().split(' ')[0],target:el}]);
        return false;
      };
      return true;
    }).find('a').bind('focus',function(){
      if(this.parentNode.className.indexOf('disabled')>=0){
        this.blur();
        return false;
      };
      return true;
    });
    
    // assign listeners
    jQuery(this).bind('changelanguage',function(event, params){
      that.setLanguage(params);     
    });
    jQuery(this).bind('changecustomertype',function(event, params){
      that.setCustomerType(params);
    });
    jQuery(this).bind('changeregion',function(event, params){
      that.setRegion(params);
    });
    
    // select corresponding radio button in "opposite" language
    jQuery("input:radio").bind('click',function(){
      jQuery("#"+this.id.split('-')[0]+'-'+this.className.split(' ')[0])[0].checked = true;
      return true;
    }).filter(':checked').trigger('click');
  },
  setLanguage : function(options){
    var lang = options.lang || '';
    this.curr.lang = lang;
    // set language cookie   
    jQuery.cookie('lang',lang,{path:'/',expires:3650,domain:'telus.com'});
    // show/hide
    jQuery(TELUS.selectRegion.LANGS).each(function(){
      var val = this+'';
       // hide the "opposite" language and show the selected one
       if(val!=lang){
        jQuery('body').addClass(lang).removeClass(val);
       };
    });    
    // enable/disable links
    this.doBusinessFrench();
  },
  setCustomerType : function(options){
    var custType = options.type || '';
    this.curr.customerType = custType;
    // set cookie
    jQuery.cookie('CustomerType',custType,{path:'/',expires:3650,domain:'telus.com'});
    // enable/disable links
    this.doBusinessFrench();
    return true;
  },
  setRegion : function(options){
    var region = options.region || '';
    var lang = this.curr.lang || 'en';
    this.curr.region = region;
    // set cookies
    // new 'prov' cookie (to match telusmobility.com)
    jQuery.cookie('prov',region,{path:'/',expires:3650,domain:'telus.com'});
    // portal region
    jQuery.cookie('telusPortalRegion',region,{path:'/',expires:3650,domain:'telus.com'});
    // telus.com legacy region cookie
    jQuery.cookie('TelusRegion',(region=='AB' || region=='BC') ? region.substr(0,1) : null,{path:'/',expires:3650,domain:'telus.com'});
    // set mobility cookie
    if(TELUS.selectRegion.NOCONTENT.residential.indexOf(region)==-1){
      // non-Safari browsers use iframe method
      if(!jQuery.browser.safari){
        try{
          // mobility
          jQuery('#frame-mobility-wrapper').remove();
          jQuery('body').append('<div id="frame-mobility-wrapper"></div>');
          jQuery('#frame-mobility-wrapper').html('<iframe style="height:1px;width:1px;display:none;" src="'+window.location.protocol+'//'+this.MOBILITY_REGION_URL+'?'+(new Date()).getTime()+'#'+region+'|'+lang+'" id="frame-mobility"></iframe>');
          // mytelus
          jQuery('#frame-mytelus-wrapper').remove();
          jQuery('body').append('<div id="frame-mytelus-wrapper"></div>');
          jQuery('#frame-mytelus-wrapper').html('<iframe style="height:1px;width:1px;display:none;" src="'+window.location.protocol+'//'+this.MYTELUS_REGION_URL+'?'+(new Date()).getTime()+'#'+region+'|'+lang+'" id="frame-mytelus"></iframe>');
        } catch(e) {};
      } else {
        // Safari uses window.open method
        var me = self;
        var regWin1 = window.open(window.location.protocol+'//'+this.MOBILITY_REGION_URL+'?'+(new Date()).getTime()+'#'+region+'|'+lang,'regWin1','location=0,status=0,scrollbars=0,width=1,height=1,menubar=0,resizable=0');
        var regWin2 = window.open(window.location.protocol+'//'+this.MYTELUS_REGION_URL+'?'+(new Date()).getTime()+'#'+region+'|'+lang,'regWin2','location=0,status=0,scrollbars=0,width=1,height=1,menubar=0,resizable=0');
        regWin1.moveTo(0,0);
        regWin2.moveTo(0,0);
        me.focus();
        jQuery(me).bind('unload',function(){
          regWin1.close();
          regWin2.close();
          return true;
        });
      };
    };
    if(this.curr.customerType=='residential' && this.curr.lang=='fr' && (this.curr.region=='BC'||this.curr.region=='AB')){
      jQuery('<div class="modal"><a class="close" href="#">Fermez</a><h3>Aucun contenu disponible</h3><p>Actuellement, nous n’offrons pas la version française du contenu que vous avez demandé. Vous pouvez accéder au</p><ul style="margin-top:10px;margin-bottom:10px;"><li><a href="http://www.telusmobility.com/fr/'+this.curr.region+'/home/">telusmobilite.com en français</a><span style="padding: 7px 0 0 60px; display: block;">ou</span></li><li>au <a href="/">telus.com en anglais</a></li></ul><p>Merci de votre visite.</p></div>').modal({closeClass:'close'});
      return false;
    };
    if(this.curr.customerType=='residential' && this.curr.lang=='en' && (TELUS.selectRegion.NOCONTENT.residential.indexOf(this.curr.region)>=0)){
      jQuery('<div class="modal"><a class="close" href="#">Close</a><h3>Content not available</h3><p>We currently don\'t provide Personal products in the region you selected. You can either:</p><ul style="margin-top:10px;margin-bottom:10px;"><li><a href="/" onclick="jQuery.cookie(\'CustomerType\',\'business\',{path:\'/\',expires:3650,domain:\'telus.com\'});return true;">Access information for Business</a><span style="padding: 7px 0 0 60px; display: block;">or</span></li><li><a href="#" onclick="jQuery.unblockUI();return false;">Select a different region</a></li></ul><p>Thank you for visiting TELUS.</p></div>').modal({closeClass:'close'});
      return false;
    };
    if(this.curr.customerType=='residential' && this.curr.lang=='fr' && (TELUS.selectRegion.NOCONTENT.residential.indexOf(this.curr.region)>=0)){
      jQuery('<div class="modal"><a class="close" href="#">Fermez</a><h3>Aucun contenu disponible</h3><p>Nous n’avons actuellement aucune page concernant les renseignements demandés pour la province sélectionnée.</p><ul style="margin-top:10px;margin-bottom:10px;"><li><a href="/" onclick="jQuery.cookie(\'CustomerType\',\'business\',{path:\'/\',expires:3650,domain:\'telus.com\'});return true;">Consultez les pages sur nos solutions d’affaires</a><span style="padding: 7px 0 0 60px; display: block;">ou</span></li><li><a href="#" onclick="jQuery.modal.close();return false;">Sélectionnez une autre région</a></li></ul><p>Merci de votre visite.</p></div>').modal({closeClass:'close'});
      return false;
    };   
    if(this.curr.customerType=='business'){
      options.target.href = (this.curr.lang=='en') ? '/?'+(new Date()).getTime() : 'http://business.telus.com/fr_CA/QC/qcMlbMediumLargeBusinessHome.html';
      // change quebec link for business
      if(this.curr.region=='QC'){
        options.target.href = '/?'+(new Date()).getTime();
      };
    };
    // follow link - delayed to allow the hidden iframe to set the mobility cookie
    	var promoURL = TELUS.parse(document.location.href).queryKey.rd;
		window.setTimeout(function(){location.href = unescape(promoURL||(options.target.href));},200);
  },
  doBusinessFrench : function(){
    // enable/disable links
    if(this.curr.customerType=='business' && this.curr.lang=='fr'){
       jQuery("#fr ul.prov a[class!='QC']").parent().addClass('disabled');
     } else {
       jQuery("#fr ul.prov .disabled").removeClass('disabled');
     };
     // show/hide
     var custType = this.curr.customerType;
     var show = custType;
     var hide = (custType=='business') ? 'residential' : 'business';
     jQuery("#"+this.curr.lang).find('.column2 .'+show).show().end().find('.column2 .'+hide).hide();
  }
};
TELUS.selectRegion.init();