
// === CONFIG === //

var cfg = {
	refKey: 'stud5',
	eventId: 7,	// current event id
	websiteId: 27,	// client site id
	cookieName: 'regstat.stud5',
	statsSrvUrl: 'http://regstat.demo.codelibris.lt/regstat/count/index'
};


// === INIT === //

cfg.refArr = {
	11: 'www.google.lt',
	17: 'www.one.lt',
	21: 'www.facebook.com',
	22: 'www.stankus.lt',
	23: 'www.nedaryk.lt',
}

// == DO NOT CHANGE CODE BELOW THIS LINE == //
//=================================================
function getBrowserCookie(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 "";
}
//=================================================		
function setBrowserCookie(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

//=================================================
ClientClass = function(){
	var _this = this;
	var _url = String (document.location);

	this.refId = _url.match( new RegExp( cfg.refKey + '=' + "\\d+") );
	this.refId = this.refId !== null ? this.refId[0].split('=')[1] : this.refId;

	this.refUrl = document.referrer;

	this.cookie = getBrowserCookie(cfg.cookieName);
	this.event = getEvent();

	this.hasValidReferer = hasValidReferer; // f-
	function hasValidReferer(){
		var result = false;
		var domainRegExp = /\/\/(.*?)\//;

		if ( cfg.refArr.hasOwnProperty(_this.refId) ) {
			result = true;
		}

		if ( domainRegExp.test(_this.refUrl) ) {
			var refDomain = /\/\/(.*?)\//.exec(_this.refUrl)[1];

			for (var key in cfg.refArr) {
				// alert(cfg.refArr[key]);
				if ( cfg.refArr.hasOwnProperty(key) ) {
					if ( cfg.refArr[key] == refDomain ) {
						_this.refId = key;
						result = true;
					}
				}
			}
		} // yra refereris

		return result;
	}

	this.hasCookie = hasCookie; // f-
	function hasCookie() {
		if ( (_this.cookie !== null) && (_this.cookie !== "") ) {
			return true;
		}
	}

	this.getEvent = getEvent; // f-
	function getEvent(){
		var result = '';
		if ( hasCookie() ) {
			result = _this.cookie.match( /e_id=\d+/ )[0].split('=')[1];
		}
		else {
			result = cfg.eventId;
		}
		return result;
	}

	this.setEvent = setEvent; // f-
	function setEvent(event){
		_this.event = event;
	}	

	this.setCookie = setCookie; // f-
	function setCookie(){
		var w_id = cfg.websiteId;
		var pr_id = _this.refId;
		var ref = _this.refUrl;
		var e_id = _this.event;
		var date = new Date();
		var cookieKey = Math.round( Math.random() * date.getTime() );

		var cookieVal = 'w_id=' + w_id +
				'&pr_id=' + pr_id +
				'&e_id=' + e_id +
				'&cookieKey=' + cookieKey
		;
		setBrowserCookie(cfg.cookieName, cookieVal, 365 );
		_this.cookie = cookieVal;
	}

	this.generateStatsSrvCall = generateStatsSrvCall; // f-
	function generateStatsSrvCall(){		
		var callUrl = cfg.statsSrvUrl + '?' + _this.cookie;
		document.write('<img src="' + callUrl + '" alt="" heigh="0"/>');
	}

};


// START MAGIC COOKERY
client = new ClientClass();

if ( client.hasCookie() ) {
	if (client.getEvent() !== cfg.eventId) {
		client.setEvent(cfg.eventId);
	}
	client.generateStatsSrvCall();
}
else {
	if ( client.hasValidReferer() ){
		client.setCookie();
		client.generateStatsSrvCall();
	}
	else { /* unknown referer - not our user */ }
}
// END MAGIC


