// JavaScript Document
// Copyright 2010 Florian Kittel Mediendesign
// Betamodus

// Mainvars
var browser = '';


function getSize(d) {
	var myWidth = 0, myHeight = 0;

	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	if(d == "w") {
		return myWidth;
	} else if(d == "h") {
		return myHeight;
	} else {
		return [ myWidth, myHeight ];
	}
}
function getScrollXY(d) {
	var scrOfX = 0, scrOfY = 0;

	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	if(d == "x") {
		return scrOfX;
	} else if(d == "y") {
		return scrOfY;
	} else {
		return [ scrOfX, scrOfY ];
	}
}
function getbrowser() {
	var b = navigator.userAgent != undefined ? navigator.userAgent.toLowerCase().replace(/-/g, '') : '';
	b = b.replace(/iceweasel/, 'firefox').replace(/^.*(firefox|kmeleon|safari|msie|opera).*$/, '$1');
	if (b == '')
	{
		b = 'unknown';
	}
	return b;
}
function registerclick(e) {
	$.ajax({
		type: "POST",
		url: "/"+lang+"/trackclickrecord",
		data: "visitor="+visitor+"&intime="+intime+"&x="+e.pageX+"&y="+e.pageY+"&sx="+getScrollXY('x')+"&sy="+getScrollXY('y')+"&b="+browser+"&w="+getSize('w')+"&h="+getSize('h')+"&r="+ref+"&s=2",
		success: function(msg){
		 //alert( "Data Saved: " + msg + "visid="+visid+"&intime="+intime+"&x="+e.pageX+"&y="+e.pageY+"&sx="+getScrollXY('x')+"&sy="+getScrollXY('y') );
		 //alert(msg);
		}
	});
}
function enterpage() {
	if(browser == '') {
		browser = getbrowser();  
	}
	$.ajax({
		type: "POST",
		url: "/"+lang+"/trackclickrecord",
		data: "visitor="+visitor+"&intime="+intime+"&x=0&y=0&sx=0&sy=0&b="+browser+"&w="+getSize('w')+"&h="+getSize('h')+"&r="+ref+"&s=1",
		success: function(msg){
		 //alert( "Data Saved: " + msg + "visid="+visid+"&intime="+intime+"&x="+e.pageX+"&y="+e.pageY+"&sx="+getScrollXY('x')+"&sy="+getScrollXY('y') );
		 //alert(msg);
		}
	});	
}
(function(){
    var special = jQuery.event.special,
        uid1 = 'D' + (+new Date()),
        uid2 = 'D' + (+new Date() + 1);
    special.scrollstart = {
        setup: function() {
            var timer,
                handler =  function(evt) {
                    var _self = this,
                        _args = arguments;
                    
                    if (timer) {
                        clearTimeout(timer);
                    } else {
                        evt.type = 'scrollstart';
                        jQuery.event.handle.apply(_self, _args);
                    }
                    timer = setTimeout( function(){
                        timer = null;
                    }, special.scrollstop.latency);
                    
                };
            jQuery(this).bind('scroll', handler).data(uid1, handler);
        },
        teardown: function(){
            jQuery(this).unbind( 'scroll', jQuery(this).data(uid1) );
        }
    };
    
    special.scrollstop = {
        latency: 500,
        setup: function() {
            var timer,
                    handler = function(evt) {
                    var _self = this,
                        _args = arguments;
                    if (timer) {
                        clearTimeout(timer);
                    }
                    timer = setTimeout( function(){
                        timer = null;
                        evt.type = 'scrollstop';
                        jQuery.event.handle.apply(_self, _args);
                    }, special.scrollstop.latency);
                };
            jQuery(this).bind('scroll', handler).data(uid2, handler);
        },
        teardown: function() {
            jQuery(this).unbind( 'scroll', jQuery(this).data(uid2) );
        }
    };
})();


// Beim Klick der Webseite
$('*').click(function(e) {
	if(browser == '') {
		browser = getbrowser();  
	}  
	registerclick(e);
});

// Beim Verlassen der Webseite
$(window).load(function() {
	window.onbeforeunload = navigateAway;
});
function navigateAway(e){
	if(browser == '') {
		browser = getbrowser();  
	}
	$.ajax({
		type: "POST",
		url: "/"+lang+"/trackclickrecord",
		data: "visitor="+visitor+"&intime="+intime+"&x=0&y=0&sx=0&sy=0&b="+browser+"&w="+getSize('w')+"&h="+getSize('h')+"&r="+ref+"&s=3",
	});	
}

// Beim Scrollen
(function(){
	jQuery(window).bind('scrollstart', function(){
		$.ajax({
			type: "POST",
			url: "/"+lang+"/trackclickrecord",
			data: "visitor="+visitor+"&intime="+intime+"&x=0&y=0&sx="+getScrollXY('x')+"&sy="+getScrollXY('y')+"&b="+browser+"&w="+getSize('w')+"&h="+getSize('h')+"&r="+ref+"&s=4",
			success: function(msg){
			 //alert( "Data Saved: " + msg + "visid="+visid+"&intime="+intime+"&x="+e.pageX+"&y="+e.pageY+"&sx="+getScrollXY('x')+"&sy="+getScrollXY('y') );
			 //alert(msg);
			}
		});	
	});
	jQuery(window).bind('scrollstop', function(e){
		$.ajax({
			type: "POST",
			url: "/"+lang+"/trackclickrecord",
			data: "visitor="+visitor+"&intime="+intime+"&x=0&y=0&sx="+getScrollXY('x')+"&sy="+getScrollXY('y')+"&b="+browser+"&w="+getSize('w')+"&h="+getSize('h')+"&r="+ref+"&s=5",
			success: function(msg){
			 //alert( "Data Saved: " + msg + "visid="+visid+"&intime="+intime+"&x="+e.pageX+"&y="+e.pageY+"&sx="+getScrollXY('x')+"&sy="+getScrollXY('y') );
			 //alert(msg);
			}
		});	
	});
})();

