document.domain = 'traffiq.com';

var traction = function (args) {
	if (arguments.length < 1)
		return false;

	function fix_prot (url) {
		return document.location.protocol + url.substr(url.indexOf('://')+1);
	}

	for (var i = 0; i < arguments.length; i++) {
		var url = arguments[i];
		if (url.indexOf('://ads.traffiq.com/') >= 4) {
			// TRAFFIQ
			var tq = document.createElement("script");
			tq.src = fix_prot(url);
			tq.type = 'text/javascript';
			document.body.appendChild(tq);
		} else if (url.indexOf('://view.atdmt.com/') >= 4) {
			// Atlas
			var atdmt = new Image();
			atdmt.src = fix_prot(url);
		} else if (url.indexOf('://ads.mmi-agency.com/') >= 4) {
			// MMI Ad Server
			var mads = new Image();
			mads.src = url;
		} else if (url.indexOf('/') == 0) {
			// Google Analytics
			if (typeof pageTracker != 'undefined') {
				try {
					pageTracker._trackPageview(url);
				} catch (err) {}
			}
			// ClickTracks
			if (typeof CT_RecordView == 'function') {
				try {
					CT_RecordView(url, 'GET');
				} catch (err) {}
			}
		}
	}
}


var tq = {
	/* debuger */
	log: function(m) {
		p = document.createElement('span');
		p.innerHTML = m+''+"<br />";
		tq.jslog.appendChild(p);
	},
	log_init: function() {
		var jslog = tq.jslog = tq.ce('div');
		jslog.style.position = 'absolute';
		jslog.style.top = '0px';
		jslog.style.left = '0px';
		jslog.style.backgroundColor = '#ccc';
		jslog.style.whiteSpace = 'pre';
		jslog.style.fontFamily = 'Monaco,"Courier New"';
		jslog.style.zIndex = '1000';
		jslog.id = 'js_error_log';
		tq.ge('wrapper').appendChild(jslog);
	},
	init: function() {
		if (typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null)) {
			tq.startup();
		} else {
			this.ae(window, 'load', function() { tq.startup(); });
		}
	},
	startup: function() {
		// debugger
		tq.log_init();
		// Determine the User Agent
		tq.ua.populate();
		// Bring in the css for Firefox < 3.6
/*
// Let's get away from this
		if ( ((tq.ua.firefox() > 0) && (tq.ua.firefox() >= 3.6)) ||
		     ((tq.ua.safari() > 0) && (tq.ua.safari() >= 528)) ) {
		} else {
			var headID = document.getElementsByTagName("head")[0];         
			var cssNode = document.createElement('link');
			cssNode.type = 'text/css';
			cssNode.rel = 'stylesheet';
			cssNode.href = '/css/ie.css';
			cssNode.media = 'screen';
			headID.appendChild(cssNode);
		}
*/
		// Set the permenant `tid` TRAFFIQ cookie
		tq.perma_cookie();
		// Start the hero
		tq.hero.init();
		// Start the logo scroller
		tq.ls.start();
		// Enable the logo <shift>-click to TOC
		tq.enable_toc_logo();
		// Insert the Aperture video if applicable
		tq.aperture.init();
		// Enable the Contact Us / Schedule Demo form
		tq.contact.init();
		// Language Manipulation
		tq.lang.init();
		// Google Maps for Contact Us page
		tq.gmaps.init();
		// Start peel
		tq.peel.init();
		// Configure peel container
		// tq.peelBannerContainer.init();
		// Start sub navigation style control
		tq.subNavigation.init();
		// Media calculator popup code from index.html.php
		// tq.mediaCalculator.init();
	},
	prot: document.location.protocol,
	ge: function(e) {
		if (typeof e == "string") {
			return document.getElementById(e);
		} else {
			return e;
		}
	},
	ae: function (obj, e, func) {
		if(obj) {
			if (obj.attachEvent) {
				obj.attachEvent('on'+e, func);
			} else if (obj.addEventListener) {
				obj.addEventListener(e, func, false);
			} else {
				obj['on'+e] = func;
			}
		}
	},
	re: function (obj, e, func) {
		if (obj.detachEvent) {
			obj.detachEvent('on'+e, func);
		} else if (obj.removeEventListener) {
			obj.removeEventListener(e, func, false);
		}		
	},
	ce: function(e) {
		if (typeof e == "string") {
			return document.createElement(e);
		} else {
			return e;
		}
	},
	gc: function(searchClass, node, tag) {
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	},

	ua: {
		ie:function () { return this._ie; },
		firefox:function () { return this._firefox; },
		opera:function () { return this._opera; },
		safari:function () { return this._safari; },
		windows:function () { return this._windows; },
		osx:function () { return this._osx; },
		populate:function () {
			var agent = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso).(\d+\.\d+))|(?:Opera.(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(navigator.userAgent);
			var os = /(Mac OS X;)|(Windows;)/.exec(navigator.userAgent);
			if (agent) {
				tq.ua._ie = agent[1] ? parseFloat(agent[1]) : NaN;
				tq.ua._firefox = agent[2] ? parseFloat(agent[2]) : NaN;
				tq.ua._opera = agent[3] ? parseFloat(agent[3]) : NaN;
				tq.ua._safari = agent[4] ? parseFloat(agent[4]) : NaN;
			} else {
				tq.ua._ie = tq.ua._firefox = tq.ua._opera = tq.ua._safari = NaN;
			}
			if (os) {
				tq.ua._osx = !!os[1];
				tq.ua._windows = !!os[2];
			} else {
				tq.ua._osx = tq.ua._windows = false;
			}
		}
	},
	perma_cookie: function() {
		if (!tq.cookie.get('tid').length) {
			var uniq_tid = Math.floor(Math.random()*4294967296).toString(36).toUpperCase();
			tq.cookie.set('tid', uniq_tid, 365);
		}
		return tq.cookie.get('tid');
	},

	cookie: {
		set: function(c_name, value, expiredays) {
			var d = new Date();
			d.setDate(d.getDate() + expiredays);
			document.cookie=c_name+ "=" + escape(value) +
			((expiredays==null) ? "" : ";expires=" + d.toGMTString() + ";domain=.traffiq.com");
		},
		get: function(c_name) {
			if (document.cookie.length > 0) {
				c_start = document.cookie.indexOf(c_name + "=");
				if (c_start != -1) {
					c_start = c_start + c_name.length + 1;
					c_end = document.cookie.indexOf(";",c_start);
					if (c_end == -1) { c_end = document.cookie.length };
					return unescape(document.cookie.substring(c_start,c_end));
				}
			}
			return "";
		}
	},
    
	peel: {
		is_paused: true,
    is_stopped: false,

    init: function() {
    // bring in the flash object
    var flashvars = {};
    var params = {};
    params.allowscriptaccess = "always";
    params.allownetworking = "all";
    params.swliveconnect = "true";
    params.wmode = "transparent";
    var attributes = {};
    attributes.id = "peelbanner";
    swfobject.embedSWF("/images/traffiqPeelBanner5.swf", "peelbanner", "245", "280", "9.0.0", false, flashvars, params, attributes);
  	}
	},
    
	peelBannerContainer: {
  	init: function() {
    	pbc = tq.ge('peelbannercontainer');
            
      if(pbc) {
      	tq.ae(pbc, 'mouseover', tq.peelBannerContainer.overState);
        tq.ae(pbc, 'mouseout', tq.peelBannerContainer.outState);
    	}
		},
        
    overState: function() {
			setTimeout("tq.peelBannerContainer.addCssClass()", 100);
    },
        
    outState: function() {
    	setTimeout("tq.peelBannerContainer.removeCssClass()", 700);
    },

    addCssClass: function() {
			pbc = tq.ge('peelbannercontainer');
					
			pbc.className = 'peelbannercontainerOver';
		},

    removeCssClass: function() {
			pbc = tq.ge('peelbannercontainer');
	
      pbc.className = '';
    }
  },
  
	mediaCalculator: {
		init: function() {
			mc = tq.ge("mediacalculator");
			
			if(mc) {
				tq.ae(mc, 'click', tq.mediaCalculator.openMediaCalculator);
			}
		},
		
		openMediaCalculator: function() {
			window.open('/mediacalculator.html','mywindow','menubar=0,resizable=0,width=820,height=825');
			return false;
		}
	},

	tour: {
		is_paused: true,
		is_stopped: false,
		cur_chapter: '',
		cur_chapter_pos: 0,
		chapters: new Object(),
		pc: { }, // play controls
		init: function() {
			this.pc.bar = tq.ge('pc_bar');
			this.pc.ff = tq.ge('ff');
			this.pc.pause = tq.ge('pause');
			this.pc.play = tq.ge('play');
			this.pc.rw = tq.ge('rw');
			var expander_e = this.expander_e = tq.ge('expander');
			var resume_e = this.resume_e = tq.ge('resume');
			var thankyouplay_e = this.thankyouplay_e = tq.ge('thank_you_play');
			var loading_mask_e = this.loading_mask_e = tq.ge('loading_mask');
			var pause_mask_e = this.pause_mask_e = tq.ge('pause_mask');
			var signup_div = this.signup_div = tq.ge(this.expander_e.href.substr(this.expander_e.href.indexOf('#')+1));
			var hero_div = this.hero_div = tq.ge(this.resume_e.href.substr(this.expander_e.href.indexOf('#')+1));
			this.complete_bar = tq.ge('complete_bar');
			this.complete_bar_signup = tq.ge('complete_bar_signup');
			// assign player controls actions
			tq.tour.apc(this.pc.ff, tq.tour.ff);
			tq.tour.apc(this.pc.play, tq.tour.play);
			tq.tour.apc(this.pc.pause, tq.tour.pause);
			tq.tour.apc(this.pc.rw, tq.tour.rw);
			tq.tour.apc(this.expander_e, tq.tour.stop);
			tq.tour.apc(this.pause_mask_e, tq.tour.toggle);
			tq.tour.apc(this.complete_bar_signup, tq.tour.stop);
			tq.tour.apc(this.resume_e, tq.tour.resume);
			tq.tour.apc(this.thankyouplay_e, tq.tour.thank_you_resume);
			// get the chapters
			var demo_chapters_e = this.demo_chapters_e = tq.ge('demo_chapters');
			if (demo_chapters_e != null) {
				var j = 0;
				for (var i=0; i<demo_chapters_e.childNodes.length; i++) {
					if (demo_chapters_e.childNodes[i].className == 'pod') {
						this.chapters[demo_chapters_e.childNodes[i].id] = demo_chapters_e.childNodes[i];
						this.chapters[demo_chapters_e.childNodes[i].id].seq_number = j;
						this.chapters.last_seq_number = j;
						j++;
					}
				}	
			}
			// bring in the flash object
			var flashvars = {};
			var params = {};
			params.allowscriptaccess = "always";
			params.allownetworking = "all";
			params.swliveconnect = "true";
			params.wmode = "transparent";
			// params.play = "true";
			// params.loop = "true";
			var attributes = {};
			attributes.id = "flashdemo";
			swfobject.embedSWF("/images/TRAFFIQ_Virtual_Tour.swf", "flash_hero", "980", "410", "9.0.0", false, flashvars, params, attributes);
			// minimize player without waiting for SWF to load if this is a signup
			if (document.location.href.indexOf('#signup') >= 0) {
				tq.tour.stop();
			}
		},
		chapter: function (c) {
			if (typeof c == 'undefined') {
				tq.tour.demo_chapters_e.className = '';
				tq.tour.demo_chapters_e.style.left = '0px';
			} else {
				tq.tour.demo_chapters_e.className = 'sequence '+c;
				// Will keep the current chapter in the middle,
				// except for when we're on the first or last one.
				if (tq.tour.chapters[c].seq_number == 0) {
					tq.tour.cur_chapter_pos = tq.tour.chapters[c].seq_number*305;
					tq.tour.demo_chapters_e.style.left = '-'+tq.tour.cur_chapter_pos+'px';
				} else if (tq.tour.chapters[c].seq_number == tq.tour.chapters.last_seq_number) {
					tq.tour.cur_chapter_pos = (tq.tour.chapters[c]-2).seq_number*305;
					tq.tour.demo_chapters_e.style.left = '-'+tq.tour.cur_chapter_pos+'px';
				} else {
					tq.tour.cur_chapter_pos = (tq.tour.chapters[c].seq_number-1)*305;
					tq.tour.demo_chapters_e.style.left = '-'+tq.tour.cur_chapter_pos+'px';
				}
				tq.tour.cur_chapter = c;
			}
		},
		apc: function(obj, f) {
			// attach play control
			if (obj != null) {
				if (typeof obj.href != 'undefined') {
					tq.ae(obj, 'click', function (e) {
							f(e);
						}
					);
				}
			}
		},
		// this gets called by AS3 when the SWF is done loading
		autoStart: function() {
			tq.tour.flash_obj = tq.ge('flashdemo');
			tq.shrink(null,tq.tour.loading_mask_e);
			if (document.location.href.indexOf('#signup') >= 0) {
				// start with player minimized
				//tq.tour.stop(); // MOVED this to `tq.tour.init()` so that user doesn't have to wait for SWF to load.
			} else {
				setTimeout(function() { tq.tour.resume(); }, 100);
			}
		},
		// this gets called by AS3 when the tour has completed
		complete: function(e) {
			tq.expand(e,tq.tour.call_to_actions);
			tq.expand(e,tq.tour.pc.bar);
			// This gets called in the AS3 at the last frame:
			//tq.tour.pause();
			tq.expand(e,tq.tour.complete_bar);
		},
		stop: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			setTimeout(function() { tq.expand(null,tq.tour.signup_div,'auto') }, 200);
			tq.shrink(e,tq.tour.hero_div,205);
			tq.shrink(e,tq.tour.pc.bar);
			tq.shrink(e,tq.tour.complete_bar);
//			tq.expand(e,tq.tour.pause_mask_e);
			tq.tour.pause_mask_e.style.opacity = '0.8';
			tq.tour.pause_mask_e.style.filter = 'alpha(opacity=80)';
			tq.expand(e,'resume');
			tq.tour.pause();
			tq.tour.is_stopped = true;
			// remove chapter viewer
			tq.tour.demo_chapters_e.className = '';
		},
		resume: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.tour.resume_e.innerHTML = 'Resume Virtual Tour';
			tq.tour.thankyouplay_e.innerHTML = 'Resume Virtual Tour';
			tq.expand(e,tq.tour.hero_div,'auto');
			tq.shrink(e,tq.tour.signup_div,0);
			tq.shrink(e,tq.tour.resume_e);
			tq.contact.thank_you.style.display = 'none';
			tq.expand(e,tq.tour.pc.bar);
//			tq.shrink(e,tq.tour.pause_mask_e);
			tq.tour.pause_mask_e.style.filter = 'alpha(opacity=0)';
			tq.tour.pause_mask_e.style.opacity = '0';
			tq.shrink(e,'resume');
			setTimeout(tq.tour.play, 250);
			tq.tour.is_stopped = false;
//			tq.tour.demo_chapters_e.className = 'sequence';
		},
		play: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			try { tq.tour.flash_obj.vtplay(); } catch (e) {}
			tq.tour.is_paused = false;
			tq.shrink(e,tq.tour.complete_bar);
			tq.shrink(e,tq.tour.pc.play);
			tq.expand(e,tq.tour.pc.pause);
		},
		pause: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			try { tq.tour.flash_obj.vtpause(); } catch (e) {}
			tq.tour.is_paused = true;
			// why would we need to shrink the complete bar on pause?
			//tq.shrink(e,tq.tour.complete_bar);
			tq.shrink(e,tq.tour.pc.pause);
			tq.expand(e,tq.tour.pc.play);
		},
		rw: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.shrink(e,tq.tour.complete_bar);
			tq.shrink(e,tq.tour.pc.play);
			tq.expand(e,tq.tour.pc.pause);
			try { tq.tour.flash_obj.vtrw(); } catch (e) {}
		},
		ff: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.shrink(e,tq.tour.complete_bar);
			tq.shrink(e,tq.tour.pc.play);
			tq.expand(e,tq.tour.pc.pause);
			try { tq.tour.flash_obj.vtff(); } catch (e) {}
		},
		toggle: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			if (tq.tour.is_paused) {
				if (tq.tour.is_stopped) {
					tq.tour.resume();
				} else {
					tq.tour.play();
				}
			} else {
				tq.tour.pause();
			}
		},
		thank_you_resume: function(e) {
			tq.tour.resume(e);
			tq.contact.thank_you.style.display = 'none';
		}
	},

	hero: {
		// hero objects
		slides: new Array(),
		controls: new Array(),
		rw: new Object(),
		ff: new Object(),
		// hero variables
		hold_time: 5*1000, // seconds to hold a frame in place (ms)
		tween_duration: 200, // duration of the tween effects (ms)
		current_slide: 0, // the current slide number that we are on
		iteration_count: 0,
		user_interrupt: false,
		init: function() {
			// define all of the elements
			var hero_div = this.hero_div = tq.ge('hero');
			if (hero_div == null) {
				// we must not have a hero
				return false;
			}
			if (hero_div.className.indexOf('demo') >= 0) {
				tq.tour.init();
			}
			this.rw = tq.ge('hero_rw');
			if (this.rw == null) {
				// we must not have hero paginator controls
				return false;
			}
			tq.ae(this.rw, 'click', tq.hero.rewind);
			this.ff = tq.ge('hero_ff');
			tq.ae(this.ff, 'click', tq.hero.fastforward);
			var slides_div = this.slides_div = tq.ge('hero_slides');
			var controls_div = this.controls_div = tq.ge('hero_controls');
			slides_div.chillins = slides_div.getElementsByTagName('LI');
			for (var i=0; i<slides_div.chillins.length; i++) {
				this.slides[i] = slides_div.chillins[i];
					this.slides[i].headings_e = this.slides[i].getElementsByTagName('A')[0];
					for (var k=0; k<this.slides[i].headings_e.childNodes.length; k++) {
						if (typeof this.slides[i].headings_e.childNodes[k].className == 'undefined') {
							continue;
						}
						if (this.slides[i].headings_e.childNodes[k].className.indexOf('hgroup') != -1) {
							this.slides[i].hero_text_e = this.slides[i].headings_e.childNodes[k];
						}
						if (this.slides[i].headings_e.childNodes[k].className.indexOf('hero_img') != -1) {
								this.slides[i].hero_img_e = this.slides[i].headings_e.childNodes[k];
							// lazy-load the background images
							if (i != 0) {
 								this.slides[i].hero_img_e.style.backgroundImage = 'url("/images/hero_200/'+this.slides[i].id+'.png")';
							}
						}
					}
			}
			j = 0;
			for (var i=0; i<controls_div.childNodes.length; i++) {
				if (controls_div.childNodes[i].tagName == 'LI') {
					this.controls[j] = controls_div.childNodes[i].childNodes[0];
					this.controls[j].slideno = j;
					tq.ae(this.controls[j], 'click', tq.hero.goto_slide);
					j++;
				}
			}
			// calculate the tween_duration_inc & tween_pos_inc
			var frames = (this.tween_duration/1000) * 40; // 40 frames per second
			this.tween_pos_inc = Math.round(100 / frames);
			this.tween_duration_inc = Math.round(this.tween_duration / frames);
			// auto start
			setTimeout(tq.hero.auto_start, tq.hero.hold_time);
		},
		auto_start: function() {
			if (tq.hero.user_interrupt) {
				return false;
			}
			tq.hero.fastforward('auto');
			setTimeout(tq.hero.auto_start, tq.hero.hold_time);
		},
		rewind: function(e) {
			try { e.cancelBubble = true; } catch (err) {}
			try { e.returnValue = false; } catch (err) {}
			try { e.preventDefault(); } catch (err) {}
			tq.hero.goto_slide(tq.hero.current_slide-1, 'backward');
		},
		fastforward: function(e) {
			try { e.cancelBubble = true; } catch (err) {}
			try { e.returnValue = false; } catch (err) {}
			try { e.preventDefault(); } catch (err) {}
			tq.hero.goto_slide(tq.hero.current_slide+1, 'forward', e);
		},
		goto_slide: function(e, dir, auto) {
			if (auto != 'auto') {
				tq.hero.user_interrupt = true;
			}
			if (typeof e == 'number') {
				var slideno = e;
			} else {
				try { e.cancelBubble = true; } catch (err) {}
				try { e.returnValue = false; } catch (err) {}
				try { e.preventDefault(); } catch (err) {}
				var obj = window.event ? e.srcElement : this;
				if (typeof obj != 'object') { obj = e; }
				var slideno = obj.slideno;
			}
			if (slideno >= tq.hero.slides.length) {
				slideno = slideno - tq.hero.slides.length;
			} else if ( slideno < 0) {
				slideno = slideno + tq.hero.slides.length;
			}
			// don't tween if we're already on the slide
			if (slideno == tq.hero.current_slide) {
				return false;
			}
			tq.hero._goto_slide(slideno);
		},
		_goto_slide: function(slideno) {
			var cur_slide = tq.hero.current_slide;

			// turn off current slide
			tq.hero.slides[cur_slide].headings_e.className = 'off';
			tq.hero.controls[cur_slide].parentNode.className = '';

			// make slideno the new current_slide
			tq.hero.current_slide = slideno;

			// turn on the goto slide
			setTimeout(function() {
				tq.hero.slides[slideno].headings_e.className = 'on';
			}, 100);
			tq.hero.controls[slideno].parentNode.className = 'active';
		}
	},

	aperture: {
		width: 715,
		height: 670,
		init: function() {
			this.container = tq.ge('aperture_hero');
			if (this.container == null) {
				return false;
			}
			this.box = this.container.parentNode;
			if (tq.aperture.container != null) {
				tq.aperture.insert();
			}
			this.play_btn = tq.ge('aperture_play_btn');
			tq.ae(this.play_btn, 'click', tq.aperture.begin);
			tq.ae(this.box, 'click', tq.aperture.end);
		},
		insert: function() {
			// bring in the flash object
			var flashvars = {};
			var params = {};
			params.allowscriptaccess = "always";
			params.allownetworking = "all";
			params.swliveconnect = "true";
			params.wmode = "transparent";
			var attributes = {};
			attributes.id = "aperture_flash";
			swfobject.embedSWF("/images/Aperture_TRAFFIQ.swf", "aperture_hero", tq.aperture.width, tq.aperture.height, "10.0.0", false, flashvars, params, attributes);
		},
		begin: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.aperture.box.style.visibility = 'visible';
			setTimeout(function() {
				tq.aperture.box.style.opacity = 1;
				tq.aperture.box.style.filter = 'alpha(opacity=1)';
			}, 10);
		},
		end: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
				tq.aperture.box.style.opacity = 0;
				tq.aperture.box.style.filter = 'alpha(opacity=0)';
			setTimeout(function() {
				tq.aperture.box.style.visibility = 'hidden';
			}, 400);
		}
	},

	ls: {	// Logo Scroller
		hold_speed: 3000,
		start: function() {
			this.container = tq.ge('logo_scroller');
			if (this.container == null) {
				return false;
			}
			this.logos = this.container.getElementsByTagName('SPAN');
			this.cur = 0;
			setTimeout('tq.ls.iterate()', tq.ls.hold_speed);
		},
		iterate: function(next_one) {
			if (typeof next_one == 'undefined') {
				next_one = tq.ls.cur + 1;
			}
			if (next_one>=tq.ls.logos.length) {
				next_one = 0;
			}
			tq.ls.logos[tq.ls.cur].style.opacity = 0;
			tq.ls.logos[tq.ls.cur].style.filter = 'alpha(opacity=0)';
			setTimeout(function() {	tq.ls.logos[next_one].style.opacity = 1; },150);
			tq.ls.logos[next_one].style.filter = 'alpha(opacity=100)';
			tq.ls.cur = next_one;
			setTimeout('tq.ls.iterate()', tq.ls.hold_speed);
		}
	},

	expand: function(e, obj, val) {
		obj = tq.ge(obj);
		if (obj == null) {
			return false;
		}
		if (typeof obj.orig_height == 'undefined') {
			obj.orig_height = obj.offsetHeight;
		}
		if ( ((typeof val == 'number')) ||
		     ((typeof val == 'string') && (val == 'auto')) ) {
			if (typeof val == 'number') {
				val = val+'px';
			} else if (val == 'auto') {
				val = obj.orig_height+'px';
			}
			obj.style.display = 'block';
			obj.style.visibility = 'visible';
			obj.style.height = val;
		} else {
			obj.style.display = 'block';
		}
		return false;
	},
	shrink: function(e, obj, val) {
		obj = tq.ge(obj);
		if (obj == null) {
			return false;
		}
		if (typeof obj.orig_height == 'undefined') {
			obj.orig_height = obj.offsetHeight;
		}
		if ( ((typeof val == 'number')) ||
		     ((typeof val == 'string') && (val == 'auto')) ){
			obj.style.overflow = 'hidden';
			obj.style.height = val+'px';
		} else {
			obj.style.display = 'none';
		}
		return false;
	},

	enable_toc_logo: function() {
		var traffiq_logo = tq.ge('logo_img');
		if (traffiq_logo == null) {
			return false;
		}
		traffiq_logo.href = '/deleteme';
		traffiq_logo.removeAttribute('href');
		traffiq_logo.style.cursor = 'pointer';
		tq.ae(traffiq_logo, 'click', function (e) { evtobj=window.event?event:e; if (evtobj.shiftKey || evtobj.altKey) { document.location = 'http://toc.traffiq.com/'; return false } document.location = '/'; return false; });
	},

	subNavigation: {
		hold_speed: 3000,
		init: function() {
			this.container = tq.ge('subnav');
			if (this.container == null) {
				// alert('cant find container \'subnav\'');
				return false;
			}
			if (this.container.className != 'adv') {
				// alert('not className \'adv\'');
				return false;
			}
			this.logos = this.container.getElementsByTagName('LI');
			this.cur = 0;
			// setTimeout('tq.ls.iterate()', tq.ls.hold_speed);
			for (i = 0; this.logos.count - 1; i++) {
				//ae: function (obj, e, func)
				logo = this.logos[i];
				// alert(i);
				tq.ae(logo, 'mouseover', tq.subNavigation.overState);
				// tq.ae(pbc, 'mouseover', tq.peelBannerContainer.overState);
			}
		},
		
		overState: function() {
            // alert('tq.subNavigation.overState');
        },
        
        outState: function() {
            // alert('tq.subNavigation.outState');
        },
        
        removeCssClass: function() {
            // alert('tq.subNavigation.removeCssClass');
        },
		
		iterate: function(next_one) {
			if (typeof next_one == 'undefined') {
				next_one = tq.ls.cur + 1;
			}
			if (next_one>=tq.ls.logos.length) {
				next_one = 0;
			}
			tq.ls.logos[tq.ls.cur].style.opacity = 0;
			tq.ls.logos[tq.ls.cur].style.filter = 'alpha(opacity=0)';
			setTimeout(function() {	tq.ls.logos[next_one].style.opacity = 1; },150);
			tq.ls.logos[next_one].style.filter = 'alpha(opacity=100)';
			tq.ls.cur = next_one;
			setTimeout('tq.ls.iterate()', tq.ls.hold_speed);
		}
	},

	// Language
	lang: {
		init: function() {
			// grab the language elements
			this._en = tq.ge('english');
			this._es = tq.ge('espanol');
			if ((this._en == null) || (this._es == null)) {
				tq.lang.en = function() { }
				tq.lang.es = function() { }
				return false;
			}
			this._en.button = tq.ge('lang_to_en');
			this._es.button = tq.ge('lang_to_es');
			if ((this._en.button == null) || (this._es.button == null)) {
				tq.lang.en = function() { }
				tq.lang.es = function() { }
				return false;
			}
			tq.ae(this._en.button, 'click', tq.lang.en);
			tq.ae(this._es.button, 'click', tq.lang.es);
		},
		en: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.lang._en.style.display = 'block';
			tq.lang._es.style.display = 'none';
		},
		es: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			tq.lang._en.style.display = 'none';
			tq.lang._es.style.display = 'block';
		}
	},

	// Contact Us / Schedule Demo Method
	contact: {
		init: function() {
			this.form_e = tq.ge('form_contact_us');
			this.contact_table = tq.ge('contact_us');
			this.form_wrapper = tq.ge('form_wrapper');

			// bail if we do not have a form
			if (this.form_e == null) {
				return false;
			}

			// Firefox hack to make the .help <td> line-up
			if (tq.ua.firefox() > 2) {
				this.contact_table.className = this.contact_table.className + ' firefox_fix';
			}

			this.demo_e = Object();
			this.demo_table = tq.ge('demo_schedule');
			if (this.demo_table !== null) {
				tq.contact.load_demo_schedule(this.demo_table);
			}

			this.spinner_e = tq.ge('spinner');
			this.demo_signup = tq.ge('demo_signup');
			this.demo_signup_help_e = tq.ge('demo_signup_help');
			this.thank_you = tq.ge('thank_you');

			// grab the contact objects
			this.full_name_e = tq.ge('full_name');
			this.email_e = tq.ge('email');
			this.company_e = tq.ge('company');
			this.website_e = tq.ge('website');
			this.job_title_e = tq.ge('job_title');
			this.phone_e = tq.ge('phone');
			this.optin_e = tq.ge('optin_checkbox');
			this.comment_e = tq.ge('comment');

			this.interest_e = Object();
			for (var i=0; i < document.forms[0].elements.length; i++) {
				var e = document.forms[0].elements[i];
				// grab the interest form objects
				if (e.name.indexOf('interest') >= 0) {
					this.interest_e[i] = e;
				}
				// grab the submit button
				if (e.type == 'submit') {
					this.submit_e = e;
				}
			}

			// redirect the submit event
			tq.ae(this.form_e, 'submit', tq.contact.submit);

			// setup the validation events
			this.full_name_e.tr_obj = this.full_name_e.parentNode.parentNode;
			this.full_name_e.tr_obj.orig_className = this.full_name_e.tr_obj.className;
			this.full_name_e.td_help_obj = this.full_name_e.parentNode.parentNode.getElementsByTagName('TD')[1];
			tq.ae(this.full_name_e, 'change', tq.contact.validate);

			this.email_e.tr_obj = this.email_e.parentNode.parentNode;
			this.email_e.tr_obj.orig_className = this.email_e.tr_obj.className;
			this.email_e.td_help_obj = this.email_e.parentNode.parentNode.getElementsByTagName('TD')[1];
			this.email_e.website_e = this.website_e;
			tq.ae(this.email_e, 'change', tq.contact.validate);

			this.phone_e.tr_obj = this.phone_e.parentNode.parentNode;
			this.phone_e.tr_obj.orig_className = this.phone_e.tr_obj.className;
			this.phone_e.td_help_obj = this.phone_e.parentNode.parentNode.getElementsByTagName('TD')[1];
			tq.ae(this.phone_e, 'change', tq.contact.validate);

			this.website_e.tr_obj = this.website_e.parentNode.parentNode;
			this.website_e.tr_obj.orig_className = this.website_e.tr_obj.className;
			this.website_e.td_help_obj = this.website_e.parentNode.parentNode.getElementsByTagName('TD')[1];
			tq.ae(this.website_e, 'change', tq.contact.validate);

			// demo schedule
			if (this.demo_table != null) {
				this.demo_help_e = Object();
				this.demo_help_e.td_help_obj = tq.ge('demo_schedule_help');
				this.demo_help_e.tr_obj = this.demo_help_e.td_help_obj.parentNode;
				this.demo_help_e.tr_obj.orig_className = this.demo_help_e.tr_obj.className;
			}

		},
		load_demo_schedule: function(demo_table) {
			var xhr = new tq.xHttpRequest();
			xhr.demo_table = demo_table;
			xhr.send('GET', '/demos.json', '', 10000, 'rnd', false, xhr, tq.contact._load_demo_schedule);
		},
		_load_demo_schedule: function(req, status, xhr) {
			if (status == xhr.OK) {
				tq.ge('demo_schedule_loading').style.display = 'none';
				var r = tq.jsonParse(req.responseText);
				var demo_table = xhr.demo_table;
				var tbody = tq.ce('tbody');
				demo_table.appendChild(tbody);
				for (var i in r) {
					var d = r[i];
					var input_checkbox = tq.ce('input');
						input_checkbox.type = 'checkbox';
						input_checkbox.name = 'demo';
						input_checkbox.id = d.datestamp;
						input_checkbox.value = d.demo_id;
						if (tq.ua.ie) {
							tq.ae(input_checkbox, 'focus', tq.contact.sole_checkbox);
							tq.ae(input_checkbox, 'click', tq.contact.sole_checkbox);
						} else {
							tq.ae(input_checkbox, 'change', tq.contact.sole_checkbox);
						}
						tq.contact.demo_e[i] = input_checkbox;
					var label_date = tq.ce('label');
						label_date.htmlFor = d.datestamp;
						label_date.innerHTML = d.date;
					var label_time = tq.ce('label');
						label_time.htmlFor = d.datestamp;
						label_time.innerHTML = d.time;
					var label_theme = tq.ce('label');
						label_theme.htmlFor = d.datestamp;
						label_theme.innerHTML = d.theme;
					var label_host = tq.ce('label');
						label_host.htmlFor = d.datestamp;
						label_host.innerHTML = d.host;
					var td_input = tq.ce('td');
						td_input.appendChild(input_checkbox);
					var td_date = tq.ce('td');
						td_date.appendChild(label_date);
					var td_time = tq.ce('td');
						td_time.appendChild(label_time);
					var td_theme = tq.ce('td');
						td_theme.appendChild(label_theme);
					var td_host = tq.ce('td');
						td_host.appendChild(label_host);
					var tr = tq.ce('tr');
						tr.appendChild(td_input);
						tr.appendChild(td_date);
						tr.appendChild(td_time);
						tr.appendChild(td_theme);
						tr.appendChild(td_host);
					tbody.appendChild(tr);
				}
			} else {
				//error
			}
		},
		validate: function(e) {
			var obj = window.event ? e.srcElement : this;
			if (typeof obj != 'object') { obj = e; }
			obj.xhr = new tq.xHttpRequest();
			obj.xhr.send('POST', '/validate.json', obj.name+'='+tq.urlencode(obj.value), 10000, 'rnd', false, obj, tq.contact.validate_callback);
		},
		validate_callback: function(req, status, obj) {
			if (status == obj.xhr.OK) {
				var r = tq.jsonParse(req.responseText);
				tq.contact.feedback(obj, r);
			} else {
				// error
			}
		},
		feedback: function (obj, r) {
			if ((typeof r.pretty != 'undefined') && (r.pretty.length > 0)) { obj.value = r.pretty; }
			if (typeof r.msg != 'undefined') {
				obj.tr_obj.className = obj.tr_obj.orig_className + ' display_help';
				obj.td_help_obj.innerHTML = '<div class="msg '+r.classname+'">'+r.msg+'</div>';
			} else if (obj.tr_obj.className.indexOf('display_help') >= 0) {
				if (obj.value.length == 0) {
					// remove the msg if there were any msgs before and now there's no value
					obj.tr_obj.className = obj.tr_obj.orig_className;
					obj.td_help_obj.innerHTML = '';
				} else {
					// show OK if there were any messages before
					obj.tr_obj.className = obj.tr_obj.orig_className + ' display_help';
					obj.td_help_obj.innerHTML = '<div class="msg '+r.classname+'">'+'ok'+'</div>';
				}
			}
			// auto set the `Website` field
			if ((typeof obj.website_e == 'object') && (typeof r.website != 'undefined') && (r.website.length)) {
				if ((obj.website_e.value == 0) || (obj.website_e.value == obj.website_e.auto_set) ) {
					obj.website_e.value = r.website;
					obj.website_e.auto_set = r.website;
				}
			}
		},
		sole_checkbox: function(e) {
			// This only works for the demo schedule elements.
			// In order to extend this to other checkbox groups,
			// we need to be able to pass the group of checkboxes
			// as a parameter somehow.
			var obj = window.event ? e.srcElement : this;
			if (typeof obj != 'object') { obj = e; }
			if (obj.checked) {
				// uncheck all other checkboxes in the tq.contact.demo_e object
				for (var i in tq.contact.demo_e) {
					if (tq.contact.demo_e[i].value != obj.value) {
						tq.contact.demo_e[i].checked = false;
					}
				}
			}

		},
		submit: function(e) {
			try { e.cancelBubble = true; } catch (e) {}
			try { e.returnValue = false; } catch (e) {}
			try { e.preventDefault(); } catch (e) {}
			
			tq.contact.loading(true);

			var qs = '';
			// hookup the `user` info
			qs += '&' + tq.contact.full_name_e.name + '=' + tq.urlencode(tq.contact.full_name_e.value);
			qs += '&' + tq.contact.email_e.name + '=' + tq.urlencode(tq.contact.email_e.value);
			qs += '&' + tq.contact.company_e.name + '=' + tq.urlencode(tq.contact.company_e.value);
			qs += '&' + tq.contact.website_e.name + '=' + tq.urlencode(tq.contact.website_e.value);
			qs += '&' + tq.contact.job_title_e.name + '=' + tq.urlencode(tq.contact.job_title_e.value);
			qs += '&' + tq.contact.phone_e.name + '=' + tq.urlencode(tq.contact.phone_e.value);
			qs += '&' + tq.contact.optin_e.name + '=' + ((tq.contact.optin_e.checked) ? tq.contact.optin_e.checked : '');
			if (tq.contact.comment_e != null) {
				qs += '&' + tq.contact.comment_e.name + '=' + tq.urlencode(tq.contact.comment_e.value);
			}

			// hookup the `interested in` info
			for (var i in tq.contact.interest_e) {
				if (tq.contact.interest_e[i].checked == true) {
					qs += '&' + tq.contact.interest_e[i].name + '=' + tq.urlencode(tq.contact.interest_e[i].value);
				}
			}

			// hookup the `demo` info
			if (tq.contact.demo_signup != null) {
				// let the PHP callback know that this is infact a demo signup
				qs += '&is_demo=1';
				for (var i in tq.contact.demo_e) {
					if (tq.contact.demo_e[i].checked == true) {
						qs += '&' + tq.contact.demo_e[i].name + '=' + tq.urlencode(tq.contact.demo_e[i].value);
					}
				}
			}
			var xhr = new tq.xHttpRequest();
			xhr.send('POST', '/inquire.json', qs, 10000, 'rnd', false, xhr, tq.contact.submit_callback);

			return false;
		},
		submit_callback: function(req, status, xhr) {
			if (status == xhr.OK) {
				var s = tq.jsonParse(req.responseText);
				for (var i in s) {
					// was this successful?
					if (i == 'success') {
						if (tq.contact.demo_signup != null) {
							tq.shrink(null,tq.contact.demo_signup,0);
							tq.contact.form_e.reset();
						} else {
							if (tq.contact.contact_table != null) { tq.contact.contact_table.style.display = 'none'; }
							if (tq.contact.form_wrapper != null) { tq.contact.form_wrapper.style.display = 'none'; }
							if (tq.contact.demo_table != null) { tq.contact.demo_table.style.display = 'none'; }
						}
						if (tq.contact.thank_you != null) { tq.contact.thank_you.style.display = 'block'; }
						try { pageTracker._trackPageview('/successful_inquiry'); } catch (e) {}
					} else {
						tq.contact.feedback(tq.contact[s[i].field_name+'_e'], s[i]);
					}
				}
			} else {
				// error
			}
			tq.contact.loading(false);
		},
		loading: function(status) {
			if (status == true) {
				tq.contact.submit_e.disabled = true;
				tq.contact.spinner_e.style.visibility = 'visible';
			} else {
				tq.contact.submit_e.disabled = false;
				tq.contact.spinner_e.style.visibility = 'hidden';
			}

		}
	},
/* DOES THIS WORK WITH IMAGES???
	load: function(tag, src, callback, append) {
		if (tag == 'script') {
			var obj = tq.ce(tag);
			obj.type = 'text/javascript';
//			document.getElementsByTagName('head')[0].appendChild(obj);
		} else {
			var obj = tq.ce('img');
			if (typeof append == 'string') {
				append = tq.ge(append);
			}
			if ((typeof append == 'object') && (typeof append.tagName != 'undefined')) {
				append.appendChild(obj);
			}
		}
		if (typeof callback != 'undefined') {
			obj.onload = callback();
			obj.onreadystatechange = function() {
				if (this.readyState == 'complete') {
					callback();
				}
			}
		}
		return obj;
	},
*/
	gmaps: {
		init: function() {
			this.map_e = tq.ge('gmap');
			if (this.map_e == null) {
				return false;
			}
			if (typeof google == 'undefined') {
				return false;
			}
			var latlng = new google.maps.LatLng(40.751719, -73.990187);
			var myOptions = {
				zoom: 16,
				center: latlng,
    				disableDefaultUI: true,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			};
			var map = new google.maps.Map(this.map_e, myOptions);
			var contentString = '<div id="">'+
			'<div id="">'+
			'<div id="">'+
			'<p>'+
			'<strong><a href="http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=462+Seventh+Avenue,+21st+Floor,+New+York,+NY+10018&sll=40.714353,-74.005973&sspn=0.785888,1.001129&ie=UTF8&hq=&hnear=462+7th+Ave,+New+York,+10018&z=16&iwloc=A">TRAFFIQ</a></strong>' + '<br />' +
			'462 Seventh Avenue' + '<br />' +
			'21st Floor' + '<br />' +
			'New York, NY 10018' + '<br />' +
			'</p>'+
			'</div>'+
			'</div>'+
			'</div>';
			var infowindow = new google.maps.InfoWindow({
			content: contentString
			});
			var marker = new google.maps.Marker({
				position: latlng,
				map: map,
				title:"TRAFFIQ"
			});
			google.maps.event.addListener(marker, 'click', function() {
				infowindow.open(map,marker);
			});

		}
	},

	// xHttpRequest ----------------------------------------------------------------
	// http://cross-browser.com/x/lib/view.php?s=xHttpRequest
	// with some modifications to remove XML handling
	// -----------------------------------------------------------------------------
	xHttpRequest: function() // object prototype
	{
		// Private Properties
		var
			_i = this, // instance object
			_r = null, // XMLHttpRequest object
			_t = null, // timer
			_f = null, // callback function
			_x = false, // XML response pending
			_o = null, // user data object passed to _f
			_c = true; // self-clean after send() completed?
		// Public Properties
		_i.OK = 0;
		_i.NOXMLOBJ = 1;
		_i.REQERR = 2;
		_i.TIMEOUT = 4;
		_i.RSPERR = 8;
		_i.NOXMLCT = 16;
		_i.ABORTED = 32;
		_i.status = _i.OK;
		_i.error = null;
		_i.busy = false;
		// Private Methods
		function _clean()
		{
			_i = null;
			_r = null;
			_t = null;
			_f = null;
			_x = false;
			_o = null;
			_c = false;
		}
		function _clrTimer()
		{
			if (_t) {
				clearTimeout(_t);
			}
			_t = null;
		}
		function _endCall()
		{
			if (_f) {
				_f(_r, _i.status, _o);
			}
			_f = null; _x = false; _o = null;
			_i.busy = false;
			if (_c) {
				_clean();
			}
		}
		function _abort(s)
		{
			_clrTimer();
			try {
				_r.onreadystatechange = function(){};
				_r.abort();
			}
			catch (e) {
				_i.status |= _i.RSPERR;
				_i.error = e;
			}
			_i.status |= s;
			_endCall();
		}
		function _newXHR()
		{
			try { _r = new XMLHttpRequest(); }
			catch (e) { try { _r = new ActiveXObject('Msxml2.XMLHTTP'); }
			catch (e) { try { _r = new ActiveXObject('Microsoft.XMLHTTP'); }
			catch (e) { _r = null; _i.error = e; }}}
			if (!_r) { _i.status |= _i.NOXMLOBJ; }
		}
		// Private Event Listeners
		function _oc() // onReadyStateChange
		{
			var ct;
			if (_r.readyState == 4) {
				_clrTimer();
				try {
					if (_r.status != 200) _i.status |= _i.RSPERR;
					if (_x) {
						ct = _r.getResponseHeader('Content-Type');
						if (ct && ct.indexOf('xml') == -1) { _i.status |= _i.NOXMLCT; }
					}
					delete _r['onreadystatechange']; // _r.onreadystatechange = null;
				}
				catch (e) {
					_i.status |= _i.RSPERR;
					_i.error = e;
				}
				_endCall();
			}
		}
		function _ot() // onTimeout
		{
			_t = null;
			_abort(_i.TIMEOUT);
		}
		// Public Methods
		this.send = function(m, u, d, t, r, x, o, f, c)
		{
			if (!_r || _i.busy) { return false; }
			_c = (c ? true : false);
			m = m.toUpperCase();
			if (m != 'POST') {
				if (d) {
					d = '?' + d;
					if (r) { d += '&' + r + '=' + Math.round(10000*Math.random()); }
				}
				else { d = ''; }
			}
			_x = (x ? true : false);
			_o = o;
			_f = f;
			_i.busy = true;
			_i.status = _i.OK;
			_i.error = null;
			if (t) { _t = setTimeout(_ot, t); }
			try {
				if (m == 'GET') {
					_r.open(m, u + d, true);
					d = null;
					_r.setRequestHeader('Cache-Control', 'no-cache');
					var ct = 'text/' + (_x ? 'xml':'plain');
					if (_r.overrideMimeType) {_r.overrideMimeType(ct);}
					_r.setRequestHeader('Content-Type', ct);
				}
				else if (m == 'POST') {
					_r.open(m, u, true);
					_r.setRequestHeader('Method', 'POST ' + u + ' HTTP/1.1');
					_r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				}
				else {
					_r.open(m, u + d, true);
					d = null;
				}
				_r.onreadystatechange = _oc;
				_r.send(d);
			}
			catch(e) {
				_clrTimer();
				_f = null; _x = false; _o = null;
				_i.busy = false;
				_i.status |= _i.REQERR;
				_i.error = e;
				if (_c) {
					_clean();
				}
				return false;
			}
			return true;
		};
		this.abort = function()
		{
			if (!_r || !_i.busy) { return false; }
			_abort(_i.ABORTED);
			return true;
		};
		this.reinit = function()
		{
			// Halt any HTTP request that may be in progress.
			this.abort();
			// Set all private vars to initial state.
			_clean();
			_i = this;
			// Set all (non-constant) public properties to initial state.
			_i.status = _i.OK;
			_i.error = null;
			_i.busy = false;
			// Create the private XMLHttpRequest object.
			_newXHR();
			return true;
		};
		// Constructor Code
		_newXHR();
	},
// urlencode -------------------------------------------------------------------
// http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_urlencode/
// -----------------------------------------------------------------------------
	urlencode: function (str) {
		var hexStr = function (dec) {
			return '%' + dec.toString(16).toUpperCase();
		};
 
		var ret = '',
				unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
		str = (str+'').toString();
 
		for (var i = 0, dl = str.length; i < dl; i++) {
			var ch = str.charAt(i);
			if (unreserved.test(ch)) {
				ret += ch;
			}
			else {
				var code = str.charCodeAt(i);
				// Reserved assumed to be in UTF-8, as in PHP
				if (code === 32) {
					ret += '+'; // %20 in rawurlencode
				}
				else if (code < 128) { // 1 byte
					ret += hexStr(code);
				}
				else if (code >= 128 && code < 2048) { // 2 bytes
					ret += hexStr((code >> 6) | 0xC0);
					ret += hexStr((code & 0x3F) | 0x80);
				}
				else if (code >= 2048 && code < 65536) { // 3 bytes
					ret += hexStr((code >> 12) | 0xE0);
					ret += hexStr(((code >> 6) & 0x3F) | 0x80);
					ret += hexStr((code & 0x3F) | 0x80);
				}
				else if (code >= 65536) { // 4 bytes
					ret += hexStr((code >> 18) | 0xF0);
					ret += hexStr(((code >> 12) & 0x3F) | 0x80);
					ret += hexStr(((code >> 6) & 0x3F) | 0x80);
					ret += hexStr((code & 0x3F) | 0x80);
				}
			}
		}
		return ret;
	},
// jsonParse -------------------------------------------------------------------
// http://code.google.com/p/json-sans-eval/
// -----------------------------------------------------------------------------
	jsonParse:(function () {
		var number
				= '(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)';
		var oneChar = '(?:[^\\0-\\x08\\x0a-\\x1f\"\\\\]'
				+ '|\\\\(?:[\"/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';
		var string = '(?:\"' + oneChar + '*\")';

		// Will match a value in a well-formed JSON file.
		// If the input is not well-formed, may match strangely, but not in an unsafe
		// way.
		// Since this only matches value tokens, it does not match whitespace, colons,
		// or commas.
		var jsonToken = new RegExp(
				'(?:false|true|null|[\\{\\}\\[\\]]'
				+ '|' + number
				+ '|' + string
				+ ')', 'g');

		// Matches escape sequences in a string literal
		var escapeSequence = new RegExp('\\\\(?:([^u])|u(.{4}))', 'g');

		// Decodes escape sequences in object literals
		var escapes = {
			'"': '"',
			'/': '/',
			'\\': '\\',
			'b': '\b',
			'f': '\f',
			'n': '\n',
			'r': '\r',
			't': '\t'
		};
		function unescapeOne(_, ch, hex) {
			return ch ? escapes[ch] : String.fromCharCode(parseInt(hex, 16));
		}

		// A non-falsy value that coerces to the empty string when used as a key.
		var EMPTY_STRING = new String('');
		var SLASH = '\\';

		// Constructor to use based on an open token.
		var firstTokenCtors = { '{': Object, '[': Array };

		var hop = Object.hasOwnProperty;

		return function (json, opt_reviver) {
			// Split into tokens
			var toks = json.match(jsonToken);
			// Construct the object to return
			var result;
			var tok = toks[0];
			if ('{' === tok) {
				result = {};
			} else if ('[' === tok) {
				result = [];
			} else {
				throw new Error(tok);
			}

			// If undefined, the key in an object key/value record to use for the next
			// value parsed.
			var key;
			// Loop over remaining tokens maintaining a stack of uncompleted objects and
			// arrays.
			var stack = [result];
			for (var i = 1, n = toks.length; i < n; ++i) {
				tok = toks[i];

				var cont;
				switch (tok.charCodeAt(0)) {
					default:	// sign or digit
						cont = stack[0];
						cont[key || cont.length] = +(tok);
						key = void 0;
						break;
					case 0x22:	// '"'
						tok = tok.substring(1, tok.length - 1);
						if (tok.indexOf(SLASH) !== -1) {
							tok = tok.replace(escapeSequence, unescapeOne);
						}
						cont = stack[0];
						if (!key) {
							if (cont instanceof Array) {
								key = cont.length;
							} else {
								key = tok || EMPTY_STRING;	// Use as key for next value seen.
								break;
							}
						}
						cont[key] = tok;
						key = void 0;
						break;
					case 0x5b:	// '['
						cont = stack[0];
						stack.unshift(cont[key || cont.length] = []);
						key = void 0;
						break;
					case 0x5d:	// ']'
						stack.shift();
						break;
					case 0x66:	// 'f'
						cont = stack[0];
						cont[key || cont.length] = false;
						key = void 0;
						break;
					case 0x6e:	// 'n'
						cont = stack[0];
						cont[key || cont.length] = null;
						key = void 0;
						break;
					case 0x74:	// 't'
						cont = stack[0];
						cont[key || cont.length] = true;
						key = void 0;
						break;
					case 0x7b:	// '{'
						cont = stack[0];
						stack.unshift(cont[key || cont.length] = {});
						key = void 0;
						break;
					case 0x7d:	// '}'
						stack.shift();
						break;
				}
			}
			// Fail if we've got an uncompleted object.
			if (stack.length) { throw new Error(); }

			if (opt_reviver) {
				// Based on walk as implemented in http://www.json.org/json2.js
				var walk = function (holder, key) {
					var value = holder[key];
					if (value && typeof value === 'object') {
						var toDelete = null;
						for (var k in value) {
							if (hop.call(value, k) && value !== holder) {
								// Recurse to properties first.	This has the effect of causing
								// the reviver to be called on the object graph depth-first.

								// Since 'this' is bound to the holder of the property, the
								// reviver can access sibling properties of k including ones
								// that have not yet been revived.

								// The value returned by the reviver is used in place of the
								// current value of property k.
								// If it returns undefined then the property is deleted.
								var v = walk(value, k);
								if (v !== void 0) {
									value[k] = v;
								} else {
									// Deleting properties inside the loop has vaguely defined
									// semantics in ES3 and ES3.1.
									if (!toDelete) { toDelete = []; }
									toDelete.push(k);
								}
							}
						}
						if (toDelete) {
							for (var i = toDelete.length; --i >= 0;) {
								delete value[toDelete[i]];
							}
						}
					}
					return opt_reviver.call(holder, key, value);
				};
				result = walk({ '': result }, '');
			}

			return result;
		};
	})(), // end jsonParse


	// swfobject v2.2
	swfobject: function(){
		var D = "undefined",
		r = "object",
		S = "Shockwave Flash",
		W = "ShockwaveFlash.ShockwaveFlash",
		q = "application/x-shockwave-flash",
		R = "SWFObjectExprInst",
		x = "onreadystatechange",
		O = window,
		j = document,
		t = navigator,
		T = false,
		U = [h],
		o = [],
		N = [],
		I = [],
		l,
		Q,
		E,
		B,
		J = false,
		a = false,
		n,
		G,
		m = true,
		M = function() {
			var aa = typeof j.getElementById != D && typeof j.getElementsByTagName != D && typeof j.createElement != D,
			ah = t.userAgent.toLowerCase(),
			Y = t.platform.toLowerCase(),
			ae = Y ? /win/.test(Y) : /win/.test(ah),
			ac = Y ? /mac/.test(Y) : /mac/.test(ah),
			af = /webkit/.test(ah) ? parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
			X = !+"\v1",
			ag = [0, 0, 0],
			ab = null;
			if (typeof t.plugins != D && typeof t.plugins[S] == r) {
				ab = t.plugins[S].description;
				if (ab && !(typeof t.mimeTypes != D && t.mimeTypes[q] && !t.mimeTypes[q].enabledPlugin)) {
					T = true;
					X = false;
					ab = ab.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
					ag[0] = parseInt(ab.replace(/^(.*)\..*$/, "$1"), 10);
					ag[1] = parseInt(ab.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
					ag[2] = /[a-zA-Z]/.test(ab) ? parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0
				}
			} else {
				if (typeof O.ActiveXObject != D) {
					try {
						var ad = new ActiveXObject(W);
						if (ad) {
							ab = ad.GetVariable("$version");
							if (ab) {
								X = true;
								ab = ab.split(" ")[1].split(",");
								ag = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
							}
						}
					} catch(Z) {}
				}
			}
			return {
				w3: aa,
				pv: ag,
				wk: af,
				ie: X,
				win: ae,
				mac: ac
			}
		} (),
		k = function() {
			if (!M.w3) {
				return
			}
			if ((typeof j.readyState != D && j.readyState == "complete") || (typeof j.readyState == D && (j.getElementsByTagName("body")[0] || j.body))) {
				f()
			}
			if (!J) {
				if (typeof j.addEventListener != D) {
					j.addEventListener("DOMContentLoaded", f, false)
				}
				if (M.ie && M.win) {
					j.attachEvent(x,
					function() {
						if (j.readyState == "complete") {
							j.detachEvent(x, arguments.callee);
							f()
						}
					});
					if (O == top) { (function() {
							if (J) {
								return
							}
							try {
								j.documentElement.doScroll("left")
							} catch(X) {
								setTimeout(arguments.callee, 0);
								return
							}
							f()
						})()
					}
				}
				if (M.wk) { (function() {
						if (J) {
							return
						}
						if (!/loaded|complete/.test(j.readyState)) {
							setTimeout(arguments.callee, 0);
							return
						}
						f()
					})()
				}
				s(f)
			}
		} ();
		function f() {
			if (J) {
				return
			}
			try {
				var Z = j.getElementsByTagName("body")[0].appendChild(C("span"));
				Z.parentNode.removeChild(Z)
			} catch(aa) {
				return
			}
			J = true;
			var X = U.length;
			for (var Y = 0; Y < X; Y++) {
				U[Y]()
			}
		}
		function K(X) {
			if (J) {
				X()
			} else {
				U[U.length] = X
			}
		}
		function s(Y) {
			if (typeof O.addEventListener != D) {
				O.addEventListener("load", Y, false)
			} else {
				if (typeof j.addEventListener != D) {
					j.addEventListener("load", Y, false)
				} else {
					if (typeof O.attachEvent != D) {
						i(O, "onload", Y)
					} else {
						if (typeof O.onload == "function") {
							var X = O.onload;
							O.onload = function() {
								X();
								Y()
							}
						} else {
							O.onload = Y
						}
					}
				}
			}
		}
		function h() {
			if (T) {
				V()
			} else {
				H()
			}
		}
		function V() {
			var X = j.getElementsByTagName("body")[0];
			var aa = C(r);
			aa.setAttribute("type", q);
			var Z = X.appendChild(aa);
			if (Z) {
				var Y = 0; (function() {
					if (typeof Z.GetVariable != D) {
						var ab = Z.GetVariable("$version");
						if (ab) {
							ab = ab.split(" ")[1].split(",");
							M.pv = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)]
						}
					} else {
						if (Y < 10) {
							Y++;
							setTimeout(arguments.callee, 10);
							return
						}
					}
					X.removeChild(aa);
					Z = null;
					H()
				})()
			} else {
				H()
			}
		}
		function H() {
			var ag = o.length;
			if (ag > 0) {
				for (var af = 0; af < ag; af++) {
					var Y = o[af].id;
					var ab = o[af].callbackFn;
					var aa = {
						success: false,
						id: Y
					};
					if (M.pv[0] > 0) {
						var ae = c(Y);
						if (ae) {
							if (F(o[af].swfVersion) && !(M.wk && M.wk < 312)) {
								w(Y, true);
								if (ab) {
									aa.success = true;
									aa.ref = z(Y);
									ab(aa)
								}
							} else {
								if (o[af].expressInstall && A()) {
									var ai = {};
									ai.data = o[af].expressInstall;
									ai.width = ae.getAttribute("width") || "0";
									ai.height = ae.getAttribute("height") || "0";
									if (ae.getAttribute("class")) {
										ai.styleclass = ae.getAttribute("class")
									}
									if (ae.getAttribute("align")) {
										ai.align = ae.getAttribute("align")
									}
									var ah = {};
									var X = ae.getElementsByTagName("param");
									var ac = X.length;
									for (var ad = 0; ad < ac; ad++) {
										if (X[ad].getAttribute("name").toLowerCase() != "movie") {
											ah[X[ad].getAttribute("name")] = X[ad].getAttribute("value")
										}
									}
									P(ai, ah, Y, ab)
								} else {
									p(ae);
									if (ab) {
										ab(aa)
									}
								}
							}
						}
					} else {
						w(Y, true);
						if (ab) {
							var Z = z(Y);
							if (Z && typeof Z.SetVariable != D) {
								aa.success = true;
								aa.ref = Z
							}
							ab(aa)
						}
					}
				}
			}
		}
		function z(aa) {
			var X = null;
			var Y = c(aa);
			if (Y && Y.nodeName == "OBJECT") {
				if (typeof Y.SetVariable != D) {
					X = Y
				} else {
					var Z = Y.getElementsByTagName(r)[0];
					if (Z) {
						X = Z
					}
				}
			}
			return X
		}
		function A() {
			return ! a && F("6.0.65") && (M.win || M.mac) && !(M.wk && M.wk < 312)
		}
		function P(aa, ab, X, Z) {
			a = true;
			E = Z || null;
			B = {
				success: false,
				id: X
			};
			var ae = c(X);
			if (ae) {
				if (ae.nodeName == "OBJECT") {
					l = g(ae);
					Q = null
				} else {
					l = ae;
					Q = X
				}
				aa.id = R;
				if (typeof aa.width == D || (!/%$/.test(aa.width) && parseInt(aa.width, 10) < 310)) {
					aa.width = "310"
				}
				if (typeof aa.height == D || (!/%$/.test(aa.height) && parseInt(aa.height, 10) < 137)) {
					aa.height = "137"
				}
				j.title = j.title.slice(0, 47) + " - Flash Player Installation";
				var ad = M.ie && M.win ? "ActiveX": "PlugIn",
				ac = "MMredirectURL=" + O.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + ad + "&MMdoctitle=" + j.title;
				if (typeof ab.flashvars != D) {
					ab.flashvars += "&" + ac
				} else {
					ab.flashvars = ac
				}
				if (M.ie && M.win && ae.readyState != 4) {
					var Y = C("div");
					X += "SWFObjectNew";
					Y.setAttribute("id", X);
					ae.parentNode.insertBefore(Y, ae);
					ae.style.display = "none"; (function() {
						if (ae.readyState == 4) {
							ae.parentNode.removeChild(ae)
						} else {
							setTimeout(arguments.callee, 10)
						}
					})()
				}
				u(aa, ab, X)
			}
		}
		function p(Y) {
			if (M.ie && M.win && Y.readyState != 4) {
				var X = C("div");
				Y.parentNode.insertBefore(X, Y);
				X.parentNode.replaceChild(g(Y), X);
				Y.style.display = "none"; (function() {
					if (Y.readyState == 4) {
						Y.parentNode.removeChild(Y)
					} else {
						setTimeout(arguments.callee, 10)
					}
				})()
			} else {
				Y.parentNode.replaceChild(g(Y), Y)
			}
		}
		function g(ab) {
			var aa = C("div");
			if (M.win && M.ie) {
				aa.innerHTML = ab.innerHTML
			} else {
				var Y = ab.getElementsByTagName(r)[0];
				if (Y) {
					var ad = Y.childNodes;
					if (ad) {
						var X = ad.length;
						for (var Z = 0; Z < X; Z++) {
							if (! (ad[Z].nodeType == 1 && ad[Z].nodeName == "PARAM") && !(ad[Z].nodeType == 8)) {
								aa.appendChild(ad[Z].cloneNode(true))
							}
						}
					}
				}
			}
			return aa
		}
		function u(ai, ag, Y) {
			var X,
			aa = c(Y);
			if (M.wk && M.wk < 312) {
				return X
			}
			if (aa) {
				if (typeof ai.id == D) {
					ai.id = Y
				}
				if (M.ie && M.win) {
					var ah = "";
					for (var ae in ai) {
						if (ai[ae] != Object.prototype[ae]) {
							if (ae.toLowerCase() == "data") {
								ag.movie = ai[ae]
							} else {
								if (ae.toLowerCase() == "styleclass") {
									ah += ' class="' + ai[ae] + '"'
								} else {
									if (ae.toLowerCase() != "classid") {
										ah += " " + ae + '="' + ai[ae] + '"'
									}
								}
							}
						}
					}
					var af = "";
					for (var ad in ag) {
						if (ag[ad] != Object.prototype[ad]) {
							af += '<param name="' + ad + '" value="' + ag[ad] + '" />'
						}
					}
					aa.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + ah + ">" + af + "</object>";
					N[N.length] = ai.id;
					X = c(ai.id)
				} else {
					var Z = C(r);
					Z.setAttribute("type", q);
					for (var ac in ai) {
						if (ai[ac] != Object.prototype[ac]) {
							if (ac.toLowerCase() == "styleclass") {
								Z.setAttribute("class", ai[ac])
							} else {
								if (ac.toLowerCase() != "classid") {
									Z.setAttribute(ac, ai[ac])
								}
							}
						}
					}
					for (var ab in ag) {
						if (ag[ab] != Object.prototype[ab] && ab.toLowerCase() != "movie") {
							e(Z, ab, ag[ab])
						}
					}
					aa.parentNode.replaceChild(Z, aa);
					X = Z
				}
			}
			return X
		}
		function e(Z, X, Y) {
			var aa = C("param");
			aa.setAttribute("name", X);
			aa.setAttribute("value", Y);
			Z.appendChild(aa)
		}
		function y(Y) {
			var X = c(Y);
			if (X && X.nodeName == "OBJECT") {
				if (M.ie && M.win) {
					X.style.display = "none"; (function() {
						if (X.readyState == 4) {
							b(Y)
						} else {
							setTimeout(arguments.callee, 10)
						}
					})()
				} else {
					X.parentNode.removeChild(X)
				}
			}
		}
		function b(Z) {
			var Y = c(Z);
			if (Y) {
				for (var X in Y) {
					if (typeof Y[X] == "function") {
						Y[X] = null
					}
				}
				Y.parentNode.removeChild(Y)
			}
		}
		function c(Z) {
			var X = null;
			try {
				X = j.getElementById(Z)
			} catch(Y) {}
			return X
		}
		function C(X) {
			return j.createElement(X)
		}
		function i(Z, X, Y) {
			Z.attachEvent(X, Y);
			I[I.length] = [Z, X, Y]
		}
		function F(Z) {
			var Y = M.pv,
			X = Z.split(".");
			X[0] = parseInt(X[0], 10);
			X[1] = parseInt(X[1], 10) || 0;
			X[2] = parseInt(X[2], 10) || 0;
			return (Y[0] > X[0] || (Y[0] == X[0] && Y[1] > X[1]) || (Y[0] == X[0] && Y[1] == X[1] && Y[2] >= X[2])) ? true: false
		}
		function v(ac, Y, ad, ab) {
			if (M.ie && M.mac) {
				return
			}
			var aa = j.getElementsByTagName("head")[0];
			if (!aa) {
				return
			}
			var X = (ad && typeof ad == "string") ? ad: "screen";
			if (ab) {
				n = null;
				G = null
			}
			if (!n || G != X) {
				var Z = C("style");
				Z.setAttribute("type", "text/css");
				Z.setAttribute("media", X);
				n = aa.appendChild(Z);
				if (M.ie && M.win && typeof j.styleSheets != D && j.styleSheets.length > 0) {
					n = j.styleSheets[j.styleSheets.length - 1]
				}
				G = X
			}
			if (M.ie && M.win) {
				if (n && typeof n.addRule == r) {
					n.addRule(ac, Y)
				}
			} else {
				if (n && typeof j.createTextNode != D) {
					n.appendChild(j.createTextNode(ac + " {" + Y + "}"))
				}
			}
		}
		function w(Z, X) {
			if (!m) {
				return
			}
			var Y = X ? "visible": "hidden";
			if (J && c(Z)) {
				c(Z).style.visibility = Y
			} else {
				v("#" + Z, "visibility:" + Y)
			}
		}
		function L(Y) {
			var Z = /[\\\"<>\.;]/;
			var X = Z.exec(Y) != null;
			return X && typeof encodeURIComponent != D ? encodeURIComponent(Y) : Y
		}
		var d = function() {
			if (M.ie && M.win) {
				window.attachEvent("onunload",
				function() {
					var ac = I.length;
					for (var ab = 0; ab < ac; ab++) {
						I[ab][0].detachEvent(I[ab][1], I[ab][2])
					}
					var Z = N.length;
					for (var aa = 0; aa < Z; aa++) {
						y(N[aa])
					}
					for (var Y in M) {
						M[Y] = null
					}
					M = null;
					for (var X in swfobject) {
						swfobject[X] = null
					}
					swfobject = null
				})
			}
		} ();
		return {
			registerObject: function(ab, X, aa, Z) {
				if (M.w3 && ab && X) {
					var Y = {};
					Y.id = ab;
					Y.swfVersion = X;
					Y.expressInstall = aa;
					Y.callbackFn = Z;
					o[o.length] = Y;
					w(ab, false)
				} else {
					if (Z) {
						Z({
							success: false,
							id: ab
						})
					}
				}
			},
			getObjectById: function(X) {
				if (M.w3) {
					return z(X)
				}
			},
			embedSWF: function(ab, ah, ae, ag, Y, aa, Z, ad, af, ac) {
				var X = {
					success: false,
					id: ah
				};
				if (M.w3 && !(M.wk && M.wk < 312) && ab && ah && ae && ag && Y) {
					w(ah, false);
					K(function() {
						ae += "";
						ag += "";
						var aj = {};
						if (af && typeof af === r) {
							for (var al in af) {
								aj[al] = af[al]
							}
						}
						aj.data = ab;
						aj.width = ae;
						aj.height = ag;
						var am = {};
						if (ad && typeof ad === r) {
							for (var ak in ad) {
								am[ak] = ad[ak]
							}
						}
						if (Z && typeof Z === r) {
							for (var ai in Z) {
								if (typeof am.flashvars != D) {
									am.flashvars += "&" + ai + "=" + Z[ai]
								} else {
									am.flashvars = ai + "=" + Z[ai]
								}
							}
						}
						if (F(Y)) {
							var an = u(aj, am, ah);
							if (aj.id == ah) {
								w(ah, true)
							}
							X.success = true;
							X.ref = an
						} else {
							if (aa && A()) {
								aj.data = aa;
								P(aj, am, ah, ac);
								return
							} else {
								w(ah, true)
							}
						}
						if (ac) {
							ac(X)
						}
					})
				} else {
					if (ac) {
						ac(X)
					}
				}
			},
			switchOffAutoHideShow: function() {
				m = false
			},
			ua: M,
			getFlashPlayerVersion: function() {
				return {
					major: M.pv[0],
					minor: M.pv[1],
					release: M.pv[2]
				}
			},
			hasFlashPlayerVersion: F,
			createSWF: function(Z, Y, X) {
				if (M.w3) {
					return u(Z, Y, X)
				} else {
					return undefined
				}
			},
			showExpressInstall: function(Z, aa, X, Y) {
				if (M.w3 && A()) {
					P(Z, aa, X, Y)
				}
			},
			removeSWF: function(X) {
				if (M.w3) {
					y(X)
				}
			},
			createCSS: function(aa, Z, Y, X) {
				if (M.w3) {
					v(aa, Z, Y, X)
				}
			},
			addDomLoadEvent: K,
			addLoadEvent: s,
			getQueryParamValue: function(aa) {
				var Z = j.location.search || j.location.hash;
				if (Z) {
					if (/\?/.test(Z)) {
						Z = Z.split("?")[1]
					}
					if (aa == null) {
						return L(Z)
					}
					var Y = Z.split("&");
					for (var X = 0; X < Y.length; X++) {
						if (Y[X].substring(0, Y[X].indexOf("=")) == aa) {
							return L(Y[X].substring((Y[X].indexOf("=") + 1)))
						}
					}
				}
				return ""
			},
			expressInstallCallback: function() {
				if (a) {
					var X = c(R);
					if (X && l) {
						X.parentNode.replaceChild(l, X);
						if (Q) {
							w(Q, true);
							if (M.ie && M.win) {
								l.style.display = "block"
							}
						}
						if (E) {
							E(B)
						}
					}
					a = false
				}
			}
		}
	} ()
}
swfobject = tq.swfobject; // ie hack/fix
tq.init();




/*
 * Google Analytics - ga.js
 */
(function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},
T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=
i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");
g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();
var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};
c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=
w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,
c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||
2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};
Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+
"."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?
g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);
if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};
h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==
d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");
b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};
Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");
h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=
function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<
m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,
q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=
O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);
return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];
return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=
c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();
F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));
e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();
a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=
!this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?
b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;
a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,
e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();
if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+
S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||
b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=
function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};
a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=
b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=
function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()

if (document.location.host == 'www.traffiq.com') {
	try {
	var pageTracker = _gat._getTracker("UA-6657937-1");
	pageTracker._trackPageview();
	} catch(err) {}
}
