﻿var shopTargetDomain =  /netshop2?\.tallink\.com/i;
function urchinEventBind(obj, evt, newhandler, captures)
{
	if (obj.attachEvent)
		obj.attachEvent('on' + evt, newhandler);
	else if (obj.addEventListener)
		obj.addEventListener(evt, newhandler, captures);
	else
	{
		var oldhandler;
		if (oldhandler = obj['on' + evt])
			obj['on' + evt] = function() { oldhandler(); newhandler(); }
		else obj['on' + evt] = newhandler;
	}
}

function GAencode(oldString) {
	var newString = encodeURIComponent(oldString);
	return newString;
}
function GAdecode(oldString) {
	var newString = decodeURIComponent(oldString.replace(/\+/g,  " "));
	return newString;
}

// Get URL Parameter
function gup(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return "";
	else
		return results[1];
}

function setCookie(c_name,value,expiredate) {
	document.cookie=c_name+ "=" +value+((expiredate==null) ? "" : "; expires="+expiredate.toGMTString()) + ";path=/" ;
}

/*
 *	handleParam()
 *	Parametrit: URL parametrin nimi, asetettavan cookien kesto
 *	Toiminta: hakee GA:n parametrit urlista ja kutsuu cookiet asettavaa funktiota
 */
function handleParam(name, time) {
	var tmpValue = gup(name);
	if (tmpValue) {
		tmpValue = GAdecode(tmpValue);
		setCookie(name, tmpValue, time);
	}
}

function googleBinder() {
	var a = document.getElementsByTagName('a');
	for(var i = 0; i < a.length; i++){
		if (a[i].href.match(shopTargetDomain)) {
			a[i].href=pageTracker._getLinkerUrl(a[i].href);   	
		} 
	}
	if(!document.referrer.match(document.domain)) {
		var url = window.location.href.split("?");
		if(typeof(url[1]) != "undefined") {
		  
			var today = new Date();
			var two_years = new Date(today.getFullYear()+2,today.getMonth(),today.getDate(),today.getHours(),today.getMinutes(),0);
			var six_months = new Date(today.getFullYear(),today.getMonth() + 6,today.getDate(),today.getHours(),today.getMinutes(),0);
			var thirty_minutes = new Date(today.getFullYear(),today.getMonth(),today.getDate(),today.getHours(),today.getMinutes()+30,0);
			var thirty_days = new Date(today.getFullYear(),today.getMonth(),today.getDate()+30,today.getHours(),today.getMinutes(),0);
		  
			handleParam('__utma', two_years);
			handleParam('__utmb', thirty_minutes);
			handleParam('__utmc');	// Sessio
			handleParam('__utmz', six_months);
		}
	}
}
