/*
 *	Project : VRTStats
 *	Name	: Nico Heulsen
 *	Version	: 1.0
 *	Email	: Nico.Heulsen@vrt.be
 *	Usage 	:
 *
 *	This scripts implements sitestat and metriweb.
 *	To implemtent this is script on your website, just follow this steps below
 *	If you don't wanna use the metriweb, simple call the function with the keyword false, the same goes for sitestat.
 *	Page_prefix and _suffix are used where every page has a prefix and suffic, for example (prefix c_) c_ushuaia_afl6_groenegoud
 *	
 *	
 *	STEP1: 	put this javascriptfile into your head-section of the html
 *	STEP2:	modify the properties of the javascript.
 *	STEP2: 	call the function (vrtStats) at the bottom of the page, just before the end-tag of the body
 *	STEP4: 	define a tellernaam and keyword if possible (if these are empty the script will generate 
 *			a tellernaam and keyword based on the url).
 *
 *	Example:
 * 	--------
 *
 *	<script language="javascript" type="text/javascript">
 *	//<[!CDATA[
 *
 *		var tellernaam = "";
 *		var keyword = "";
 *		vrtStats(tellernaam, keyword);
 *
 *	//]]>
 *	</script>
 *
 *
 *
 *
 *	You can also use some other functions to implement sitestat. 
 *	
 *	
 *
 *
 *
 *
 *
 *
 *
 */
 
 
/* Defining properties | Modify this 4 your site */

//GENERAL INFO
var KLANT_NAAM = "vrt";
var SITE_NAAM = "canvas-be";
var SITESTAT_URL = "http://be.sitestat.com";
var SUBSITE = false;

//CUSTOM LABELS
var CUST_BEHOEFTE = "verdiepend";			//verdiepend, verbindend, overige
var CUST_CATEGORY = "standaard";			//cultuur, nieuws, sport, eductaie, weer, verkeer, standaard
var CUST_MEDIATYPE = "tv";					//radio, tv, cross, overige
var CUST_DOELGROEP = "none";				//jong, kind, none
var CUST_MARKETING = "none";				//evenement, acties, wedstrijd, contact, none
var CUST_WAAR = "intern";					//intern, extern
var CUST_PRODUCTIEHUIS = "prodjong"			//prodcultuur, prodfictie, prodjong, prodnieuws, prodsport, produitleven, prodverbindend, prodweten, prodnone


//ADDITIONAL INFO
var WEBSITE_ROOT = "http://www.canvas.be/extra/html";
//var WEBSITE_ROOT = "http://testweb";
var PAGE_PREFIX = "c_";
var PAGE_SUFFIX = "";
var LANGUAGE = "nl";

var ENABLE_CLICKTHROUGH = false;			//all internal links will be tagged
var ENABLE_CLICKOUT = false;				//all external links will be tagged
var ENABLE_CLICKDOC = false;				//all documents will be tagged





/* ========================================================================================================================================================================== */
/*																																											  */
/* ========================================================================================================================================================================== */

/* ----------------------------------Extend String Object--------------------------------------- */


String.prototype.ltrim = function (){ 
	return this.replace(/^ */,""); 
}

String.prototype.rtrim = function (){ 
	return this.replace(/ *$/,""); 
}

String.prototype.trim = function () { 
	return this.ltrim().rtrim(); 
}

String.prototype.contains = function (value){ 
	var result = this.indexOf(value);
	
	if(result >= 0){
		return true;
	}
	else{
		return false;
	}
}

String.prototype.startsWith = function(value){
	var len = value.length;
	
	if(this.substr(0, len).toLowerCase() == value.toLowerCase()){
		return true; 
	}
	else{ 
		return false; 
	}
}

String.prototype.endsWith = function(value){
	var len = value.length;
	
	if(this.substr(this.length - len).toLowerCase() == value.toLowerCase()){
		return true;
	} 
	else{
		return false;
	}
}

String.prototype.strip = function(value){
	var len = value.length;
	
	if(this.length > len){
		return this.substr(len);
	}
	else{
		return null;
	} 
}

String.prototype.addURLSlash = function(){
	var len = this.len;
	
	if(this.substr(len - 1) == "/"){
		return this;
	} 
	else{
		return this + "/";
	}
}

String.prototype.replaceAll = function(SearchFor, ReplaceWith){
	var tmpContent = this;
   	var tmpBefore = new String();   
   	var tmpAfter = new String();
   	var tmpOutput = new String();
   	var intBefore = 0;
   	var intAfter = 0;

   	if (SearchFor.length == 0)
      	return;


   	while (tmpContent.toUpperCase().indexOf(SearchFor.toUpperCase()) > -1) {
      	intBefore = tmpContent.toUpperCase().indexOf(SearchFor.toUpperCase());
      	tmpBefore = tmpContent.substring(0, intBefore);
      	tmpOutput = tmpOutput + tmpBefore;

      	tmpOutput = tmpOutput + ReplaceWith;
	    
	    intAfter = tmpContent.length - SearchFor.length + 1;
     	tmpContent = tmpContent.substring(intBefore + SearchFor.length);
   }

   return tmpOutput + tmpContent;
}







function vrtStats(tellernaam, keyword){
	try{
		/* Page tagging */
		if(tellernaam.toString() != 'false'){ vrtSitestat(tellernaam); }
		if(keyword.toString() != 'false'){ mwTag(keyword); }
		
		/* Extra tagging ? */
		if(ENABLE_CLICKTHROUGH == true || ENABLE_CLICKOUT == true || ENABLE_CLICKDOC){
			_siteStat_webSiteClicks();
		}
		
		
	}
	catch(e){
	
	}
}


function _siteStat_isLinkADocument(link){
	try{
		var ext = link.href.substr(link.href.lastIndexOf(".") + 1).trim();
		
		if(ext != "html" && ext != "shtml" && ext != "htm"){
			return true;
		}
		else{
			return false;
		}
	}
	catch(e){
	
	}
}

function _getExtention(link){
	try{
		return link.href.substr(link.href.lastIndexOf(".") + 1);
	}
	catch(e){
	
	}
}


function _siteStat_addClick(type, link){
	try{
		var tn = _siteStat_getTellerNaam();
		var ext = _getExtention(link);
		var cleanLink = _convertSpaces(link.href);
		var tellernaam = "";
		
		if(link.href != undefined){
			if(type == "CLICKDOC"){
				tellernaam = _siteStat_getSiteStatGeneral() + ext.trim() + ".VAN." + tn + ".NAAR." + cleanLink.trim() + "&ns_type=" + ext.trim() + "&ns_url=" + link.href;
			}
			
			if(type == "CLICKOUT"){
				tellernaam = _siteStat_getSiteStatGeneral() + "clickout.VAN." + tn + ".NAAR." + cleanLink + "&ns_type=clickout&ns_url=" + link.href;
			}
			
			if(type == "CLICKTHROUGH"){
				tellernaam = _siteStat_getSiteStatGeneral() + "clickthrough.VAN." + tn + ".NAAR." + cleanLink + "&ns_type=clickout&ns_url=" + link.href;
			}
		}
		
		
		link.href = tellernaam;
		
	}
	catch(e){
		//alert(e.message);
	}
}

function _siteStat_webSiteClicks(){
	try{
		var _anchorTags = document.getElementsByTagName("a");
		
		
		
		for(var i=0;i<_anchorTags.length;i++){	
			var bIsDocument = _siteStat_isLinkADocument(_anchorTags[i]);
		
			if(_anchorTags[i].href.startsWith("/") || _anchorTags[i].href.startsWith("http://" + window.location.host)){
				/* internal link */
				if(ENABLE_CLICKTHROUGH && bIsDocument == false){
					_siteStat_addClick("CLICKTHROUGH", _anchorTags[i]);
				}
			}
			else{
				/* external link */
				if(ENABLE_CLICKOUT && bIsDocument == false){
					_siteStat_addClick("CLICKOUT", _anchorTags[i]);
				}
			}
			
			/* link to document */
			if(bIsDocument == true){
				_siteStat_addClick("CLICKDOC", _anchorTags[i]);
			}
		}
	}
	catch(e){
		//alert(e.message);
	}
}


function vrtSitestat(tellernaam){
	try{
		var tn = "";
		var statURL = "";
		
		if(tellernaam == undefined || tellernaam == ""){
			tn = _siteStat_getTellerNaam();
		}
		else{
			tn = tellernaam;
		}
		
		var _bValidSiteStat = _siteStat_isValidSiteStat(tn);
		
		statURL = _siteStat_getFullSiteStatURL(tn);

		if(_bValidSiteStat){
			//alert("Sitestat:\n-----------------------------------------------------------\n" + statURL);
			//sitestat(statURL);
		}
		else{
			//alert("not a valid sitestat: " + tn);
		}
	}
	catch(e){
		//alert(e.message);
	}
}


function _siteStat_getFullSiteStatURL(tellernaam){
	var statURL = "";
	
	statURL += _siteStat_getSiteStatGeneral();
	statURL += tellernaam + "&amp;";
	statURL += _siteStat_getCustomLabelsURL();
	
	return statURL;
}


function _siteStat_getSiteStatGeneral(){
	try{
		return SITESTAT_URL.addURLSlash() +  KLANT_NAAM.addURLSlash() + SITE_NAAM.addURLSlash() + "s?";
	}
	catch(e){
	
	}
}

function _siteStat_getTellerNaam(){
	try{
		var tn = "";
		
		//Clean up url
		var url = _siteStat_getWebsitePageWithoutPrefix();
		
		if(url.startsWith("/")){
			url = url.substr(1);
		}
		
		//Slice up the url
		var slicedURL = url.split("/");
		var slicedURLLength = slicedURL.length;
		
		
		/**
		 *	Check if it is an overview
		 *	YES:	put .index at the end
		 *	NO:		put pagename at the end
		 */
		 
		if(slicedURL[slicedURLLength -1] == ""){
			if(url.endsWith('/')){
				url = url.substring(0, url.lastIndexOf("/"));
			}
			
			url = url.replaceAll('/',".");
			
			if(SUBSITE == true){
				url += ".subsite.index";
			}
			else{
				url += ".index";
			}
			
		}
		else{
			var p = _getPageFromURL(url);
			url = url.substr(0, url.lastIndexOf("/")).trim();
			url = url.replaceAll('/',".");
			
			if(url.endsWith(".")){
				if(SUBSITE == true){
					url = url + "subsite." + p;
				}
				else{
					url = url + p;
				}
			}
			else{
				if(SUBSITE == true){
					url = url + ".subsite." + p;	
				}
				else{
					url = url + "." + p;
				}
				
			}
		}
		
		url = _siteStat_cleanSiteStatTellernaam(url);
		
		return url;

	}
	catch(e){
	}
}


function _siteStat_getCustomLabelsURL(){
	try{
		var e = "";
		
		e += "marketing=" + CUST_MARKETING + "&amp;";
		e += "doelgroep=" + CUST_DOELGROEP + "&amp;"
		e += "category=" + CUST_CATEGORY + "&amp;"
		e += "behoefte=" + CUST_BEHOEFTE + "&amp;"
		e += "waar=" + CUST_WAAR + "&amp;"
		e += "productiehuis=" + CUST_PRODUCTIEHUIS + "&amp;"
		e += "mediatype=" + CUST_MEDIATYPE;
		
		return e;
	}
	catch(e){
	
	}
}

function _getPageFromURL(url){
	try{
		var temp_url = url.substr(url.lastIndexOf("/") + 1);
		var temp_page = "";
		var p_suffix = "";
		var p = "";
		
		if(temp_url.contains(".")){
			temp_page = temp_url.substr(0, temp_url.lastIndexOf("."));	
		}
		else{
			temp_page = temp_url;
		}
		
		if(temp_page.startsWith(PAGE_PREFIX)){
			p_suffix = temp_page.substr(PAGE_PREFIX.length);
		}
		else{
			p_suffix = temp_page;
		}
		
		if(p_suffix.endsWith(PAGE_SUFFIX)){
			p = p_suffix.substr(0, p_suffix.length - PAGE_SUFFIX.length);
		}
		
		return p;
	}
	catch(e){
	
	}
}


function _getWebsiteURL(){
	try{
		var u = location.href;
		var url = "";
		
		/**
		 *	We check for additional paramaeters
		 */
		if(u.contains("?")){
			url = u.substr(0, u.indexOf("?"));
		}
		else{
			url = u;
		}
		return url.toLowerCase();
	}
	catch(e){
	
	}
}


function _siteStat_cleanSiteStatTellernaam(tellernaam){
	try{
		tellernaam.replaceAll("é","e");
		tellernaam.replaceAll("è","e");
		tellernaam.replaceAll("ë","e");
		tellernaam.replaceAll("ö","e");
		tellernaam.replaceAll("ï","e");
		tellernaam.replaceAll("ä","e");
		tellernaam.replaceAll("ü","e");

		return tellernaam;
	}
	catch(e){
	
	}
}

function _siteStat_getWebsitePageWithoutPrefix(){
	try{
		var url = _getWebsiteURL();
		
		/**
		 * We must check on http://www.sitename.countrycode,
		 * but also on http://sitename.countrycode, so we
		 * strip the www
		 */
		
		if(url.contains("http://www.")){
			url = url.strip("http://www.");
		}
		
		if(url.contains("https://www.")){
			url = url.strip("https://www.");
		}

		
		if(WEBSITE_ROOT.contains("http://www.")){
			WEBSITE_ROOT = WEBSITE_ROOT.strip("http://www.");
		}

		return url.strip(WEBSITE_ROOT).toLowerCase().trim();
	}
	catch(e){
	
	}
}


function _siteStat_isValidSiteStat(input){
	try{
		var pattern = /^[a-zA-Z0-9._-]+$/;
		var result = new RegExp(pattern).test(input);

		return result; 
	}
	catch(e){
	
	}
}


function _convertSpaces(input){
	try{
		input.replaceAll("%20","_");
		input.replaceAll(" ","_");
		
		return input;
	}
	catch(e){
	
	}
}

function sitestat(ns_l){
	//alert(ns_l);
	
	ns_l+='&amp;ns__t='+(new Date()).getTime();ns_pixelUrl=ns_l; 
	ns_0=document.referrer; 
	ns_0=(ns_0.lastIndexOf('/')==ns_0.length-1)?ns_0.substring(ns_0.lastIndexOf('/'),0):ns_0; 
	if(ns_0.length>0)ns_l+='&amp;ns_referrer='+escape(ns_0); 
	if(document.images){ns_1=new Image();ns_1.src=ns_l;}else 
	document.write('<img src="'+ns_l+'" width="1" height="1" alt=""></img>');
	
} 





/* ======================================================================================================================== METRIWEB ===== */

/* MetriWeb Javascript file */
/* Version 4.5.2 -- 2008-01-19 */

/* Please, do NEVER modify this monitored file! */

var mw=new Object();

mw.V="4.5.2";
mw.i=new Image();
mw.p=0;
mw.l=0;
mw.D=".metriweb.be";
mw.W=function(u1,u2)
{
	if(mw.l){
		if(mw.l++>1){
			var nS=document.createElement("script");
			nS.setAttribute("src", u1+"sd"+u2);
			document.getElementsByTagName("head").item(0).appendChild(nS);
		}else if(mw.i.width!=1){
			var nS=document.createElement("script");
			nS.setAttribute("src", u1+"td"+u2);
			document.getElementsByTagName("head").item(0).appendChild(nS);
		}
	}else{
		mw.i.src=u1+"dyn"+u2;
		if(!mw.p){
			var oL=window.onload;
			if(typeof window.onload!='function') window.onload=function(){mw.l++;mw.W(u1,u2)}
			else window.onload=function(){mw.l++;mw.W(u1,u2);oL()}
		}
	}
}
mw.n = function(d)
{
	var k="0000";
	var t=d.split(".");
	if(parseInt(k+t[t.length-1]))mw.d=d;
	else mw.d="."+t[t.length-2]+"."+t[t.length-1];
	t="charCodeAt(0)";
	var c=(k+eval("\""+mw.d.split("").join("\"."+t+"+\"")+"\"."+t));
	t=k+k+k+k+new Date().getTime();
	t=t.substr(t.length-16,16);
	return t.substr(0,13)+"."+t.substr(13,3)+c.substr(c.length-3,3)+".5";
}
mw.g = function(s,f)
{
	var c;
	var o=document.cookie.indexOf(s+"=");
	if(o<0){
		c=f(document.domain);
		document.cookie=s+"="+c+"; domain="+mw.d+"; path=/; expires="+
			new Date(new Date().getTime()+365*24*3600000).toGMTString()+";";
	}else{
		var e=document.cookie.indexOf(";",o);
		if(e<0)e=document.cookie.length;
		c=document.cookie.substring(o+4,e);
	}
	return c;
}
mw.H = function()
{
	document.getElementById("metriwebLayer").style.visibility="hidden";
}
mw.c=mw.g("mwc",mw.n);


function metriwebTag (tag, keyword, extra, refresh)
{
	mw.W('http://'+tag+mw.D+'/','/'+tag+'/mw.cgi?page='+keyword+
		(extra?('&q='+extra):'')+(refresh?('&s='+refresh):'')+
		'&c='+mw.c+'&v='+mw.V+'&p='+mw.p+'&d='+new Date().getTime()+'&R='+Math.random());
	mw.p++;
}





function _getCharSplitCount(url, page){
	try{
		if(url.startsWith("/")){
			url = url.substr(1).split("/");
		}
		else{
			url = url.split("/");
		}
		
		var pl = page.length;
		
		if(pl > 10){pl = 10; }
		if(pl <= 0){pl = 1; }
		
		return Math.floor((23 - pl) / url.length);
	}
	catch(e){
	
	}
}


function _mw_getKeywordFromURL(){
	try{
		var url = _siteStat_getWebsitePageWithoutPrefix();
		var page = _getPageFromURL(url);
		var kw = SITE_NAAM.substr(0,1).toUpperCase() + "/";
		var charSplit = _getCharSplitCount(url, page);
		
		if(url.startsWith("/")){
			url = url.substr(1);
		}
		
		
		
		var urlsplit = url.split("/");
		
		for(var i=0;i<urlsplit.length -1;i++){
			if(urlsplit[i] != ''){
				kw += urlsplit[i].substr(0, charSplit) + "/";
			}
		}
		
		if(kw + page.length <=23){
			return kw.toUpperCase() + page.toUpperCase();
		}
		else{
			var char = 23 - kw.length;
			return kw.toUpperCase() + page.substr(0, char).toUpperCase();
		}
	}
	catch(e){
	
	}	
}


function mwTag(keyword){
	try{
		var MW_SITENAAM = SITE_NAAM.substr(0, SITE_NAAM.length - 3);
		
		if(keyword == undefined || keyword == null || keyword == ""){
			keyword = _mw_getKeywordFromURL();
		}
		
		//alert('Metriweb: \n------------\nSitenaam: ' + MW_SITENAAM + '\nKeyword: ' + keyword + '\nExtra: ' + LANGUAGE);
		//metriwebTag (MW_SITENAAM, keyword, LANGUAGE);
		
	}
	catch(e){
	
	}
}