/*----------------- 1. Global variables for IE mac detection -----------------------------*/

var agt = navigator.userAgent.toLowerCase();
var is_mac = (agt.indexOf("mac") !== -1);
var is_ie  = ((agt.indexOf("msie") !== -1) && (agt.indexOf("opera") === -1));


/*
----------------- 2. Global object containing commonoly used funcitons -----------------*/

var g = {
	
// Add Event Listeners
    getTarget: function (e) {
        var target = window.event ? window.event.srcElement : e ? e.target : null;
        if (!target) {
            return false; 
        }
        while (target.nodeType !== 1 && target.nodeName.toLowerCase() !== 'body') {
            target = target.parentNode;
        }
        return target;
    },
	
// Srop propagation and cancel bubble
    stopBubble: function (e) {
        if (window.event) {
            window.event.cancelBubble = true;
        } 
        if (e && e.stopPropagation) {
            e.stopPropagation();
        }
    },

// Prenvent default action
    stopDefault: function (e) {
        if (window.event) {
            window.event.returnValue = false;
        } 
        if (e && e.preventDefault) {
            e.preventDefault();
        }
    },

// Cancel click
    cancelClick: function (e) {
        if (window.event) {
            window.event.cancelBubble = true;
            window.event.returnValue = false;
        }
        if (e && e.stopPropagation && e.preventDefault) {
            e.stopPropagation();
            e.preventDefault();
        }
    },

// Cross browser add event
    addEvent: function (elm, evType, fn, useCapture) {
        if (elm.addEventListener) {
            elm.addEventListener(evType, fn, useCapture);
            return true;
        } else if (elm.attachEvent) {
            var r = elm.attachEvent('on' + evType, fn);
            return r;
        } else {
            elm['on' + evType] = fn;
        }
    },

// Cancel safari click
    safariClickFix: function () {
        return false;
    },

// Add class
    addClass: function (target, classValue) {
        var pattern = new RegExp("(^| )" + classValue + "( |$)");
        if (!pattern.test(target.className)) {
            if (target.className === "") {
                target.className = classValue;
            } else {
                target.className += " " + classValue;
            }
        }
        return true;
    },

// Remove class
    removeClass: function (target, classValue) {
        var removedClass = target.className;
        var pattern = new RegExp("(^| )" + classValue + "( |$)");
        removedClass = removedClass.replace(pattern, "$1");
        removedClass = removedClass.replace(/ $/, "");
        target.className = removedClass;
        return true;
    },

// Add Load 
    addLoadEvent: function (func) {
        var oldonload = window.onload;				
        if (typeof window.onload !== 'function') {	
            window.onload = func;
        } else {
            window.onload = function () {
                oldonload();
                func();
            };
        }
    },

// Insert After
    insertAfter: function (newElement, targetElement) {
        var parent = targetElement.parentNode;
        if (parent.lastChild === targetElement) {
            parent.appendChild(newElement);
        } else {
            parent.insertBefore(newElement, targetElement.nextSibling);
        }
    },

// Get Parent until UL
    getParentUL: function (node) {
        if (node.nodeName === "UL") {
            return node;
        }
        if (node.nodeName !== "UL") { 
            return g.getParentUL(node.parentNode);
        }
        return null;
    },
	
    getParentWithIdAttribute: function (node) {
    // If node is not an element node return the nodes parent - RETEST FOR PARENT
        if (node.parentNode.nodeType !== 1) { 
            return g.getParentWithIdAttribute(node.parentNode);
        // else if its an element node but has no id attribute  - RETEST FOR PARENT
        } else if (!node.parentNode.getAttribute("id")) { 
            return g.getParentWithIdAttribute(node.parentNode);	
        } else {
        // else if its and element node with an attribute and has an id of inner or container - RETEST FOR PARENT
            if (node.parentNode.id.indexOf("inner") !== -1 || node.parentNode.id.indexOf("container") !== -1)  {
                return g.getParentWithIdAttribute(node.parentNode);
            } else {
            // The node has an id that is sutiable for passing and indicates the links positin within the site.
                return node.parentNode;
            }
        }	
    },	

    closestSibling: function (node, direction) {
        var tempObj;
        if (direction === -1 && node.previousSibling !== null) {
            tempObj = node.previousSibling;
            while (tempObj.nodeType !== 1 && tempObj.previousSibling !== null) {
                tempObj = tempObj.previousSibling;
            }
        } else if (direction === 1 && node.nextSibling !== null) {
            tempObj = node.nextSibling;
            while (tempObj.nodeType !== 1 && tempObj.nextSibling !== null) {
                tempObj = tempObj.nextSibling;
            }
        }
        return tempObj.nodeType === 1 ?tempObj:false;
    },
	
// Get next element
	getNextElement: function (node) {
		if ( node.nodeType == 1 ) {
			return node;
		}
		if ( node.nextSibling ) { 
			return getNextElement(node.nextSibling);
		}
		return null;
	},	

// Get elements by their Id
    id: function (strId) {
        return document.getElementById(strId);
    },	

// Get elements by their tag name
    tn: function (strId) {
        return document.getElementsByTagName(strId);
    },

// Get tags within a certain element
    idTn: function (strId, strTn) {
        return document.getElementById(strId).getElementsByTagName(strTn);
    },

// Create and element
    ce: function (strId) {
        return document.createElement(strId);
    },

// Create an element with an attribute
    ceA: function (strId, ele, eleName) {
        var newEle = document.createElement(strId);
        newEle.setAttribute(ele, eleName);
        return newEle;
    },

// Create an element with a className
    ceCn: function (strId, cName) {
        var newEle = document.createElement(strId);
        newEle.className = cName;
        return newEle;
    },

// Wrap all children in a surrounding wrapper 
    elementWrap: function (container) {
        var content = container.childNodes;
        var contentArray = [];
        for (var i = 0; i < content.length; i ++) {
            if (content[i].nodeType === 1) {
                contentArray.push(content[i]);
            }
        }
        return contentArray;
    }

};	

// Get elements by class name Jonathan Snook, http://www.snook.ca/jonathan & Robert Nyman, http://www.robertnyman.com 
	function getElementsByClassName(oElm, strTagName, strClassName) {
		var arrElements = (strTagName === "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = [];
		// The next line was changed from original suggestion due to multiple class issue (var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");)
		//strClassName = strClassName.replace(/-/g, "\-"); 
		strClassName = strClassName.replace(/-/g, "-"); 
		var oRegExp = new RegExp("(^| )" + strClassName + "( |$)");			  
		var oElement;
		for (var i = 0; i < arrElements.length; i++) {
			oElement = arrElements[i];
			if (oRegExp.test(oElement.className)) {
				arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements);
	}	
	
	if (typeof Array.prototype.push !== "function") {
		Array.prototype.push = ArrayPush;
		function ArrayPush(value) {
			this[this.length] = value;
		}
	}
	
	
/*
----------------- 3. jQuery 1.2.3 - New Wave Javascript -----------------*/
/*
  * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
 * $Rev: 4663 $
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(J(){7(1e.3N)L w=1e.3N;L E=1e.3N=J(a,b){K 1B E.2l.4T(a,b)};7(1e.$)L D=1e.$;1e.$=E;L u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;L G=/^.[^:#\\[\\.]*$/;E.1n=E.2l={4T:J(d,b){d=d||T;7(d.15){6[0]=d;6.M=1;K 6}N 7(1o d=="25"){L c=u.2O(d);7(c&&(c[1]||!b)){7(c[1])d=E.4a([c[1]],b);N{L a=T.5J(c[3]);7(a)7(a.2w!=c[3])K E().2s(d);N{6[0]=a;6.M=1;K 6}N d=[]}}N K 1B E(b).2s(d)}N 7(E.1q(d))K 1B E(T)[E.1n.21?"21":"3U"](d);K 6.6E(d.1k==1M&&d||(d.5h||d.M&&d!=1e&&!d.15&&d[0]!=10&&d[0].15)&&E.2I(d)||[d])},5h:"1.2.3",87:J(){K 6.M},M:0,22:J(a){K a==10?E.2I(6):6[a]},2F:J(b){L a=E(b);a.54=6;K a},6E:J(a){6.M=0;1M.2l.1g.1i(6,a);K 6},R:J(a,b){K E.R(6,a,b)},4X:J(b){L a=-1;6.R(J(i){7(6==b)a=i});K a},1J:J(c,a,b){L d=c;7(c.1k==4e)7(a==10)K 6.M&&E[b||"1J"](6[0],c)||10;N{d={};d[c]=a}K 6.R(J(i){Q(c 1p d)E.1J(b?6.W:6,c,E.1l(6,d[c],b,i,c))})},1j:J(b,a){7((b==\'27\'||b==\'1R\')&&2M(a)<0)a=10;K 6.1J(b,a,"2o")},1u:J(b){7(1o b!="3V"&&b!=V)K 6.4x().3t((6[0]&&6[0].2i||T).5r(b));L a="";E.R(b||6,J(){E.R(6.3p,J(){7(6.15!=8)a+=6.15!=1?6.6K:E.1n.1u([6])})});K a},5m:J(b){7(6[0])E(b,6[0].2i).5k().3o(6[0]).2c(J(){L a=6;2b(a.1C)a=a.1C;K a}).3t(6);K 6},8w:J(a){K 6.R(J(){E(6).6z().5m(a)})},8p:J(a){K 6.R(J(){E(6).5m(a)})},3t:J(){K 6.3O(18,P,S,J(a){7(6.15==1)6.38(a)})},6q:J(){K 6.3O(18,P,P,J(a){7(6.15==1)6.3o(a,6.1C)})},6o:J(){K 6.3O(18,S,S,J(a){6.1a.3o(a,6)})},5a:J(){K 6.3O(18,S,P,J(a){6.1a.3o(a,6.2B)})},3h:J(){K 6.54||E([])},2s:J(b){L c=E.2c(6,J(a){K E.2s(b,a)});K 6.2F(/[^+>] [^+>]/.17(b)||b.1f("..")>-1?E.57(c):c)},5k:J(e){L f=6.2c(J(){7(E.14.1d&&!E.3E(6)){L a=6.69(P),4Y=T.3s("1x");4Y.38(a);K E.4a([4Y.3d])[0]}N K 6.69(P)});L d=f.2s("*").4R().R(J(){7(6[F]!=10)6[F]=V});7(e===P)6.2s("*").4R().R(J(i){7(6.15==3)K;L c=E.O(6,"2R");Q(L a 1p c)Q(L b 1p c[a])E.16.1b(d[i],a,c[a][b],c[a][b].O)});K f},1E:J(b){K 6.2F(E.1q(b)&&E.3y(6,J(a,i){K b.1P(a,i)})||E.3e(b,6))},56:J(b){7(b.1k==4e)7(G.17(b))K 6.2F(E.3e(b,6,P));N b=E.3e(b,6);L a=b.M&&b[b.M-1]!==10&&!b.15;K 6.1E(J(){K a?E.33(6,b)<0:6!=b})},1b:J(a){K!a?6:6.2F(E.37(6.22(),a.1k==4e?E(a).22():a.M!=10&&(!a.12||E.12(a,"3u"))?a:[a]))},3H:J(a){K a?E.3e(a,6).M>0:S},7j:J(a){K 6.3H("."+a)},5O:J(b){7(b==10){7(6.M){L c=6[0];7(E.12(c,"2k")){L e=c.3T,5I=[],11=c.11,2X=c.U=="2k-2X";7(e<0)K V;Q(L i=2X?e:0,2f=2X?e+1:11.M;i<2f;i++){L d=11[i];7(d.2p){b=E.14.1d&&!d.9J.1A.9y?d.1u:d.1A;7(2X)K b;5I.1g(b)}}K 5I}N K(6[0].1A||"").1r(/\\r/g,"")}K 10}K 6.R(J(){7(6.15!=1)K;7(b.1k==1M&&/5u|5t/.17(6.U))6.3k=(E.33(6.1A,b)>=0||E.33(6.31,b)>=0);N 7(E.12(6,"2k")){L a=b.1k==1M?b:[b];E("98",6).R(J(){6.2p=(E.33(6.1A,a)>=0||E.33(6.1u,a)>=0)});7(!a.M)6.3T=-1}N 6.1A=b})},3q:J(a){K a==10?(6.M?6[0].3d:V):6.4x().3t(a)},6S:J(a){K 6.5a(a).1V()},6Z:J(i){K 6.2K(i,i+1)},2K:J(){K 6.2F(1M.2l.2K.1i(6,18))},2c:J(b){K 6.2F(E.2c(6,J(a,i){K b.1P(a,i,a)}))},4R:J(){K 6.1b(6.54)},O:J(d,b){L a=d.23(".");a[1]=a[1]?"."+a[1]:"";7(b==V){L c=6.5n("8P"+a[1]+"!",[a[0]]);7(c==10&&6.M)c=E.O(6[0],d);K c==V&&a[1]?6.O(a[0]):c}N K 6.1N("8K"+a[1]+"!",[a[0],b]).R(J(){E.O(6,d,b)})},35:J(a){K 6.R(J(){E.35(6,a)})},3O:J(g,f,h,d){L e=6.M>1,3n;K 6.R(J(){7(!3n){3n=E.4a(g,6.2i);7(h)3n.8D()}L b=6;7(f&&E.12(6,"1O")&&E.12(3n[0],"4v"))b=6.3S("1U")[0]||6.38(6.2i.3s("1U"));L c=E([]);E.R(3n,J(){L a=e?E(6).5k(P)[0]:6;7(E.12(a,"1m")){c=c.1b(a)}N{7(a.15==1)c=c.1b(E("1m",a).1V());d.1P(b,a)}});c.R(6A)})}};E.2l.4T.2l=E.2l;J 6A(i,a){7(a.3Q)E.3P({1c:a.3Q,3l:S,1H:"1m"});N E.5g(a.1u||a.6x||a.3d||"");7(a.1a)a.1a.34(a)}E.1s=E.1n.1s=J(){L b=18[0]||{},i=1,M=18.M,5c=S,11;7(b.1k==8d){5c=b;b=18[1]||{};i=2}7(1o b!="3V"&&1o b!="J")b={};7(M==1){b=6;i=0}Q(;i<M;i++)7((11=18[i])!=V)Q(L a 1p 11){7(b===11[a])6w;7(5c&&11[a]&&1o 11[a]=="3V"&&b[a]&&!11[a].15)b[a]=E.1s(b[a],11[a]);N 7(11[a]!=10)b[a]=11[a]}K b};L F="3N"+(1B 3v()).3L(),6t=0,5b={};L H=/z-?4X|86-?84|1w|6k|7Z-?1R/i;E.1s({7Y:J(a){1e.$=D;7(a)1e.3N=w;K E},1q:J(a){K!!a&&1o a!="25"&&!a.12&&a.1k!=1M&&/J/i.17(a+"")},3E:J(a){K a.1F&&!a.1h||a.28&&a.2i&&!a.2i.1h},5g:J(a){a=E.3g(a);7(a){L b=T.3S("6f")[0]||T.1F,1m=T.3s("1m");1m.U="1u/4m";7(E.14.1d)1m.1u=a;N 1m.38(T.5r(a));b.38(1m);b.34(1m)}},12:J(b,a){K b.12&&b.12.2E()==a.2E()},1T:{},O:J(c,d,b){c=c==1e?5b:c;L a=c[F];7(!a)a=c[F]=++6t;7(d&&!E.1T[a])E.1T[a]={};7(b!=10)E.1T[a][d]=b;K d?E.1T[a][d]:a},35:J(c,b){c=c==1e?5b:c;L a=c[F];7(b){7(E.1T[a]){2V E.1T[a][b];b="";Q(b 1p E.1T[a])1Q;7(!b)E.35(c)}}N{1S{2V c[F]}1X(e){7(c.52)c.52(F)}2V E.1T[a]}},R:J(c,a,b){7(b){7(c.M==10){Q(L d 1p c)7(a.1i(c[d],b)===S)1Q}N Q(L i=0,M=c.M;i<M;i++)7(a.1i(c[i],b)===S)1Q}N{7(c.M==10){Q(L d 1p c)7(a.1P(c[d],d,c[d])===S)1Q}N Q(L i=0,M=c.M,1A=c[0];i<M&&a.1P(1A,i,1A)!==S;1A=c[++i]){}}K c},1l:J(b,a,c,i,d){7(E.1q(a))a=a.1P(b,i);K a&&a.1k==51&&c=="2o"&&!H.17(d)?a+"2S":a},1t:{1b:J(c,b){E.R((b||"").23(/\\s+/),J(i,a){7(c.15==1&&!E.1t.3Y(c.1t,a))c.1t+=(c.1t?" ":"")+a})},1V:J(c,b){7(c.15==1)c.1t=b!=10?E.3y(c.1t.23(/\\s+/),J(a){K!E.1t.3Y(b,a)}).6a(" "):""},3Y:J(b,a){K E.33(a,(b.1t||b).3X().23(/\\s+/))>-1}},68:J(b,c,a){L e={};Q(L d 1p c){e[d]=b.W[d];b.W[d]=c[d]}a.1P(b);Q(L d 1p c)b.W[d]=e[d]},1j:J(d,e,c){7(e=="27"||e=="1R"){L b,46={43:"4W",4U:"1Z",19:"3D"},3c=e=="27"?["7O","7M"]:["7J","7I"];J 5E(){b=e=="27"?d.7H:d.7F;L a=0,2N=0;E.R(3c,J(){a+=2M(E.2o(d,"7E"+6,P))||0;2N+=2M(E.2o(d,"2N"+6+"5X",P))||0});b-=24.7C(a+2N)}7(E(d).3H(":4d"))5E();N E.68(d,46,5E);K 24.2f(0,b)}K E.2o(d,e,c)},2o:J(e,k,j){L d;J 3x(b){7(!E.14.2d)K S;L a=T.4c.4K(b,V);K!a||a.4M("3x")==""}7(k=="1w"&&E.14.1d){d=E.1J(e.W,"1w");K d==""?"1":d}7(E.14.2z&&k=="19"){L c=e.W.50;e.W.50="0 7r 7o";e.W.50=c}7(k.1D(/4g/i))k=y;7(!j&&e.W&&e.W[k])d=e.W[k];N 7(T.4c&&T.4c.4K){7(k.1D(/4g/i))k="4g";k=k.1r(/([A-Z])/g,"-$1").2h();L h=T.4c.4K(e,V);7(h&&!3x(e))d=h.4M(k);N{L f=[],2C=[];Q(L a=e;a&&3x(a);a=a.1a)2C.4J(a);Q(L i=0;i<2C.M;i++)7(3x(2C[i])){f[i]=2C[i].W.19;2C[i].W.19="3D"}d=k=="19"&&f[2C.M-1]!=V?"2H":(h&&h.4M(k))||"";Q(L i=0;i<f.M;i++)7(f[i]!=V)2C[i].W.19=f[i]}7(k=="1w"&&d=="")d="1"}N 7(e.4n){L g=k.1r(/\\-(\\w)/g,J(a,b){K b.2E()});d=e.4n[k]||e.4n[g];7(!/^\\d+(2S)?$/i.17(d)&&/^\\d/.17(d)){L l=e.W.26,3K=e.3K.26;e.3K.26=e.4n.26;e.W.26=d||0;d=e.W.7f+"2S";e.W.26=l;e.3K.26=3K}}K d},4a:J(l,h){L k=[];h=h||T;7(1o h.3s==\'10\')h=h.2i||h[0]&&h[0].2i||T;E.R(l,J(i,d){7(!d)K;7(d.1k==51)d=d.3X();7(1o d=="25"){d=d.1r(/(<(\\w+)[^>]*?)\\/>/g,J(b,a,c){K c.1D(/^(aa|a6|7e|a5|4D|7a|a0|3m|9W|9U|9S)$/i)?b:a+"></"+c+">"});L f=E.3g(d).2h(),1x=h.3s("1x");L e=!f.1f("<9P")&&[1,"<2k 74=\'74\'>","</2k>"]||!f.1f("<9M")&&[1,"<73>","</73>"]||f.1D(/^<(9G|1U|9E|9B|9x)/)&&[1,"<1O>","</1O>"]||!f.1f("<4v")&&[2,"<1O><1U>","</1U></1O>"]||(!f.1f("<9w")||!f.1f("<9v"))&&[3,"<1O><1U><4v>","</4v></1U></1O>"]||!f.1f("<7e")&&[2,"<1O><1U></1U><6V>","</6V></1O>"]||E.14.1d&&[1,"1x<1x>","</1x>"]||[0,"",""];1x.3d=e[1]+d+e[2];2b(e[0]--)1x=1x.5o;7(E.14.1d){L g=!f.1f("<1O")&&f.1f("<1U")<0?1x.1C&&1x.1C.3p:e[1]=="<1O>"&&f.1f("<1U")<0?1x.3p:[];Q(L j=g.M-1;j>=0;--j)7(E.12(g[j],"1U")&&!g[j].3p.M)g[j].1a.34(g[j]);7(/^\\s/.17(d))1x.3o(h.5r(d.1D(/^\\s*/)[0]),1x.1C)}d=E.2I(1x.3p)}7(d.M===0&&(!E.12(d,"3u")&&!E.12(d,"2k")))K;7(d[0]==10||E.12(d,"3u")||d.11)k.1g(d);N k=E.37(k,d)});K k},1J:J(d,e,c){7(!d||d.15==3||d.15==8)K 10;L f=E.3E(d)?{}:E.46;7(e=="2p"&&E.14.2d)d.1a.3T;7(f[e]){7(c!=10)d[f[e]]=c;K d[f[e]]}N 7(E.14.1d&&e=="W")K E.1J(d.W,"9u",c);N 7(c==10&&E.14.1d&&E.12(d,"3u")&&(e=="9r"||e=="9o"))K d.9m(e).6K;N 7(d.28){7(c!=10){7(e=="U"&&E.12(d,"4D")&&d.1a)6Q"U 9i 9h\'t 9g 9e";d.9b(e,""+c)}7(E.14.1d&&/6O|3Q/.17(e)&&!E.3E(d))K d.4z(e,2);K d.4z(e)}N{7(e=="1w"&&E.14.1d){7(c!=10){d.6k=1;d.1E=(d.1E||"").1r(/6M\\([^)]*\\)/,"")+(2M(c).3X()=="96"?"":"6M(1w="+c*6L+")")}K d.1E&&d.1E.1f("1w=")>=0?(2M(d.1E.1D(/1w=([^)]*)/)[1])/6L).3X():""}e=e.1r(/-([a-z])/95,J(a,b){K b.2E()});7(c!=10)d[e]=c;K d[e]}},3g:J(a){K(a||"").1r(/^\\s+|\\s+$/g,"")},2I:J(b){L a=[];7(1o b!="93")Q(L i=0,M=b.M;i<M;i++)a.1g(b[i]);N a=b.2K(0);K a},33:J(b,a){Q(L i=0,M=a.M;i<M;i++)7(a[i]==b)K i;K-1},37:J(a,b){7(E.14.1d){Q(L i=0;b[i];i++)7(b[i].15!=8)a.1g(b[i])}N Q(L i=0;b[i];i++)a.1g(b[i]);K a},57:J(a){L c=[],2r={};1S{Q(L i=0,M=a.M;i<M;i++){L b=E.O(a[i]);7(!2r[b]){2r[b]=P;c.1g(a[i])}}}1X(e){c=a}K c},3y:J(c,a,d){L b=[];Q(L i=0,M=c.M;i<M;i++)7(!d&&a(c[i],i)||d&&!a(c[i],i))b.1g(c[i]);K b},2c:J(d,a){L c=[];Q(L i=0,M=d.M;i<M;i++){L b=a(d[i],i);7(b!==V&&b!=10){7(b.1k!=1M)b=[b];c=c.71(b)}}K c}});L v=8Y.8W.2h();E.14={5K:(v.1D(/.+(?:8T|8S|8R|8O)[\\/: ]([\\d.]+)/)||[])[1],2d:/77/.17(v),2z:/2z/.17(v),1d:/1d/.17(v)&&!/2z/.17(v),48:/48/.17(v)&&!/(8L|77)/.17(v)};L y=E.14.1d?"6H":"75";E.1s({8I:!E.14.1d||T.6F=="79",46:{"Q":"8F","8E":"1t","4g":y,75:y,6H:y,3d:"3d",1t:"1t",1A:"1A",2Y:"2Y",3k:"3k",8C:"8B",2p:"2p",8A:"8z",3T:"3T",6C:"6C",28:"28",12:"12"}});E.R({6B:J(a){K a.1a},8y:J(a){K E.4u(a,"1a")},8x:J(a){K E.2Z(a,2,"2B")},8v:J(a){K E.2Z(a,2,"4t")},8u:J(a){K E.4u(a,"2B")},8t:J(a){K E.4u(a,"4t")},8s:J(a){K E.5i(a.1a.1C,a)},8r:J(a){K E.5i(a.1C)},6z:J(a){K E.12(a,"8q")?a.8o||a.8n.T:E.2I(a.3p)}},J(c,d){E.1n[c]=J(b){L a=E.2c(6,d);7(b&&1o b=="25")a=E.3e(b,a);K 6.2F(E.57(a))}});E.R({6y:"3t",8m:"6q",3o:"6o",8l:"5a",8k:"6S"},J(c,b){E.1n[c]=J(){L a=18;K 6.R(J(){Q(L i=0,M=a.M;i<M;i++)E(a[i])[b](6)})}});E.R({8j:J(a){E.1J(6,a,"");7(6.15==1)6.52(a)},8i:J(a){E.1t.1b(6,a)},8h:J(a){E.1t.1V(6,a)},8g:J(a){E.1t[E.1t.3Y(6,a)?"1V":"1b"](6,a)},1V:J(a){7(!a||E.1E(a,[6]).r.M){E("*",6).1b(6).R(J(){E.16.1V(6);E.35(6)});7(6.1a)6.1a.34(6)}},4x:J(){E(">*",6).1V();2b(6.1C)6.34(6.1C)}},J(a,b){E.1n[a]=J(){K 6.R(b,18)}});E.R(["8f","5X"],J(i,c){L b=c.2h();E.1n[b]=J(a){K 6[0]==1e?E.14.2z&&T.1h["5e"+c]||E.14.2d&&1e["8e"+c]||T.6F=="79"&&T.1F["5e"+c]||T.1h["5e"+c]:6[0]==T?24.2f(24.2f(T.1h["5d"+c],T.1F["5d"+c]),24.2f(T.1h["5L"+c],T.1F["5L"+c])):a==10?(6.M?E.1j(6[0],b):V):6.1j(b,a.1k==4e?a:a+"2S")}});L C=E.14.2d&&4s(E.14.5K)<8c?"(?:[\\\\w*4r-]|\\\\\\\\.)":"(?:[\\\\w\\8b-\\8a*4r-]|\\\\\\\\.)",6v=1B 4q("^>\\\\s*("+C+"+)"),6u=1B 4q("^("+C+"+)(#)("+C+"+)"),6s=1B 4q("^([#.]?)("+C+"*)");E.1s({6r:{"":J(a,i,m){K m[2]=="*"||E.12(a,m[2])},"#":J(a,i,m){K a.4z("2w")==m[2]},":":{89:J(a,i,m){K i<m[3]-0},88:J(a,i,m){K i>m[3]-0},2Z:J(a,i,m){K m[3]-0==i},6Z:J(a,i,m){K m[3]-0==i},3j:J(a,i){K i==0},3J:J(a,i,m,r){K i==r.M-1},6n:J(a,i){K i%2==0},6l:J(a,i){K i%2},"3j-4p":J(a){K a.1a.3S("*")[0]==a},"3J-4p":J(a){K E.2Z(a.1a.5o,1,"4t")==a},"83-4p":J(a){K!E.2Z(a.1a.5o,2,"4t")},6B:J(a){K a.1C},4x:J(a){K!a.1C},82:J(a,i,m){K(a.6x||a.81||E(a).1u()||"").1f(m[3])>=0},4d:J(a){K"1Z"!=a.U&&E.1j(a,"19")!="2H"&&E.1j(a,"4U")!="1Z"},1Z:J(a){K"1Z"==a.U||E.1j(a,"19")=="2H"||E.1j(a,"4U")=="1Z"},80:J(a){K!a.2Y},2Y:J(a){K a.2Y},3k:J(a){K a.3k},2p:J(a){K a.2p||E.1J(a,"2p")},1u:J(a){K"1u"==a.U},5u:J(a){K"5u"==a.U},5t:J(a){K"5t"==a.U},59:J(a){K"59"==a.U},3I:J(a){K"3I"==a.U},58:J(a){K"58"==a.U},6j:J(a){K"6j"==a.U},6i:J(a){K"6i"==a.U},2G:J(a){K"2G"==a.U||E.12(a,"2G")},4D:J(a){K/4D|2k|6h|2G/i.17(a.12)},3Y:J(a,i,m){K E.2s(m[3],a).M},7X:J(a){K/h\\d/i.17(a.12)},7W:J(a){K E.3y(E.3G,J(b){K a==b.Y}).M}}},6g:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1B 4q("^([:.#]*)("+C+"+)")],3e:J(a,c,b){L d,2m=[];2b(a&&a!=d){d=a;L f=E.1E(a,c,b);a=f.t.1r(/^\\s*,\\s*/,"");2m=b?c=f.r:E.37(2m,f.r)}K 2m},2s:J(t,p){7(1o t!="25")K[t];7(p&&p.15!=1&&p.15!=9)K[];p=p||T;L d=[p],2r=[],3J,12;2b(t&&3J!=t){L r=[];3J=t;t=E.3g(t);L o=S;L g=6v;L m=g.2O(t);7(m){12=m[1].2E();Q(L i=0;d[i];i++)Q(L c=d[i].1C;c;c=c.2B)7(c.15==1&&(12=="*"||c.12.2E()==12))r.1g(c);d=r;t=t.1r(g,"");7(t.1f(" ")==0)6w;o=P}N{g=/^([>+~])\\s*(\\w*)/i;7((m=g.2O(t))!=V){r=[];L l={};12=m[2].2E();m=m[1];Q(L j=0,3f=d.M;j<3f;j++){L n=m=="~"||m=="+"?d[j].2B:d[j].1C;Q(;n;n=n.2B)7(n.15==1){L h=E.O(n);7(m=="~"&&l[h])1Q;7(!12||n.12.2E()==12){7(m=="~")l[h]=P;r.1g(n)}7(m=="+")1Q}}d=r;t=E.3g(t.1r(g,""));o=P}}7(t&&!o){7(!t.1f(",")){7(p==d[0])d.4l();2r=E.37(2r,d);r=d=[p];t=" "+t.6e(1,t.M)}N{L k=6u;L m=k.2O(t);7(m){m=[0,m[2],m[3],m[1]]}N{k=6s;m=k.2O(t)}m[2]=m[2].1r(/\\\\/g,"");L f=d[d.M-1];7(m[1]=="#"&&f&&f.5J&&!E.3E(f)){L q=f.5J(m[2]);7((E.14.1d||E.14.2z)&&q&&1o q.2w=="25"&&q.2w!=m[2])q=E(\'[@2w="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.12(q,m[3]))?[q]:[]}N{Q(L i=0;d[i];i++){L a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];7(a=="*"&&d[i].12.2h()=="3V")a="3m";r=E.37(r,d[i].3S(a))}7(m[1]==".")r=E.55(r,m[2]);7(m[1]=="#"){L e=[];Q(L i=0;r[i];i++)7(r[i].4z("2w")==m[2]){e=[r[i]];1Q}r=e}d=r}t=t.1r(k,"")}}7(t){L b=E.1E(t,r);d=r=b.r;t=E.3g(b.t)}}7(t)d=[];7(d&&p==d[0])d.4l();2r=E.37(2r,d);K 2r},55:J(r,m,a){m=" "+m+" ";L c=[];Q(L i=0;r[i];i++){L b=(" "+r[i].1t+" ").1f(m)>=0;7(!a&&b||a&&!b)c.1g(r[i])}K c},1E:J(t,r,h){L d;2b(t&&t!=d){d=t;L p=E.6g,m;Q(L i=0;p[i];i++){m=p[i].2O(t);7(m){t=t.7V(m[0].M);m[2]=m[2].1r(/\\\\/g,"");1Q}}7(!m)1Q;7(m[1]==":"&&m[2]=="56")r=G.17(m[3])?E.1E(m[3],r,P).r:E(r).56(m[3]);N 7(m[1]==".")r=E.55(r,m[2],h);N 7(m[1]=="["){L g=[],U=m[3];Q(L i=0,3f=r.M;i<3f;i++){L a=r[i],z=a[E.46[m[2]]||m[2]];7(z==V||/6O|3Q|2p/.17(m[2]))z=E.1J(a,m[2])||\'\';7((U==""&&!!z||U=="="&&z==m[5]||U=="!="&&z!=m[5]||U=="^="&&z&&!z.1f(m[5])||U=="$="&&z.6e(z.M-m[5].M)==m[5]||(U=="*="||U=="~=")&&z.1f(m[5])>=0)^h)g.1g(a)}r=g}N 7(m[1]==":"&&m[2]=="2Z-4p"){L e={},g=[],17=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2O(m[3]=="6n"&&"2n"||m[3]=="6l"&&"2n+1"||!/\\D/.17(m[3])&&"7U+"+m[3]||m[3]),3j=(17[1]+(17[2]||1))-0,d=17[3]-0;Q(L i=0,3f=r.M;i<3f;i++){L j=r[i],1a=j.1a,2w=E.O(1a);7(!e[2w]){L c=1;Q(L n=1a.1C;n;n=n.2B)7(n.15==1)n.4k=c++;e[2w]=P}L b=S;7(3j==0){7(j.4k==d)b=P}N 7((j.4k-d)%3j==0&&(j.4k-d)/3j>=0)b=P;7(b^h)g.1g(j)}r=g}N{L f=E.6r[m[1]];7(1o f=="3V")f=f[m[2]];7(1o f=="25")f=6c("S||J(a,i){K "+f+";}");r=E.3y(r,J(a,i){K f(a,i,m,r)},h)}}K{r:r,t:t}},4u:J(b,c){L d=[];L a=b[c];2b(a&&a!=T){7(a.15==1)d.1g(a);a=a[c]}K d},2Z:J(a,e,c,b){e=e||1;L d=0;Q(;a;a=a[c])7(a.15==1&&++d==e)1Q;K a},5i:J(n,a){L r=[];Q(;n;n=n.2B){7(n.15==1&&(!a||n!=a))r.1g(n)}K r}});E.16={1b:J(f,i,g,e){7(f.15==3||f.15==8)K;7(E.14.1d&&f.53!=10)f=1e;7(!g.2D)g.2D=6.2D++;7(e!=10){L h=g;g=J(){K h.1i(6,18)};g.O=e;g.2D=h.2D}L j=E.O(f,"2R")||E.O(f,"2R",{}),1v=E.O(f,"1v")||E.O(f,"1v",J(){L a;7(1o E=="10"||E.16.5f)K a;a=E.16.1v.1i(18.3R.Y,18);K a});1v.Y=f;E.R(i.23(/\\s+/),J(c,b){L a=b.23(".");b=a[0];g.U=a[1];L d=j[b];7(!d){d=j[b]={};7(!E.16.2y[b]||E.16.2y[b].4j.1P(f)===S){7(f.3F)f.3F(b,1v,S);N 7(f.6b)f.6b("4i"+b,1v)}}d[g.2D]=g;E.16.2a[b]=P});f=V},2D:1,2a:{},1V:J(e,h,f){7(e.15==3||e.15==8)K;L i=E.O(e,"2R"),29,4X;7(i){7(h==10||(1o h=="25"&&h.7T(0)=="."))Q(L g 1p i)6.1V(e,g+(h||""));N{7(h.U){f=h.2q;h=h.U}E.R(h.23(/\\s+/),J(b,a){L c=a.23(".");a=c[0];7(i[a]){7(f)2V i[a][f.2D];N Q(f 1p i[a])7(!c[1]||i[a][f].U==c[1])2V i[a][f];Q(29 1p i[a])1Q;7(!29){7(!E.16.2y[a]||E.16.2y[a].4h.1P(e)===S){7(e.67)e.67(a,E.O(e,"1v"),S);N 7(e.66)e.66("4i"+a,E.O(e,"1v"))}29=V;2V i[a]}}})}Q(29 1p i)1Q;7(!29){L d=E.O(e,"1v");7(d)d.Y=V;E.35(e,"2R");E.35(e,"1v")}}},1N:J(g,c,d,f,h){c=E.2I(c||[]);7(g.1f("!")>=0){g=g.2K(0,-1);L a=P}7(!d){7(6.2a[g])E("*").1b([1e,T]).1N(g,c)}N{7(d.15==3||d.15==8)K 10;L b,29,1n=E.1q(d[g]||V),16=!c[0]||!c[0].36;7(16)c.4J(6.4Z({U:g,2L:d}));c[0].U=g;7(a)c[0].65=P;7(E.1q(E.O(d,"1v")))b=E.O(d,"1v").1i(d,c);7(!1n&&d["4i"+g]&&d["4i"+g].1i(d,c)===S)b=S;7(16)c.4l();7(h&&E.1q(h)){29=h.1i(d,b==V?c:c.71(b));7(29!==10)b=29}7(1n&&f!==S&&b!==S&&!(E.12(d,\'a\')&&g=="4V")){6.5f=P;1S{d[g]()}1X(e){}}6.5f=S}K b},1v:J(c){L a;c=E.16.4Z(c||1e.16||{});L b=c.U.23(".");c.U=b[0];L f=E.O(6,"2R")&&E.O(6,"2R")[c.U],42=1M.2l.2K.1P(18,1);42.4J(c);Q(L j 1p f){L d=f[j];42[0].2q=d;42[0].O=d.O;7(!b[1]&&!c.65||d.U==b[1]){L e=d.1i(6,42);7(a!==S)a=e;7(e===S){c.36();c.44()}}}7(E.14.1d)c.2L=c.36=c.44=c.2q=c.O=V;K a},4Z:J(c){L a=c;c=E.1s({},a);c.36=J(){7(a.36)a.36();a.7S=S};c.44=J(){7(a.44)a.44();a.7R=P};7(!c.2L)c.2L=c.7Q||T;7(c.2L.15==3)c.2L=a.2L.1a;7(!c.4S&&c.5w)c.4S=c.5w==c.2L?c.7P:c.5w;7(c.64==V&&c.63!=V){L b=T.1F,1h=T.1h;c.64=c.63+(b&&b.2v||1h&&1h.2v||0)-(b.62||0);c.7N=c.7L+(b&&b.2x||1h&&1h.2x||0)-(b.60||0)}7(!c.3c&&((c.4f||c.4f===0)?c.4f:c.5Z))c.3c=c.4f||c.5Z;7(!c.7b&&c.5Y)c.7b=c.5Y;7(!c.3c&&c.2G)c.3c=(c.2G&1?1:(c.2G&2?3:(c.2G&4?2:0)));K c},2y:{21:{4j:J(){5M();K},4h:J(){K}},3C:{4j:J(){7(E.14.1d)K S;E(6).2j("4P",E.16.2y.3C.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4P",E.16.2y.3C.2q);K P},2q:J(a){7(I(a,6))K P;18[0].U="3C";K E.16.1v.1i(6,18)}},3B:{4j:J(){7(E.14.1d)K S;E(6).2j("4O",E.16.2y.3B.2q);K P},4h:J(){7(E.14.1d)K S;E(6).3w("4O",E.16.2y.3B.2q);K P},2q:J(a){7(I(a,6))K P;18[0].U="3B";K E.16.1v.1i(6,18)}}}};E.1n.1s({2j:J(c,a,b){K c=="4H"?6.2X(c,a,b):6.R(J(){E.16.1b(6,c,b||a,b&&a)})},2X:J(d,b,c){K 6.R(J(){E.16.1b(6,d,J(a){E(6).3w(a);K(c||b).1i(6,18)},c&&b)})},3w:J(a,b){K 6.R(J(){E.16.1V(6,a,b)})},1N:J(c,a,b){K 6.R(J(){E.16.1N(c,a,6,P,b)})},5n:J(c,a,b){7(6[0])K E.16.1N(c,a,6[0],S,b);K 10},2g:J(){L b=18;K 6.4V(J(a){6.4N=0==6.4N?1:0;a.36();K b[6.4N].1i(6,18)||S})},7D:J(a,b){K 6.2j(\'3C\',a).2j(\'3B\',b)},21:J(a){5M();7(E.2Q)a.1P(T,E);N E.3A.1g(J(){K a.1P(6,E)});K 6}});E.1s({2Q:S,3A:[],21:J(){7(!E.2Q){E.2Q=P;7(E.3A){E.R(E.3A,J(){6.1i(T)});E.3A=V}E(T).5n("21")}}});L x=S;J 5M(){7(x)K;x=P;7(T.3F&&!E.14.2z)T.3F("5W",E.21,S);7(E.14.1d&&1e==3b)(J(){7(E.2Q)K;1S{T.1F.7B("26")}1X(3a){3z(18.3R,0);K}E.21()})();7(E.14.2z)T.3F("5W",J(){7(E.2Q)K;Q(L i=0;i<T.4L.M;i++)7(T.4L[i].2Y){3z(18.3R,0);K}E.21()},S);7(E.14.2d){L a;(J(){7(E.2Q)K;7(T.39!="5V"&&T.39!="1y"){3z(18.3R,0);K}7(a===10)a=E("W, 7a[7A=7z]").M;7(T.4L.M!=a){3z(18.3R,0);K}E.21()})()}E.16.1b(1e,"3U",E.21)}E.R(("7y,7x,3U,7w,5d,4H,4V,7v,"+"7G,7u,7t,4P,4O,7s,2k,"+"58,7K,7q,7p,3a").23(","),J(i,b){E.1n[b]=J(a){K a?6.2j(b,a):6.1N(b)}});L I=J(a,c){L b=a.4S;2b(b&&b!=c)1S{b=b.1a}1X(3a){b=c}K b==c};E(1e).2j("4H",J(){E("*").1b(T).3w()});E.1n.1s({3U:J(g,d,c){7(E.1q(g))K 6.2j("3U",g);L e=g.1f(" ");7(e>=0){L i=g.2K(e,g.M);g=g.2K(0,e)}c=c||J(){};L f="4Q";7(d)7(E.1q(d)){c=d;d=V}N{d=E.3m(d);f="61"}L h=6;E.3P({1c:g,U:f,1H:"3q",O:d,1y:J(a,b){7(b=="1W"||b=="5U")h.3q(i?E("<1x/>").3t(a.4b.1r(/<1m(.|\\s)*?\\/1m>/g,"")).2s(i):a.4b);h.R(c,[a.4b,b,a])}});K 6},7n:J(){K E.3m(6.5T())},5T:J(){K 6.2c(J(){K E.12(6,"3u")?E.2I(6.7m):6}).1E(J(){K 6.31&&!6.2Y&&(6.3k||/2k|6h/i.17(6.12)||/1u|1Z|3I/i.17(6.U))}).2c(J(i,c){L b=E(6).5O();K b==V?V:b.1k==1M?E.2c(b,J(a,i){K{31:c.31,1A:a}}):{31:c.31,1A:b}}).22()}});E.R("5S,6d,5R,6D,5Q,6m".23(","),J(i,o){E.1n[o]=J(f){K 6.2j(o,f)}});L B=(1B 3v).3L();E.1s({22:J(d,b,a,c){7(E.1q(b)){a=b;b=V}K E.3P({U:"4Q",1c:d,O:b,1W:a,1H:c})},7l:J(b,a){K E.22(b,V,a,"1m")},7k:J(c,b,a){K E.22(c,b,a,"3i")},7i:J(d,b,a,c){7(E.1q(b)){a=b;b={}}K E.3P({U:"61",1c:d,O:b,1W:a,1H:c})},85:J(a){E.1s(E.4I,a)},4I:{2a:P,U:"4Q",2U:0,5P:"4o/x-7h-3u-7g",5N:P,3l:P,O:V,6p:V,3I:V,49:{3M:"4o/3M, 1u/3M",3q:"1u/3q",1m:"1u/4m, 4o/4m",3i:"4o/3i, 1u/4m",1u:"1u/a7",4G:"*/*"}},4F:{},3P:J(s){L f,2W=/=\\?(&|$)/g,1z,O;s=E.1s(P,s,E.1s(P,{},E.4I,s));7(s.O&&s.5N&&1o s.O!="25")s.O=E.3m(s.O);7(s.1H=="4E"){7(s.U.2h()=="22"){7(!s.1c.1D(2W))s.1c+=(s.1c.1D(/\\?/)?"&":"?")+(s.4E||"7d")+"=?"}N 7(!s.O||!s.O.1D(2W))s.O=(s.O?s.O+"&":"")+(s.4E||"7d")+"=?";s.1H="3i"}7(s.1H=="3i"&&(s.O&&s.O.1D(2W)||s.1c.1D(2W))){f="4E"+B++;7(s.O)s.O=(s.O+"").1r(2W,"="+f+"$1");s.1c=s.1c.1r(2W,"="+f+"$1");s.1H="1m";1e[f]=J(a){O=a;1W();1y();1e[f]=10;1S{2V 1e[f]}1X(e){}7(h)h.34(g)}}7(s.1H=="1m"&&s.1T==V)s.1T=S;7(s.1T===S&&s.U.2h()=="22"){L i=(1B 3v()).3L();L j=s.1c.1r(/(\\?|&)4r=.*?(&|$)/,"$a4="+i+"$2");s.1c=j+((j==s.1c)?(s.1c.1D(/\\?/)?"&":"?")+"4r="+i:"")}7(s.O&&s.U.2h()=="22"){s.1c+=(s.1c.1D(/\\?/)?"&":"?")+s.O;s.O=V}7(s.2a&&!E.5H++)E.16.1N("5S");7((!s.1c.1f("a3")||!s.1c.1f("//"))&&s.1H=="1m"&&s.U.2h()=="22"){L h=T.3S("6f")[0];L g=T.3s("1m");g.3Q=s.1c;7(s.7c)g.a2=s.7c;7(!f){L l=S;g.9Z=g.9Y=J(){7(!l&&(!6.39||6.39=="5V"||6.39=="1y")){l=P;1W();1y();h.34(g)}}}h.38(g);K 10}L m=S;L k=1e.78?1B 78("9X.9V"):1B 76();k.9T(s.U,s.1c,s.3l,s.6p,s.3I);1S{7(s.O)k.4C("9R-9Q",s.5P);7(s.5C)k.4C("9O-5A-9N",E.4F[s.1c]||"9L, 9K 9I 9H 5z:5z:5z 9F");k.4C("X-9C-9A","76");k.4C("9z",s.1H&&s.49[s.1H]?s.49[s.1H]+", */*":s.49.4G)}1X(e){}7(s.6Y)s.6Y(k);7(s.2a)E.16.1N("6m",[k,s]);L c=J(a){7(!m&&k&&(k.39==4||a=="2U")){m=P;7(d){6I(d);d=V}1z=a=="2U"&&"2U"||!E.6X(k)&&"3a"||s.5C&&E.6J(k,s.1c)&&"5U"||"1W";7(1z=="1W"){1S{O=E.6W(k,s.1H)}1X(e){1z="5x"}}7(1z=="1W"){L b;1S{b=k.5q("6U-5A")}1X(e){}7(s.5C&&b)E.4F[s.1c]=b;7(!f)1W()}N E.5v(s,k,1z);1y();7(s.3l)k=V}};7(s.3l){L d=53(c,13);7(s.2U>0)3z(J(){7(k){k.9t();7(!m)c("2U")}},s.2U)}1S{k.9s(s.O)}1X(e){E.5v(s,k,V,e)}7(!s.3l)c();J 1W(){7(s.1W)s.1W(O,1z);7(s.2a)E.16.1N("5Q",[k,s])}J 1y(){7(s.1y)s.1y(k,1z);7(s.2a)E.16.1N("5R",[k,s]);7(s.2a&&!--E.5H)E.16.1N("6d")}K k},5v:J(s,a,b,e){7(s.3a)s.3a(a,b,e);7(s.2a)E.16.1N("6D",[a,s,e])},5H:0,6X:J(r){1S{K!r.1z&&9q.9p=="59:"||(r.1z>=6T&&r.1z<9n)||r.1z==6R||r.1z==9l||E.14.2d&&r.1z==10}1X(e){}K S},6J:J(a,c){1S{L b=a.5q("6U-5A");K a.1z==6R||b==E.4F[c]||E.14.2d&&a.1z==10}1X(e){}K S},6W:J(r,b){L c=r.5q("9k-U");L d=b=="3M"||!b&&c&&c.1f("3M")>=0;L a=d?r.9j:r.4b;7(d&&a.1F.28=="5x")6Q"5x";7(b=="1m")E.5g(a);7(b=="3i")a=6c("("+a+")");K a},3m:J(a){L s=[];7(a.1k==1M||a.5h)E.R(a,J(){s.1g(3r(6.31)+"="+3r(6.1A))});N Q(L j 1p a)7(a[j]&&a[j].1k==1M)E.R(a[j],J(){s.1g(3r(j)+"="+3r(6))});N s.1g(3r(j)+"="+3r(a[j]));K s.6a("&").1r(/%20/g,"+")}});E.1n.1s({1G:J(c,b){K c?6.2e({1R:"1G",27:"1G",1w:"1G"},c,b):6.1E(":1Z").R(J(){6.W.19=6.5s||"";7(E.1j(6,"19")=="2H"){L a=E("<"+6.28+" />").6y("1h");6.W.19=a.1j("19");7(6.W.19=="2H")6.W.19="3D";a.1V()}}).3h()},1I:J(b,a){K b?6.2e({1R:"1I",27:"1I",1w:"1I"},b,a):6.1E(":4d").R(J(){6.5s=6.5s||E.1j(6,"19");6.W.19="2H"}).3h()},6N:E.1n.2g,2g:J(a,b){K E.1q(a)&&E.1q(b)?6.6N(a,b):a?6.2e({1R:"2g",27:"2g",1w:"2g"},a,b):6.R(J(){E(6)[E(6).3H(":1Z")?"1G":"1I"]()})},9f:J(b,a){K 6.2e({1R:"1G"},b,a)},9d:J(b,a){K 6.2e({1R:"1I"},b,a)},9c:J(b,a){K 6.2e({1R:"2g"},b,a)},9a:J(b,a){K 6.2e({1w:"1G"},b,a)},99:J(b,a){K 6.2e({1w:"1I"},b,a)},97:J(c,a,b){K 6.2e({1w:a},c,b)},2e:J(l,k,j,h){L i=E.6P(k,j,h);K 6[i.2P===S?"R":"2P"](J(){7(6.15!=1)K S;L g=E.1s({},i);L f=E(6).3H(":1Z"),4A=6;Q(L p 1p l){7(l[p]=="1I"&&f||l[p]=="1G"&&!f)K E.1q(g.1y)&&g.1y.1i(6);7(p=="1R"||p=="27"){g.19=E.1j(6,"19");g.32=6.W.32}}7(g.32!=V)6.W.32="1Z";g.40=E.1s({},l);E.R(l,J(c,a){L e=1B E.2t(4A,g,c);7(/2g|1G|1I/.17(a))e[a=="2g"?f?"1G":"1I":a](l);N{L b=a.3X().1D(/^([+-]=)?([\\d+-.]+)(.*)$/),1Y=e.2m(P)||0;7(b){L d=2M(b[2]),2A=b[3]||"2S";7(2A!="2S"){4A.W[c]=(d||1)+2A;1Y=((d||1)/e.2m(P))*1Y;4A.W[c]=1Y+2A}7(b[1])d=((b[1]=="-="?-1:1)*d)+1Y;e.45(1Y,d,2A)}N e.45(1Y,a,"")}});K P})},2P:J(a,b){7(E.1q(a)||(a&&a.1k==1M)){b=a;a="2t"}7(!a||(1o a=="25"&&!b))K A(6[0],a);K 6.R(J(){7(b.1k==1M)A(6,a,b);N{A(6,a).1g(b);7(A(6,a).M==1)b.1i(6)}})},94:J(b,c){L a=E.3G;7(b)6.2P([]);6.R(J(){Q(L i=a.M-1;i>=0;i--)7(a[i].Y==6){7(c)a[i](P);a.72(i,1)}});7(!c)6.5p();K 6}});L A=J(b,c,a){7(!b)K 10;c=c||"2t";L q=E.O(b,c+"2P");7(!q||a)q=E.O(b,c+"2P",a?E.2I(a):[]);K q};E.1n.5p=J(a){a=a||"2t";K 6.R(J(){L q=A(6,a);q.4l();7(q.M)q[0].1i(6)})};E.1s({6P:J(b,a,c){L d=b&&b.1k==92?b:{1y:c||!c&&a||E.1q(b)&&b,2u:b,3Z:c&&a||a&&a.1k!=91&&a};d.2u=(d.2u&&d.2u.1k==51?d.2u:{90:8Z,9D:6T}[d.2u])||8X;d.5y=d.1y;d.1y=J(){7(d.2P!==S)E(6).5p();7(E.1q(d.5y))d.5y.1i(6)};K d},3Z:{70:J(p,n,b,a){K b+a*p},5j:J(p,n,b,a){K((-24.8V(p*24.8U)/2)+0.5)*a+b}},3G:[],3W:V,2t:J(b,c,a){6.11=c;6.Y=b;6.1l=a;7(!c.47)c.47={}}});E.2t.2l={4y:J(){7(6.11.30)6.11.30.1i(6.Y,[6.2J,6]);(E.2t.30[6.1l]||E.2t.30.4G)(6);7(6.1l=="1R"||6.1l=="27")6.Y.W.19="3D"},2m:J(a){7(6.Y[6.1l]!=V&&6.Y.W[6.1l]==V)K 6.Y[6.1l];L r=2M(E.1j(6.Y,6.1l,a));K r&&r>-8Q?r:2M(E.2o(6.Y,6.1l))||0},45:J(c,b,d){6.5B=(1B 3v()).3L();6.1Y=c;6.3h=b;6.2A=d||6.2A||"2S";6.2J=6.1Y;6.4B=6.4w=0;6.4y();L e=6;J t(a){K e.30(a)}t.Y=6.Y;E.3G.1g(t);7(E.3W==V){E.3W=53(J(){L a=E.3G;Q(L i=0;i<a.M;i++)7(!a[i]())a.72(i--,1);7(!a.M){6I(E.3W);E.3W=V}},13)}},1G:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1G=P;6.45(0,6.2m());7(6.1l=="27"||6.1l=="1R")6.Y.W[6.1l]="8N";E(6.Y).1G()},1I:J(){6.11.47[6.1l]=E.1J(6.Y.W,6.1l);6.11.1I=P;6.45(6.2m(),0)},30:J(a){L t=(1B 3v()).3L();7(a||t>6.11.2u+6.5B){6.2J=6.3h;6.4B=6.4w=1;6.4y();6.11.40[6.1l]=P;L b=P;Q(L i 1p 6.11.40)7(6.11.40[i]!==P)b=S;7(b){7(6.11.19!=V){6.Y.W.32=6.11.32;6.Y.W.19=6.11.19;7(E.1j(6.Y,"19")=="2H")6.Y.W.19="3D"}7(6.11.1I)6.Y.W.19="2H";7(6.11.1I||6.11.1G)Q(L p 1p 6.11.40)E.1J(6.Y.W,p,6.11.47[p])}7(b&&E.1q(6.11.1y))6.11.1y.1i(6.Y);K S}N{L n=t-6.5B;6.4w=n/6.11.2u;6.4B=E.3Z[6.11.3Z||(E.3Z.5j?"5j":"70")](6.4w,n,0,1,6.11.2u);6.2J=6.1Y+((6.3h-6.1Y)*6.4B);6.4y()}K P}};E.2t.30={2v:J(a){a.Y.2v=a.2J},2x:J(a){a.Y.2x=a.2J},1w:J(a){E.1J(a.Y.W,"1w",a.2J)},4G:J(a){a.Y.W[a.1l]=a.2J+a.2A}};E.1n.5L=J(){L b=0,3b=0,Y=6[0],5l;7(Y)8M(E.14){L d=Y.1a,41=Y,1K=Y.1K,1L=Y.2i,5D=2d&&4s(5K)<8J&&!/a1/i.17(v),2T=E.1j(Y,"43")=="2T";7(Y.6G){L c=Y.6G();1b(c.26+24.2f(1L.1F.2v,1L.1h.2v),c.3b+24.2f(1L.1F.2x,1L.1h.2x));1b(-1L.1F.62,-1L.1F.60)}N{1b(Y.5G,Y.5F);2b(1K){1b(1K.5G,1K.5F);7(48&&!/^t(8H|d|h)$/i.17(1K.28)||2d&&!5D)2N(1K);7(!2T&&E.1j(1K,"43")=="2T")2T=P;41=/^1h$/i.17(1K.28)?41:1K;1K=1K.1K}2b(d&&d.28&&!/^1h|3q$/i.17(d.28)){7(!/^8G|1O.*$/i.17(E.1j(d,"19")))1b(-d.2v,-d.2x);7(48&&E.1j(d,"32")!="4d")2N(d);d=d.1a}7((5D&&(2T||E.1j(41,"43")=="4W"))||(48&&E.1j(41,"43")!="4W"))1b(-1L.1h.5G,-1L.1h.5F);7(2T)1b(24.2f(1L.1F.2v,1L.1h.2v),24.2f(1L.1F.2x,1L.1h.2x))}5l={3b:3b,26:b}}J 2N(a){1b(E.2o(a,"a8",P),E.2o(a,"a9",P))}J 1b(l,t){b+=4s(l)||0;3b+=4s(t)||0}K 5l}})();',62,631,'||||||this|if||||||||||||||||||||||||||||||||||||||function|return|var|length|else|data|true|for|each|false|document|type|null|style||elem||undefined|options|nodeName||browser|nodeType|event|test|arguments|display|parentNode|add|url|msie|window|indexOf|push|body|apply|css|constructor|prop|script|fn|typeof|in|isFunction|replace|extend|className|text|handle|opacity|div|complete|status|value|new|firstChild|match|filter|documentElement|show|dataType|hide|attr|offsetParent|doc|Array|trigger|table|call|break|height|try|cache|tbody|remove|success|catch|start|hidden||ready|get|split|Math|string|left|width|tagName|ret|global|while|map|safari|animate|max|toggle|toLowerCase|ownerDocument|bind|select|prototype|cur||curCSS|selected|handler|done|find|fx|duration|scrollLeft|id|scrollTop|special|opera|unit|nextSibling|stack|guid|toUpperCase|pushStack|button|none|makeArray|now|slice|target|parseFloat|border|exec|queue|isReady|events|px|fixed|timeout|delete|jsre|one|disabled|nth|step|name|overflow|inArray|removeChild|removeData|preventDefault|merge|appendChild|readyState|error|top|which|innerHTML|multiFilter|rl|trim|end|json|first|checked|async|param|elems|insertBefore|childNodes|html|encodeURIComponent|createElement|append|form|Date|unbind|color|grep|setTimeout|readyList|mouseleave|mouseenter|block|isXMLDoc|addEventListener|timers|is|password|last|runtimeStyle|getTime|xml|jQuery|domManip|ajax|src|callee|getElementsByTagName|selectedIndex|load|object|timerId|toString|has|easing|curAnim|offsetChild|args|position|stopPropagation|custom|props|orig|mozilla|accepts|clean|responseText|defaultView|visible|String|charCode|float|teardown|on|setup|nodeIndex|shift|javascript|currentStyle|application|child|RegExp|_|parseInt|previousSibling|dir|tr|state|empty|update|getAttribute|self|pos|setRequestHeader|input|jsonp|lastModified|_default|unload|ajaxSettings|unshift|getComputedStyle|styleSheets|getPropertyValue|lastToggle|mouseout|mouseover|GET|andSelf|relatedTarget|init|visibility|click|absolute|index|container|fix|outline|Number|removeAttribute|setInterval|prevObject|classFilter|not|unique|submit|file|after|windowData|deep|scroll|client|triggered|globalEval|jquery|sibling|swing|clone|results|wrapAll|triggerHandler|lastChild|dequeue|getResponseHeader|createTextNode|oldblock|checkbox|radio|handleError|fromElement|parsererror|old|00|Modified|startTime|ifModified|safari2|getWH|offsetTop|offsetLeft|active|values|getElementById|version|offset|bindReady|processData|val|contentType|ajaxSuccess|ajaxComplete|ajaxStart|serializeArray|notmodified|loaded|DOMContentLoaded|Width|ctrlKey|keyCode|clientTop|POST|clientLeft|clientX|pageX|exclusive|detachEvent|removeEventListener|swap|cloneNode|join|attachEvent|eval|ajaxStop|substr|head|parse|textarea|reset|image|zoom|odd|ajaxSend|even|before|username|prepend|expr|quickClass|uuid|quickID|quickChild|continue|textContent|appendTo|contents|evalScript|parent|defaultValue|ajaxError|setArray|compatMode|getBoundingClientRect|styleFloat|clearInterval|httpNotModified|nodeValue|100|alpha|_toggle|href|speed|throw|304|replaceWith|200|Last|colgroup|httpData|httpSuccess|beforeSend|eq|linear|concat|splice|fieldset|multiple|cssFloat|XMLHttpRequest|webkit|ActiveXObject|CSS1Compat|link|metaKey|scriptCharset|callback|col|pixelLeft|urlencoded|www|post|hasClass|getJSON|getScript|elements|serialize|black|keyup|keypress|solid|change|mousemove|mouseup|dblclick|resize|focus|blur|stylesheet|rel|doScroll|round|hover|padding|offsetHeight|mousedown|offsetWidth|Bottom|Top|keydown|clientY|Right|pageY|Left|toElement|srcElement|cancelBubble|returnValue|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|ajaxSetup|font|size|gt|lt|uFFFF|u0128|417|Boolean|inner|Height|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|contentWindow|contentDocument|wrap|iframe|children|siblings|prevAll|nextAll|prev|wrapInner|next|parents|maxLength|maxlength|readOnly|readonly|reverse|class|htmlFor|inline|able|boxModel|522|setData|compatible|with|1px|ie|getData|10000|ra|it|rv|PI|cos|userAgent|400|navigator|600|slow|Function|Object|array|stop|ig|NaN|fadeTo|option|fadeOut|fadeIn|setAttribute|slideToggle|slideUp|changed|slideDown|be|can|property|responseXML|content|1223|getAttributeNode|300|method|protocol|location|action|send|abort|cssText|th|td|cap|specified|Accept|With|colg|Requested|fast|tfoot|GMT|thead|1970|Jan|attributes|01|Thu|leg|Since|If|opt|Type|Content|embed|open|area|XMLHTTP|hr|Microsoft|onreadystatechange|onload|meta|adobeair|charset|http|1_|img|br|plain|borderLeftWidth|borderTopWidth|abbr'.split('|'),0,{}))

/*
----------------- 4. jQuery powered functions -----------------*/

/* Be careful when changing the order that functions are fired on.  Often 1 function is dependant on another being fired, 
as the generated elements need to be available */

// do stuff when DOM is ready
  $(document).ready(function() {
		
		resDepLayout.checkBrowserWidth();		// Resolution dependent layout
		toggleStuff.completeToggle();					// Show and hide content with slide functionality
		$('#products').css('display', 'none');			// Hide the nav that generates the popups
		dtsl.init();														// Dynamic button createion used on the myaccounts page
		setTabIndex.topArea();								// Set tabindex on the fly, to ensure correct tabbing order when popups are used in the top area of site
		setTabIndex.primNav();								// Set tabindex on the fly, to ensure correct tabbing order when popups are used in the main body of site
		//myAccountsPop.createPopup();			// Create myAccounts popups to append to page
		//nav.constructPop();									// Create standard popups to append to page
		//nav.hideNavOffTab();								// Handle keyboard navigation in the popups
		cao.createForms();										// Create pages that are used before the user enters the CAO application.  This is used to determine what app they enter.
		preLoader.beginLoad();							// Call functions that are required to be called twice due to Touch Clarity delayed rendering
		writeTag.writeScript()
		linkIds.giveLinksId();									// Give all links an id for SI Overlay
		
		//Equal sized columns
		jQuery.fn.vjustify=function() {
			var maxHeight=0;
			this.each(function(){
				if (this.offsetHeight>maxHeight) {
					maxHeight=this.offsetHeight;
				}
			});
			this.each(function(){
				var firstHeight = maxHeight + "px";
				if ($.browser.msie) {
					$(this).css("height", firstHeight);
				} else {
					$(this).css("min-height", firstHeight);
				}
			if (this.offsetHeight>maxHeight) {
				var secondHeight = (maxHeight/-(this.offsetHeight-maxHeight))+"px";
				if ($.browser.msie) {
					$(this).css("height", secondHeight);
				} else {
					$(this).css("min-height", secondHeight);
				}
			}
			
			});
			};
			// If you need another equaliser, just add this line of code "$(".className").vjustify();" with the className you want to use.
			$(".equalise").vjustify();
			$(".equallist").vjustify();
			$(".equalcontent").vjustify(); 
		});
		
	 
	//ROUND STUFF (round buttons and containers)
		var roundMe = {
		/* The class .corners should be added to a <div> element to provide extra markup for consitent round corners 
		   This can be done via the .corners class for container and .buttone-container for buttons */
		
		//Containers
			corners: function() {
				$("div.corners").each(function (i) {
				var next = this;
				// Test whether this container already has round corners.  
				//This is required due to TC firing the function twice, and is tested by looking for the className = "empty"
				if (next.firstChild.className !== "empty") {
				$(next).css("border", "0").wrapInner("<div class='inner'><div class='box-content clearing'></div></div>").prepend("<div class='empty'></div>");
				}
				});
			},
			
		// Buttons
			buttons: function() {
				$("div.button-container").addClass("js-button-container").removeClass("button-container").each(function (i) {
				var next = this;
				// Test whether this button already has round corners.  
				//This is required due to TC firing the function twice, and is tested by looking for the className = "emptybut"
				if (next.firstChild.className !== "emptybut") {
				$(next).prepend("<div class='emptybut'></div>");
				}
				});
				$(".js-button-container > a").wrap("<div class='button'><span></span></div>");
				}
			};
	 
	//TOGGLE STUFF
		var toggleStuff = {
			/* A className of toggleme should be applied to the element that triggers the hide/reveal
			   The next element is automatically selected by applying the class "toggleme" */
			
			// Standard toggle used for the majority of toggling on the site
				completeToggle: function() {
					// Hide the next elements
					$(".toggleme").next().hide();
					// Wrap the current element in a <a> to make it accessible via keyboard
					$(".toggleme").wrapInner("<a href='#'></a>").click(function() {
					// Onclick reveal or hide the element
					$(this).next().slideToggle();
					return false;
				});
				
			// Gateway page with Servicing column
				$("#servicing-col .toggleme").css("margin-bottom", "8px").click(function() {
					$(this).next().css("margin-top", "-8px");
				});
				
			//Secondary column requires different handling to test if the current link is redundant.  If so the section it sits within must be opened.
			// This is required for the knowledge pieces that sit within the elh section of the site.
				$("#nav-secondary .toggleme").css("margin", "0px");				
				if (g.id("current-elh")) {
					$("#nav-secondary .toggleme").next().hide();
					var blah = g.id("current-elh").parentNode.parentNode;
					blah.style.display = "block";
				};
	
			//Change image on toggle to give appearance of closed or opened image
				$("#servicing-col .toggleme,#supplimentary-content .toggleme").toggle(function(){ 
					$(this).addClass("section-open"); 
				},function(){ 
					$(this).removeClass("section-open"); 
				});						
			}			
	};
		
	var setTabIndex = {

    /** Give top area a tabindex in increments of 1 so this is always the area tabbed through first **/
    topArea: function () {

    /*Give first link in page tabindex1, this is required as the myaccounts popup run off this,
    Then find out how many links will be within the generated popup box so that the next links tabindex will be one more than the 
    last link within the popup box*/
        if (!document.getElementById || !g.id("orientation") || !g.id("accounts") || !g.id("accounts-products") || !g.tn || !g.tn("a") || !g.idTn("skiplink", "a")) {
            return false;
        }
        var skip = g.idTn("skiplink", "a");
        skip[0].setAttribute("tabIndex", 1);
        var myaccounts = g.id("accounts").setAttribute("tabIndex", 2);
        var myaccoutspoplinks = g.idTn("accounts-products", "a");		
        var localTabindex = myaccoutspoplinks.length + 2;
        var topSectionLinks = g.idTn("orientation", "a");
        for (var i = 0; i < topSectionLinks.length; i++) {
            topSectionLinks[i].setAttribute("tabIndex", localTabindex);
            localTabindex ++;
        }
    },

/** Give top links a tabindex value in increments of 100 **/
    primNav: function () {
        if (!document.getElementById || !g.id("nav-primary") || !g.id("wrapper") || !document.getElementsByTagName || !g.tn("a")) {
            return false;
        }
        var topTabLinks = g.idTn("nav-primary", "a");
        var parent = g.id("wrapper");
        var tabTabindex = 100;
        for (var i = 0; i < topTabLinks.length; i++) {
            topTabLinks[i].setAttribute("tabIndex", tabTabindex);
            tabTabindex = tabTabindex + 100;
        }
    }
};

	
	// FUNCTION CALLS REQUIRED TO BE SEPERATE FROM FIRST CALL DUE TO TOUCH CLAIRTY DELAYED RENDERING
		var preLoader = {
			beginLoad: function() {	
				buttonControls.addWindowTip();
				roundMe.corners();
				roundMe.buttons();
			}
		}
	
	//Add "NEW WINDOW" for popups
		var buttonControls = {
			addWindowTip: function () {
			  $("a.new-newline").each(function (i) {
				var thisLinkNL = this;	
				if (thisLinkNL.lastChild.nodeName.toLowerCase() !== "b") {
					$(thisLinkNL).append(" <b> (new window)</b>");
				}
			  });
	
			  $("a.new-small").each(function (i) {
				var thisLinkNS = this;	
				if (thisLinkNS.lastChild.nodeName.toLowerCase() !== "b") {
					$(thisLinkNS).append(" <b> (new window)</b>");
				}
			  });
			  
			  $("a.popup").each(function (i) {
				var thisLink = this;
				//if (thisLink.lastChild.className !== "newwin") {
				if (thisLink.lastChild.nodeName.toLowerCase() !== "b") {
				var currentClasses = this.className;
				if ((currentClasses && (' ' + currentClasses + ' ').indexOf(' new-newline ') === -1) && (currentClasses && (' ' + currentClasses + ' ').indexOf(' nw-small ') === -1)) {
					$(thisLink).append(" <b>(new window)</b>");
				}
				}
			  });			
			}
	};

/*
-----------------  8. Man in Blue Resolution Dependent Layout Script & ecmascript.stchur.com IE resize script -----------------------------------*/	
var resDepLayout = {
		
/** Check initial size and provide suitable CSS **/
    checkBrowserWidth: function () {
		var theWidth = resDepLayout.getBrowserWidth();
        if (theWidth === 0)	{
            var resolutionCookie = document.cookie.match(/(^|;)tmib_res_layout[^;]*(;|$)/);
            if (resolutionCookie !== null) {
                resDepLayout.setStylesheet(unescape(resolutionCookie[0].split("=")[1]));
            }
            g.addLoadEvent(resDepLayout.checkBrowserWidth);
            return false;
        }

        if (theWidth > 994)	{
            resDepLayout.setStylesheet("1024");
            document.cookie = "tmib_res_layout=" + escape("1024");
        } else {
            resDepLayout.setStylesheet("");
            document.cookie = "tmib_res_layout=";
        } 
        return true;
    },


    getBrowserWidth: function () {
        if (window.innerWidth)	{
            return window.innerWidth;
        } else if (document.documentElement && document.documentElement.clientWidth !== 0) { 	
            return document.documentElement.clientWidth;
        } else if (document.body) {
            return document.body.clientWidth;
        }	
        return 0;
    },

    setStylesheet: function (styleTitle) {
        var currTag;
        if (document.getElementsByTagName) {
            for (var i = 0; (currTag = document.getElementsByTagName("link")[i]); i++) {
                if (currTag.getAttribute("rel").indexOf("style") !== -1 && currTag.getAttribute("title")) {
                    currTag.disabled = true;
                    if (currTag.getAttribute("title") === styleTitle) {
                        currTag.disabled = false;
                    }
                }
            }
        }
        return true;
    },		

    xBrowserResize: function () {
        window.g_prevSize = resDepLayout.getViewportSize();
        var theSize = window.g_prevSize;
        setInterval(resDepLayout.resize, 10);
        return theSize;
    },

    resize: function () {
       /*extern g_prevSize */ /* This allows validation in JS Lint for global variables */
        var currentSize = resDepLayout.getViewportSize();		
        if (currentSize[0] !== g_prevSize[0] || currentSize[1] !== g_prevSize[1]) {
            g_prevSize = currentSize;
            var theWidth = currentSize[0];
            if (theWidth > 994) {
                resDepLayout.setStylesheet("1024");
                document.cookie = "tmib_res_layout=" + escape("1024");
            } else {
                resDepLayout.setStylesheet("");
                document.cookie = "tmib_res_layout=";
            }
        }
    },
 
    getViewportSize: function () {
        var size = [0, 0];
        if (typeof window.innerWidth !== 'undefined') {
            size = [ window.innerWidth, window.innerHeight ];
        } else if (typeof	document.documentElement !== 'undefined' && typeof document.documentElement.clientWidth !== 'undefined' && document.documentElement.clientWidth !== 0) {
            size = [ document.documentElement.clientWidth, document.documentElement.clientHeight ];
        } else {
            size = [ document.getElementsByTagName('body')[0].clientWidth, document.getElementsByTagName('body')[0].clientHeight ];
        }
        return size;				
    }
};


/*
-----------------  9. Event delegation -----------------------------------*/	

var eventDelegation = {

    bodyTest: function () {
        if (!document.getElementById || !document.createElement) {
            return;
        }
        var docBody = document.getElementById("top-border");
        if (!docBody) {
            return false; 
        }
        g.addEvent(docBody, 'click', eventDelegation.siClickHandler, false);		
		g.addEvent(docBody, 'click', eventDelegation.popupClickHandler, false);
        //g.addEvent(docBody, 'click', eventDelegation.toggleClickHandler, false);
		
    },
	
/* ------------------ POPUPS ------------------------------------*/   
	
    popupClickHandler: function (e) {
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        var triggerParent = trigger.parentNode;
        var thisLink, uniqueLink;

	// Get target href or target parent href.  This will be used to determine what page is opened
        if (trigger.nodeName.toLowerCase() === "a") {
            thisLink = trigger.href;
            uniqueLink = trigger;
        } else if (triggerParent.nodeName.toLowerCase() === "a") {
            thisLink = triggerParent.href;
            uniqueLink = triggerParent;
        } else {
            return;
        }		
								
	//Standard Popups
        if ((trigger.className && (" " + trigger.className + " ").indexOf(" popup ") !== -1) || (triggerParent.className && (" " + triggerParent.className + " ").indexOf(" popup ") !== -1)) {			
			window.open(thisLink); 
            g.stopDefault(e);
            return false;
        }
			
	//Metafaq Popups
        if ((trigger.className && (" " + trigger.className + " ").indexOf(" metafaq ") !== -1) || (triggerParent.className && (" " + triggerParent.className + " ").indexOf(" metafaq ") !== -1)) {
            window.open(thisLink, 'mypop', "height=650, width=780, status, resizable, scrollbars, toolbar"); 
            g.stopDefault(e);
            return false;
        }    

	//Demo Popups
        if ((trigger.className && (" " + trigger.className + " ").indexOf(" demowindow ") !== -1) || (triggerParent.className && (" " + triggerParent.className + " ").indexOf(" demowindow ") !== -1)) {
            window.open(thisLink, 'mypop', "height=500, width=660, status, resizable, scrollbars, toolbar"); 
            g.stopDefault(e);
            return false;
        }    

	//Segala Popup
        //if ((trigger.className && (" " + trigger.className + " ").indexOf(" segala ") !== -1) || (triggerParent.className && (" " + triggerParent.className + " ").indexOf(" segala ") !== -1)) {
          //  window.open(thisLink, 'mypop', "height=780, width=500, status, resizable, scrollbars, toolbar"); 
           // g.stopDefault(e);
            //return false;
        //}
    },
	
/* ------------------ Site Intel ------------------------------------*/

	siClickHandler: function (e) {
	    
		if(!g.id('siOverlayPageTag')){ return; } 
		
		var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        var triggerParent = trigger.parentNode;
        var thisLink, uniqueLink;

		// Get target href or target parent href.  This will be used to determine what page is opened
			if (trigger.nodeName.toLowerCase() === "a") {
				thisLink = trigger;
				uniqueLink = trigger;
			} else if (triggerParent.nodeName.toLowerCase() === "a") {
				thisLink = triggerParent;
				uniqueLink = triggerParent;
			} else {
				return;
			}
			SiTrackLink(thisLink);
	}
	
/* ------------------ TOGGLES ------------------------------------*/

    /*
	toggleClickHandler: function (e) {
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
		var triggerParent = trigger.parentNode;

        if ((trigger.className && (" " + trigger.className + " ").indexOf(" togglelink ") !== -1) || (triggerParent.className && (" " + triggerParent.className + " ").indexOf(" togglelink ") !== -1)) {			
            g.stopDefault(trigger);
			var startPos = trigger.className.indexOf("box");
            var restOfString = trigger.className.substr(startPos + 3);
            var boxNumber = parseInt(restOfString, 10);
            var toggleSection = g.id("box" + boxNumber);
            if (toggleSection.className && (" " + toggleSection.className + " ").indexOf(" showtoggle ") !== -1) {
                g.addClass(toggleSection, "hidetoggle");
                g.removeClass(toggleSection, "showtoggle");
                g.removeClass(trigger, "up");
            } else if (toggleSection.className && (" " + toggleSection.className + " ").indexOf(" hidetoggle ") !== -1) {
                g.removeClass(toggleSection, "hidetoggle");
                g.addClass(toggleSection, "showtoggle");
                g.addClass(trigger, "up");
            } else {
                return;
            }

        }
    }*/
};
// end event delegation


var keepOpenToggledSection = {
    toggledSection: function () {
        if (!g.id || !g.id("current-elh")) {
            return false;
        }

		var toggleSection = g.idTn("nav-secondary", "dd");
        for (var i = 0; i < toggleSection.length; i++) {
            if ((toggleSection[i].className && (" " + toggleSection[i].className + " ").indexOf(" togglebox hidetoggle ") !== -1) && (toggleSection[i].className && (" " + toggleSection[i].className + " ").indexOf(" hidetoggle ") !== -1)) {
                var toggleId = toggleSection[i].getAttribute("id");
                var currentSection = g.id(toggleId);
                var links = g.idTn(toggleId, "a");
                for (var k = 0; k < links.length; k++) {
                    var currentlyClosed = g.id(toggleId);
                    g.removeClass(currentSection, "hidetoggle");
                    g.addClass(currentSection, "showtoggle");
                }	
            }
        }    

        var toggleTitle = g.idTn("nav-secondary", "a");
        for (var j = 0; j < toggleTitle.length; j++) {
            if ((toggleTitle[j].className && (" " + toggleTitle[j].className + " ").indexOf(" togglelink ") !== -1) && (toggleTitle[j].className && (" " + toggleTitle[j].className + " ").indexOf(" up ") === -1)) {
                toggleTitle[j].className = toggleTitle[j].className + " up";
            }
        }
    }
};

var inputButtons = {		
    inputStyle: function () {
        if (!g.id || !g.id("acc-pol")) {
            return false;
        }
        var inputElements = g.idTn("acc-pol", "input");
        inputElements[0].onmouseover = function () {
            this.style.color = "#cc0000";
            this.style.textDecoration = "underline";
        };

        inputElements[0].onmouseout = function () {
            this.style.color = "#0e6fcd";
            this.style.textDecoration = "none";
        };
    }
};		

// DTSL - Dynamic text submission links written by Chris Heilmann (http://www.icant.co.uk)
// scans a document for submit buttons and replaces them with text links with the same ID and text value and a predefined class 

var dtsl = {
    buttonClass: 'round popup',
    init: function () {
        var i, newa, inputs;
        if (!document.getElementById || !document.createTextNode) {
            return;
        }
        inputs = document.getElementsByTagName('input');
        for (i = 0; i < inputs.length; i ++) {
            if (inputs[i].parentNode.className && (" " + inputs[i].parentNode.className + " ").indexOf(" button-container-form ") !== -1) {
                if (inputs[i].getAttribute('type') !== 'submit') {
                    continue;
                }
                newa = document.createElement('a');
                newa.setAttribute('href', '#');
                newa.setAttribute('id', inputs[i].getAttribute('id'));

                newa.appendChild(document.createTextNode(inputs[i].getAttribute('value')));
                newa.className = dtsl.buttonClass;
                newa.f = inputs[i].form;
                g.addEvent(newa, 'click', dtsl.sendForm, false);
                newa.onclick = function () {
                    return false;
                }; // Safari
                inputs[i].parentNode.insertBefore(newa, inputs[i]);
                inputs[i].parentNode.removeChild(inputs[i]);
                if (i < inputs.length) {
                    i--;
                }
            }
        }
    },
// you may have to alter sendForm when there is more than one form 
// in the document
    sendForm: function (e) {
        g.cancelClick(e);
        var t = g.getTarget(e);
        var f = t.f;
        var newel = document.createElement('input');
        newel.name = t.id;
        newel.value = t.innerHTML;
        f.appendChild(newel);
        f.submit();
    }
};

/*
-----------------  10. Site Intel script -----------------------------------*/	
	
	var writeTag =  {
		
		// Create script tag for SI to identify page
		writeScript: function() {
			if(g.id('si')) {
			
			var siScriptTag = document.createElement('script');
			siScriptTag.setAttribute("type", "text/javascript");
			siScriptTag.setAttribute("id", "siOverlayPageTag");
			
			var siTP = document.createElement('script');
			siTP.setAttribute("type", "text/javascript");
			siTP.setAttribute("id", "siTrackPageTag");
			
			
			var pageURL = window.location.href;
			if (pageURL.indexOf(".jsp") !== -1 )  {
				var endPos = pageURL.length - 4;
			} else {
				var endPos = pageURL.length - 5;
			}
			var startPos = pageURL.indexOf("/personal/finance/");
			var restOfString = pageURL.substring(startPos +18, endPos);
			if (!g.id('skiplink')) {
			return false; 
			}
			
			var skipLink = g.id('skiplink');
			var skipLinkParent = skipLink.parentNode;
			
			skipLinkParent.insertBefore(siScriptTag, skipLink);
			skipLinkParent.insertBefore(siTP, skipLink);
			
			var siDynamicScript = g.id("siOverlayPageTag");
			var siTrackPScript = g.id("siTrackPageTag");
			var pageNameContainer = document.getElementById("si");
			var pageName = pageNameContainer.className;			
			var code = 'SiSetPageID("' + pageName + '")';
			var ptCode = 'SiTrackPage("' + document.URL + '")';
			
			siScriptTagText = document.createTextNode(code);
			siTrackPageTagText = document.createTextNode(ptCode);
			// Require choice due to IE not allowing append to <script> tag
			if (document.all) {
				siTrackPScript.text =  ptCode;
				siDynamicScript.text =  code;
			} else {
				siTrackPScript.appendChild(siTrackPageTagText);
				siDynamicScript.appendChild(siScriptTagText);
			}
		}
		}
	};

	var linkIds = {
		giveLinksId: function() {
			if(g.id('si')) {  
				var links = document.getElementsByTagName("a");
				for (var i = 0; i < links.length; i++) {
					var thisLink = links[i].href; 
					var startPos = thisLink.indexOf("/personal/finance/");
					var restOfString = thisLink.substring(startPos +18);
					var siteArea = g.getParentWithIdAttribute(links[i]);
					if (links[i].firstChild !== null) {
						var linkText = links[i].firstChild.nodeValue;
						var siteIntelOverlay = "Linktext:" + linkText + "~Area:" + siteArea.id + "~URL:" + restOfString;			
						links[i].setAttribute("si:link", siteIntelOverlay);
					}
				}
			}
		}
	};	
/*
-----------------  10. Customer Account Opening -----------------------------------*/	

var cao = {

    // Create HTML forms to replace the Links currently on the CAO pages.
    createForms: function () {

        // Identify that this is a CAO page before carrying out any functionality
        if (!document.getElementById || !document.createElement || !document.getElementById("cao")) {
            return false;
        }

	    // Loop through DIV's on page to check for matches of the 3 product list
        var divSwap = document.getElementsByTagName("div");
        for (var i = 0; i < divSwap.length; i++) {		

        //BONUS CARD FORM STANDARD
            if (divSwap[i].getAttribute("id") === "cao-selection-bonus") {
                var bonusList = document.getElementById("cao-selection-bonus");
                var bonusFormContent =  '<form target="_blank" action="" name="" method="post" id="bonusCardCaoForm"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Please select your Tesco Bonus Credit Card design</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="carddesign" value="design1" checked="checked" /><span><img src="../images/cao/bonus-shimmer.gif" alt="Bonus Credit Card - Shimmer design" width="97" height="63" /></span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="carddesign" value="design2" /><span><img src="../images/cao/bonus-swirl.gif" alt="Bonus Credit Card - Swirl design" width="97" height="63" /></span></span></label></div></div><div class="row radiocheck"><h3 class="labeltxt">Please select your card type</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="cardtype" value="mastercard" checked="checked" /><span>Mastercard</span></span></label><label class="clearing"><span class="inputwrapper"><input type="radio" name="cardtype" value="visa" /><span>Visa</span></span> </label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                bonusList.innerHTML = bonusFormContent;
            }
			
		//BONUS CARD FORM FROM TEB
            if (divSwap[i].getAttribute("id") === "teb-cao-selection-bonus") {
                var tebBonusList = document.getElementById("teb-cao-selection-bonus");
                var tebBonusFormContent =  '<form action="" name="" method="post" id="tebBonusCardCaoForm"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Please select your Tesco Bonus Credit Card design</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="carddesign" value="design1" checked="checked" /><span><img src="../images/cao/bonus-shimmer.gif" alt="Bonus Credit Card - Shimmer design" width="97" height="63" /></span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="carddesign" value="design2" /><span><img src="../images/cao/bonus-swirl.gif" alt="Bonus Credit Card - Swirl design" width="97" height="63" /></span></span></label></div></div><div class="row radiocheck"><h3 class="labeltxt">Please select your card type</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="cardtype" value="mastercard" checked="checked" /><span>Mastercard</span></span></label><label class="clearing"><span class="inputwrapper"><input type="radio" name="cardtype" value="visa" /><span>Visa</span></span> </label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                tebBonusList.innerHTML = tebBonusFormContent;
            }	

        //CLUBCARD FORM STANDARD
            if (divSwap[i].getAttribute("id") === "cao-selection-club") {
                var clubList = document.getElementById("cao-selection-club");
                var clubFormContent = '<form action="" target="_blank" name="" method="post" id="clubCardbuttonSelection"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Please select your Tesco Clubcard Credit Card design</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="carddesign" value="design1" checked="checked" /><span><img src="../images/cao/clubcard-strawberry.gif" alt="Clubcard Credit Card - Strawberry design" width="97" height="63" /></span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="carddesign" value="design2" /><span><img src="../images/cao/clubcard-blue.gif" alt="Clubcard Credit Card - Blue radial design" width="97" height="63" /></span></span> </label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                clubList.innerHTML = clubFormContent;
            }
		
		//CLUBCARD FORM FROM TEB
            if (divSwap[i].getAttribute("id") === "teb-cao-selection-club") {
                var tebClubList = document.getElementById("teb-cao-selection-club");
                var tebClubFormContent = '<form action="" name="" method="post" id="tebClubCardbuttonSelection"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Please select your Tesco Clubcard Credit Card design</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="carddesign" value="design1" checked="checked" /><span><img src="../images/cao/clubcard-strawberry.gif" alt="Clubcard Credit Card - Strawberry design" width="97" height="63" /></span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="carddesign" value="design2" /><span><img src="../images/cao/clubcard-blue.gif" alt="Clubcard Credit Card - Blue radial design" width="97" height="63" /></span></span> </label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                tebClubList.innerHTML = tebClubFormContent;
            }	
			
        //SAVINGS FORM
            if (divSwap[i].getAttribute("id") === "cao-selection-savings") {
            // Swap intro text to indicate that each field must be selected
                var introSwap = document.getElementById("cao-intro");
                introSwap.innerHTML = "Please complete the details below. Required fields are indicated with a *.";
                var saveList = document.getElementById("cao-selection-savings");
                var saveFormContent = '<form action="" target="_blank" name="" method="post" id="savingsCaoForm"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">All Applicants *</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="personalcustomer" value="yes" checked="checked" /><span id="span1">I am an existing personal customer</span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="personalcustomer" value="no" /><span id="span2">I am not an existing personal customer</span></span> </label></div></div><div class="row radiocheck"><h3 class="labeltxt">Existing Customers Only *</h3><p><strong>Please note</strong>: If you are an existing RBS Digital Banking customer we can simplify your application by prefilling information.</p><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="carddesign" value="design1" checked="checked" /><span>I am currently enrolled for online banking</span></span></label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="carddesign" value="design2" /><span>I am not currently enrolled for online banking</span></span></label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                saveList.innerHTML = saveFormContent;
            }
			
        //SAVINGS INTEREST CHOICE FORM
            if (divSwap[i].getAttribute("id") === "cao-selection-savings-interest") {
            // Swap intro text to indicate that each field must be selected
                var introSwap = document.getElementById("cao-intro");
                introSwap.innerHTML = "Please complete the details below. Required fields are indicated with a *.";
                var saveList = document.getElementById("cao-selection-savings-interest");
                var saveFormContent = '<form action="" target="_blank" name="" method="post" id="savingsSelectionCaoForm"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Before applying, please indicate whether you wish to receive your interest annually or monthly? *</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="interestchoice" value="annualinterest" checked="checked" /><span id="span1">Annual interest</span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="interestchoice" value="monthlyinterest" /><span id="span2">Monthly interest</span></span> </label></div></div><div class="buttonarea clearing"><input type="submit" value="Apply now (new window)" id="next" class="button fright" /></div></form>';
                saveList.innerHTML = saveFormContent;
            }
			
			
		//SAVINGS INTEREST CHOICE FORM
            if (divSwap[i].getAttribute("id") === "teb-cao-selection-instant-save") {
            // Swap intro text to indicate that each field must be selected
                var introSwap = document.getElementById("cao-intro");
                introSwap.innerHTML = "Please complete the details below. Required fields are indicated with a *.";
                var tebInstantSaveList = document.getElementById("teb-cao-selection-instant-save");
                var tebInstantSaveFormContent = '<form action="" name="" method="post" id="tebInstantSaveSelectionCaoForm"><div class="formarea"><div class="row radiocheck"><h3 class="labeltxt">Before applying, please indicate whether you wish to receive your interest annually or monthly? *</h3><div class="inner clearing"><label class="clearing"><span class="inputwrapper"><input type="radio" name="interestchoice" value="annualinterest" checked="checked" /><span id="span1">Annual interest</span> </span> </label><label class="clearing"><span  class="inputwrapper"><input type="radio" name="interestchoice" value="monthlyinterest" /><span id="span2">Monthly interest</span></span> </label></div></div></div><p>Please press &#39;<strong>Next</strong>&#39; to continue your application.</p><div class="buttonarea clearing"><input type="submit" value="Next" id="next" class="button fright" /></div></form>';
                tebInstantSaveList.innerHTML = tebInstantSaveFormContent;
            }				
			
        }
    },

    // Set up event delegation for CAO screens    
    bodyTest: function () {
        if (!document.getElementById || !document.createElement || !document.getElementById("cao")) {
            return false;
        }	
        var docBody = document.getElementById("cao");
        g.addEvent(docBody, 'click', cao.bonusCardbuttonSelection, false);
		g.addEvent(docBody, 'click', cao.tebBonusCardbuttonSelection, false);
        g.addEvent(docBody, 'click', cao.clubCardbuttonSelection, false);
		g.addEvent(docBody, 'click', cao.tebClubCardbuttonSelection, false);
		g.addEvent(docBody, 'click', cao.savingsButtonSelection, false);
		g.addEvent(docBody, 'click', cao.savingsInterestChoiceSelection, false);
		g.addEvent(docBody, 'click', cao.tebInstantSavebuttonSelection, false);
    },	

    // SAVINGS FORM CHOICES
    savingsButtonSelection: function (e) {
        
        if (!document.getElementById("savingsCaoForm")) {
            return;
        }
				
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("savingsCaoForm");
            var existingCustomer = caoForm.personalcustomer;

            // Loop through the first choice of radio buttons
            for (var i = 0; i < existingCustomer.length; i++) {

            // If an existing customer then check secondary set of radio buttons
                if (existingCustomer[i].checked === true && existingCustomer[i].value === "yes") {
                    //var cardDesign = document.forms["savingsCaoForm"]["carddesign"];
                    var cardDesign = document.getElementById("savingsCaoForm").carddesign;

					// Card choice will determie the URL
                    for (var k = 0; k < cardDesign.length; k++) {
                        if (cardDesign[k].checked === true && cardDesign[k].value === "design1") {
                            caoForm.action = "savings_2.html";
                        } 					
                        if (cardDesign[k].checked === true && cardDesign[k].value === "design2") {
                            caoForm.action = "https://www.cao.rbos.com/cao/external/rbs/launchChannelHandler.do?CID=INT&BRD=RBS&PF=DEP&PI=11&CS=C";
                        }
                    }
                }

            // If not a customer then no need to check secondary set of buttons
                if (existingCustomer[i].checked === true && existingCustomer[i].value === "no") {
                    caoForm.action = "https://www.cao.rbos.com/cao/external/rbs/launchChannelHandler.do?CID=INT&BRD=RBS&PF=DEP&PI=11&CS=N";
                }
            }
        }
    },

    // BONUS CARD FORM CHOICES
    bonusCardbuttonSelection: function (e) {
		
        var thisCardDesign;
        var thisCardType;
		
        if (!document.getElementById("bonusCardCaoForm")) {
            return;
        }	

        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("bonusCardCaoForm");
            var cardDesign = document.getElementById("bonusCardCaoForm").carddesign;
            var cardType = document.getElementById("bonusCardCaoForm").cardtype;

            // Loop through the first choice of radio buttons
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true) {
                    thisCardDesign = cardDesign[i].value; 
                }
            }

            // Loop through the second choice of radio buttons
            for (var k = 0; k < cardType.length; k++) {
                if (cardType[k].checked === true) {
                    thisCardType = cardType[k].value; 
                }
            }

        // Assign both selected radio button values to a variable, which can be used to match the in the switch statement.
            var cardSelection = thisCardDesign + ", " + thisCardType;
            switch (cardSelection) {
            case "design1, mastercard":
                caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y4&CS=N%20");
                break;   
            case  "design1, visa":
                caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y5&CS=N%20");
                break;
            case  "design2, mastercard":
                caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y3&CS=N%20");
                break;
            default:
                caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y6&CS=N%20");
            }
        }
    },
	
	
	// TEB BONUS CARD FORM CHOICES
    tebBonusCardbuttonSelection: function (e) {	
		
        var thisCardDesign;
        var thisCardType;
		
        if (!document.getElementById("tebBonusCardCaoForm")) {
            return;
        }	

        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("tebBonusCardCaoForm");
            var cardDesign = document.getElementById("tebBonusCardCaoForm").carddesign;
            var cardType = document.getElementById("tebBonusCardCaoForm").cardtype;

            // Loop through the first choice of radio buttons
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true) {
                    thisCardDesign = cardDesign[i].value; 
                }
            }

            // Loop through the second choice of radio buttons
            for (var k = 0; k < cardType.length; k++) {
                if (cardType[k].checked === true) {
                    thisCardType = cardType[k].value; 
                }
            }

        // Assign both selected radio button values to a variable, which can be used to match the in the switch statement.
            var cardSelection = thisCardDesign + ", " + thisCardType;
            switch (cardSelection) {
            case "design1, mastercard":
                caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y4");
                break;   
            case  "design1, visa":
                caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y5");
                break;
            case  "design2, mastercard":
                caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y3");
                break;
            default:
                caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y6");
            }
        }
    },

    // CLUBCARD CARD FORM CHOICES
    clubCardbuttonSelection: function (e) {
        if (!document.getElementById("clubCardbuttonSelection")) {
            return;
        }
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("clubCardbuttonSelection");
            var cardDesign = document.getElementById("clubCardbuttonSelection").carddesign;
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true && cardDesign[i].value === "design1") {
					caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y1&CS=N%20");
                } 					
                if (cardDesign[i].checked === true && cardDesign[i].value === "design2") {
					caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=CC1&PI=Y2&CS=N%20");
                } 					
            }
        }
    },
	
	// TEB CLUBCARD CARD FORM CHOICES
    tebClubCardbuttonSelection: function (e) {
        if (!document.getElementById("tebClubCardbuttonSelection")) {
            return;
        }
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("tebClubCardbuttonSelection");
            var cardDesign = document.getElementById("tebClubCardbuttonSelection").carddesign;
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true && cardDesign[i].value === "design1") {
					caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y1");
                } 					
                if (cardDesign[i].checked === true && cardDesign[i].value === "design2") {
					caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/AccountOpeningLink.aspx?PF=CC1&PI=Y2");
                } 					
            }
        }
    },
	
    // SAVINGS INTEREST FORM CHOICES
    savingsInterestChoiceSelection: function (e) {
        if (!document.getElementById("savingsSelectionCaoForm")) {
            return;
        }
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("savingsSelectionCaoForm");
            var cardDesign = document.getElementById("savingsSelectionCaoForm").interestchoice;
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true && cardDesign[i].value === "annualinterest") {
					caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=DEP&PI=K5&CS=N%20");
                } 					
                if (cardDesign[i].checked === true && cardDesign[i].value === "monthlyinterest") {
					caoForm.setAttribute("action", "https://www.cao.tescofinance.com/cao/external/tpf/launchChannelHandler.do?CID=INT&BRD=TPF&PF=DEP&PI=K6&CS=N%20");
                }					
            }
        }
    },
	
	// SAVINGS INTEREST FORM CHOICES
    tebInstantSavebuttonSelection: function (e) {
        if (!document.getElementById("tebInstantSaveSelectionCaoForm")) {
            return;
        }
        var theEvent = e || window.event;	
        var trigger = theEvent.target || theEvent.srcElement;
        if (trigger.id === "next") {
            var caoForm = document.getElementById("tebInstantSaveSelectionCaoForm");
            var cardDesign = document.getElementById("tebInstantSaveSelectionCaoForm").interestchoice;
            for (var i = 0; i < cardDesign.length; i++) {
                if (cardDesign[i].checked === true && cardDesign[i].value === "annualinterest") {
					caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/ApplyOnlineCAO.aspx?Apply=AO3&PF=DEP&PI=K5");
                } 					
                if (cardDesign[i].checked === true && cardDesign[i].value === "monthlyinterest") {
					caoForm.setAttribute("action", "https://myaccountsmanager.tescofinance.com/ApplyOnlineCAO.aspx?Apply=AO3&PF=DEP&PI=K6");
                }					
            }
        }
    }

};



var socialBookmarking = {
		bookmark: function () {
		if (!g.id("bookmarking-sites")) return false;
		var bookmarkingSites = g.idTn("bookmarking-sites", "a");
		var bookmarkIntro = g.id("bookmark-into");
		if (!bookmarkIntro) return false;
		g.addClass(bookmarkIntro, "hide");

		for (var i = 0; i < bookmarkingSites.length; i++) {
			/* Get page header to be used in URL string */
			if (!g.id("info")) return false;
			var pageHeader = g.idTn("info", "h2");
			var titleText = encodeURIComponent(pageHeader[0].firstChild.nodeValue);

			/* Build URL based on what link is selected */
			bookmarkingSites[i].onclick = function () {	
				var socialBookmarkSite = this.href;
				var thisPageURL = encodeURIComponent(location.href);			
				switch (socialBookmarkSite) {
				case "http://www.newsvine.com/_tools/seed":
					var socialLink = socialBookmarkSite+ '?u=' + thisPageURL + '&h=' + titleText;
					break;   
				case "http://www.stumbleupon.com/":
					var socialLink = socialBookmarkSite+ 'submit?url=' + thisPageURL + '&title=' + titleText;
					break;   
				case "http://www.facebook.com/sharer.php":
					var socialLink = socialBookmarkSite+ '?u=' + thisPageURL + '&=' + titleText;
					break;   
				default:
					var socialLink = socialBookmarkSite+ '?url=' + thisPageURL + '&title=' + titleText;
					break;
				}
				var thisLink = this.href;
				window.open(socialLink); 
				g.stopDefault(thisLink);
				return false;
			}
		}
	}
};




/*
----------------- 11. Load events on page load -----------------------------*/


if (is_mac && is_ie) {
    //g.addEvent(window, 'load', inputButtons.inputStyle, false);
    //g.addEvent(window, 'load', eventDelegation.bodyTest, false);
} else {
	//g.addEvent(window, 'load', writeTag.writeScript, false);
	//g.addEvent(window, 'load', nav.navPopListeners, false);
    g.addEvent(window, 'load', resDepLayout.xBrowserResize, false);
    //g.addEvent(window, 'load', myAccountsPop.navPopListeners, false);
    g.addEvent(window, 'load', eventDelegation.bodyTest, false);
    g.addEvent(window, 'load', cao.bodyTest, false);
	g.addEvent(window, 'load', socialBookmarking.bookmark, false);
	//g.addEvent(window, 'load', myAccountsPop.hideNavOffTab, false);
}
