	
	////////////////////////////////////////////
		
	// Cookie Functions
	
	var expDays = 1
	
	function GetCookie (name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
	var j = i + alen;
	if (document.cookie.substring(i, j) == arg)
	return getCookieVal (j);
	i = document.cookie.indexOf(" ", i) + 1;
	if (i == 0) break;
	}
	return null;
	}
	
	function SetCookie (name, value) {
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	((path == null) ? "" : ("; path=" + path)) +
	((domain == null) ? "" : ("; domain=" + domain)) +
	((secure == true) ? "; secure" : "");
	}
	
	function DeleteCookie (name) {
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
	}
	var exp = new Date();
	exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
	
	function amt(){
	var count = GetCookie('count')
	if(count == null) {
	SetCookie('count','1')
	return 1
	}
	else {
	var newcount = parseInt(count) + 1;
	DeleteCookie('count')
	SetCookie('count',newcount,exp)
	return count
	   }
	}
	
	function getCookieVal(offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
	}
	
	////////////////////////////////////////////
	
	// Generate random number for cookie/logusercookie
	
	function genRandom(len){
		var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
		var string_length = len;
		var randomstring = '';
		for (var i=0; i<string_length; i++) {
			var rnum = Math.floor(Math.random() * chars.length);
			randomstring += chars.substring(rnum,rnum+1);
		}
		return randomstring	
	}
	

	// Logging Functions
			
	function log_this(event_id, event_desc){
		
		// check if logusercookie cookie is set. if not, set it
		
		var session_cookie = GetCookie("logusercookie");
		
		if(session_cookie == null) {
			var session_cookie = genRandom(32);
					
			// create temp cookie
			document.cookie="logusercookie="+session_cookie;
			
		}		
		
		//////////////////////////////////////////////////////////
		
		// check if repeat visit cookie is set
		
		var repeatVisitFlag = GetCookie("loggerRepeatVisit[flag]");
									
		if(repeatVisitFlag == null) {	// spanking new visitor
			
			var date = new Date();
			date.setTime(date.getTime()+(7*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
			
			var visitFlag = 0;	// 0 = new visitor			
			document.cookie="loggerRepeatVisit[flag]="+visitFlag+expires+"; path=/";
			document.cookie="loggerRepeatVisit[id]="+session_cookie+expires+"; path=/";	
			
		} else {	// repeatVisit cookie is set. check if was set in this session. if it was, maintain its current flag setting
			
			var repeatVisitId   = GetCookie("loggerRepeatVisit[id]");
			var repeatVisitFlag = GetCookie("loggerRepeatVisit[flag]");
			
			if(repeatVisitId == session_cookie){	// repeatVisit cookie was set in this session, maintain its current flag setting
						
				var date = new Date();
				date.setTime(date.getTime()+(7*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
				
				document.cookie="loggerRepeatVisit[flag]="+repeatVisitFlag+expires+"; path=/";
				document.cookie="loggerRepeatVisit[id]="+repeatVisitId+expires+"; path=/";
								
			} else {	// repeatVisit cookie is set but not in this session, set flag to 1 and id to session_cookie
				
				var date = new Date();
				date.setTime(date.getTime()+(7*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
								
				var visitFlag = 1;	// 1 = repeat visitor				
				document.cookie="loggerRepeatVisit[flag]="+visitFlag+expires+"; path=/";
				document.cookie="loggerRepeatVisit[id]="+session_cookie+expires+"; path=/";
				
			}
						
		}		
		
		// get current loggerRepeatVisit flag setting to send in url
		// if the cookie could not be set, set flag to 2
		
		var repeatVisitFlag = GetCookie("loggerRepeatVisit[flag]");
		
		if(repeatVisitFlag == null) {	// cookie could not be set
		
			repeatVisitFlag = 2;
		
		}

		function getRefererer(){
				if (document.referrer&&document.referrer!=""){
				  return document.referrer;
				} else {
				  return 'Unknown';	
				}

		}
		//////////////////////////////////////////////////////////
					
							
		var debug = 0;	// 0 = hide, 1 = show			
						
		// Check if iframes exist
		
		var all_iframes = document.getElementsByTagName("iframe");
		var count_iframes = (all_iframes.length);
		
		if (count_iframes <= 2) {
			
			// Create 10 blank iframes
			
			var i;
			for(i=0; i<=9; i++) {			 		
							
				var iframe, iframeDocument;
		
				if (document.createElement) { 
					
				  try {
				  
				    var tempIFrame = document.createElement('iframe');
				    tempIFrame.setAttribute('name','marotori_log' + i );		    
				    tempIFrame.setAttribute('id','marotori_log' + i);
				    tempIFrame.style.position='absolute';

				    if(debug == '1'){
					    thetop = i * 200 + 'px';
					    tempIFrame.style.visibility='visible';
					    tempIFrame.style.top=thetop;
					    tempIFrame.style.left='300px';
					
					} else{
					    tempIFrame.style.visibility='hidden';
					    tempIFrame.style.top='-1000px';
					    tempIFrame.style.left='-1000px';
					}
				    
				    var iframe = document.getElementsByTagName("body").item(0);
				    	iframe.appendChild(tempIFrame);
				    
				    
				    if (document.frames) {
				      
				      /* IE5 Mac only allows access to the document
				      of the IFrame through frames collection */
				        
				    	var iframe = document.getElementById('marotori_log' + i);
				    }
				      
				  } catch (ex) {
				    
				    /* IE5 PC does not allow dynamic creation and 
				    manipulation of an iframe object. Instead, we'll fake
				    it up by creating our own objects. */
				     				     				     				     
				    var iframeHTML = '\<iframe id="' + 'marotori_log' + i + '" name="' + 'marotori_log' + i + '"';
				    iframeHTML += ' style="position:absolute;visibility:hidden;top:-1000px;left:-1000px';
				    iframeHTML += '"><\/iframe>';
				    document.body.innerHTML += iframeHTML;
				    var iframe = new Object();
				    iframe.document = new Object();
				   
				  }
				  
				  if (iframe.contentDocument) { // For NS6
				    iframeDocument = iframe.contentDocument; 
				  } else if (iframe.contentWindow) { // For IE5.5 and IE6
				    iframeDocument = iframe.contentWindow.document;
				  } else if (iframe.document) { // For IE5
				    iframeDocument = iframe.document;
				  } else { // error!
				   //alert("Error: could not find IFRAME document");
				  }
				 
				}
				
			}
				
		}
		
		// Check which iframe to target
				
		if (window['target_iframe'] == undefined) {
			target_iframe = 2;
		} else if (target_iframe == 9) {			
			target_iframe = 2;
		} else {
			target_iframe = target_iframe + 1;
		}
				
		var iframe_to_target = document.getElementsByTagName("iframe");
		var dest_iframe = iframe_to_target.item(target_iframe).id;
				
						
		// Get all javascript logs
		
		var cpu_class = navigator.cpuClass;
		var platform = navigator.platform;
		//var web_browser = navigator.appName;
		var screen_size = screen.width + ' x ' + screen.height;
		var colour_depth = screen.colorDepth + 'bit';
		
		// Get date/time (timestamp)
		
		var stamp = new Date();		
		
		var	Y = String(stamp.getFullYear());
		
		var	M = stamp.getMonth() + 1;
				
		if (M < 10){
			M = '0' + String(M);
		} else {
			M = String(M);
		}		
		
		var	D = stamp.getDate();
		if (D < 10) {
			D = '0' + String(D);
		} else {
			D = String(D);
		}
		
		var	H = String(stamp.getHours());
		if (H < 10) {
			H = '0' + String(H);
		} else {
			H = String(H);
		}
			
		var	I = String(stamp.getMinutes());
		if (I < 10) {
			I = '0' + String(I);
		} else {
			I = String(I);
		}
		
		var	S = String(stamp.getSeconds());
		if (S < 10) {
			S = '0' + String(S);
		} else {
			S = String(S);
		}
				
		//var local_time_stamp = parseInt(Date.UTC(Y, M, D, H, M, S));		
		var local_time_stamp = Y + M + D + H + I + S;		
				
		
		// Generate the iframe src location.
		
		var loc = "http://www.theartsource.org/admin/xplugins/logger/scripts/log_this.php?";
		loc += "event_id=" + event_id;
		loc += "&event_desc=" + event_desc;
		loc += "&cpu_class=" + cpu_class;
		loc += "&platform=" + platform;
		loc += "&screen_size=" + screen_size;
		loc += "&colour_depth=" + colour_depth;
		loc += "&local_time_stamp=" + local_time_stamp;
		loc += "&session_cookie=" + session_cookie;
		loc += "&repeat_visit=" + repeatVisitFlag;
		loc += "&referer=" + getRefererer();

		eval(dest_iframe + ".location.href=loc");


	}

