
function AjaxSkinClickTracker(skinID, skinPath, skinBkgColor, skinURL) {
	
    var me;
    if (this.constructor == AjaxSkinClickTracker){
        me = this;
    }else{
        me = arguments[arguments.length-1];
    }
	
	
	
	// Configuration
	// ------------
	me.apiURL = 'http://www.dude.com/tracker/';
	
	me.displayCount = false;
	me.displayPercent = true;
	me.displayLabel = true;
	me.numberDays = 28; //1-30
	me.clickOffSet = 10;
	// -----------

	me.url = encodeURIComponent( document.location.href );
	me.listeners = [];
	
	
	
	me.addLinkTracking = function(){
		if (!document.getElementsByTagName) return false;
	
		// Create ajax objects
		me.clickedXHR = new XHRSkinConnection();
		
		// find divs in document 
		//divs = document.getElementsByTagName('a');
		divs = document.getElementsByTagName('div');
	
		// if link does have a id add one
		for (var i = 0; i < divs.length; i++) {
			if(divs[i].id == 'skin'){
				me.addEvent( divs[i], 'mousedown', me.recordClick, false );
			}
		}
	}
	
	me.recordClick = function(e) {	
		// records click information using ajax		
		
		if (e.button==0 || e.button ==1){ 
			/*
			 * Track which mouse button is pressed IE: 1-left, 2-right		Mozilla: 0: left, 2: right	
			 * Allow only if left click 
			 */
			
			source = me.findSourceElement(e);
			var tag = source.tagName;		
			var id,target
			//alert(source);
			
			if(tag == 'DIV'){
				id = source.getAttribute('id');	
				//alert( 'div: '+ id);
			}
			
			if(id == 'skin'){	
				// if skin is clicked, open the skin url
				//window.location.assign("http://www.w3schools.com");	
				window.open(skinURL);
				
				var ajaxURL = me.apiURL + 'addclick.php?skinID=' + skinID + '&updatSkinClick=1&rand='+Math.random();		
				
				me.clickedXHR.send( ajaxURL, 'get', me.beenClicked, null  );
			}
			
		}
		
	}
	
	
	me.beenClicked = function( obj ) {
		
		//alert( obj.responseText );
	}
	
	me.addEvent = function( elm, evType, fn, useCapture ) {
		// Updated version which captures passed events 
		if (elm.AddEventListener) 
		{ 
			elm.AddEventListener(evType, fn, useCapture); 
			return true; 
		} else if (elm.attachEvent) { 
			var r = elm.attachEvent('on' + evType, fn);
			me.listeners[me.listeners.length] = [ elm, evType, fn ];
			return r; 
		} else {
			var xEventFn = elm['on' + evType];
			if (typeof elm['on' + evType] != 'function') 
			{
				elm['on' + evType] = fn;
			} else {
				elm['on' + evType] = function(e) { xEventFn(e); fn(e); };
			}
		}
	}
	
	me.unload = function(){
		// page unload event which removes circular references
		// that may cause memory leaks in IE 5/6
		if( window.attachEvent ){
			for (var i = 0; i < me.listeners.length; i++) {
				me.listeners[i][0].detachEvent( 'on' + me.listeners[i][1], me.listeners[i][2] );
			}
		}
	}
	
	me.findSourceElement = function(e) {
		// finds event source
		if (typeof e == 'undefined')
			var e = window.event;

		var source;
		if (typeof e.target != 'undefined') 
		{
			source = e.target;
		} else if (typeof e.srcElement != 'undefined') {
			source = e.srcElement;
		} else {
			return true;
		}

		if (source.nodeType == 3)
			source = source.parentNode;
		
		return source;
	}
	
	
	
	me.loadSkin = function(){
		// load the skin
		me.initSkin();
		document.getElementById('skin').style.background = skinBkgColor + ' url('+ skinPath + ') no-repeat scroll center top ';	
	}
	
	
	me.initSkin = function(){
		// initialize the skin clickable height and width 			
		document.getElementById('skin').style.height = document.documentElement.scrollHeight + 'px';
		document.getElementById('skin').style.width =  document.documentElement.scrollWidth + 'px';		
		document.getElementById('skin').style.cursor = 'pointer';
		document.getElementById('mainInner').style.cursor = 'default';			
	}
	
	//------------------------------------------
	
	me.addEvent( window, 'load', me.loadSkin, false );
	
	me.addEvent( window, 'load', me.addLinkTracking, false );
	
	me.addEvent( window, 'resize', me.initSkin, false );
	
	me.addEvent( window, 'scroll', me.initSkin, false );
	
	me.addEvent( window, 'unload', me.unload, false );

}



function XHRSkinConnection() { 
    var me;
    if (this.constructor == XHRSkinConnection){
        me = this
    }else{
        me = arguments[arguments.length-1]
    }
    
	me.Request = me.createSkinXHR();
	 
    me.handler = function () {
		if (me.Request.readyState == 4) {	
			//alert(me.Request.responseText);
			if (me.Request.status == 200) {
				me.processResponse();
			}
		}
	}
	
	me.send = function ( url, action, fnOK ) {
	    me.URL = url;
		me.Action = action;
		me.fnOK = fnOK;
		if( me.Request != null ){
			me.Request.open(me.Action, me.URL, true);
			me.Request.onreadystatechange = me.handler;
			me.Request.send(null);
		}else{
			alert('Could not load XHR object');
		}
	}
}

XHRSkinConnection.prototype.createSkinXHR = function() {
	
	try{ return new XMLHttpRequest(); } catch (e)
	{
		try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e)    
		{
			try{ return new ActiveXObject("Microsoft.XMLHTTP");} catch (e)
			{
				alert("Your browser does not support AJAX!");
				return null;
			}
		}
	}
}

XHRSkinConnection.prototype.processResponse = function () {
	this.fnOK(this.Request);
}
