    //Simple cookie class
    
    function Cookies() {
     
    	this.setCookie = function (name, value, seconds) {
     
    		if (typeof(seconds) != 'undefined') {
    			var date = new date();
    			date.setTime(date.getTime() + (seconds*1000));
    			var expires = "; expires=" + date.toGMTString();
    		}
    		else {
    			var expires = "";
    		}
     
    		document.cookie = name+"="+value+expires+"; path=/";
    	}
     
    	this.getCookie = function (name) {
     
    		name = name + "=";
    		var carray = document.cookie.split(';');
     
    		for(var i=0;i < carray.length;i++) {
    			var c = carray[i];
    			while (c.charAt(0)==' ') c = c.substring(1,c.length);
    			if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    		}
     
    		return null;
    	}
     
    	this.deleteCookie = function (name) {
    		this.setCookie(name, "", -1);
    	}
     
    }
    
    
    
    
    
    var start;
    var stop;
    var duration;
    
    var leftDuration;
    var rightDuration;
    
    
    
    //load a page in an iframe and time it. 
//arguments are the URL, the naming prefixes for the elements which are going to load it
 //and lastly the justone argument says we're just going to speed test one page and not do a comparison
 //
  function goIframe(url, idPrefix,justone) {
  
  	//optional argument justone
  	if(!justone)
  		var justone = false;
  
    
    	//strip http out of url and add it back in ;)
    	
    	url = url.replace(/^([\w]+:\/\/)?/,'');
    	url = 'http://' + url;
    
    	
    	var iframeName = 'the-iframe-'+ idPrefix;
    	var iframe = document.getElementById(iframeName);
    	var shade = document.getElementById('shade-' + idPrefix);
    	var load = document.getElementById('load-' + idPrefix);
    
    	document.getElementById('goiframe').value = 'Cancel!';
    
    	//iframe.onload = function() { iframeLoaded(iframe); };
    	//YAHOO.util.Event.onDOMReady(iframeId,iframeLoaded);
  	YAHOO.util.Event.addListener(iframeName, 'load', function () { iframeLoaded(iframe,idPrefix,justone); });
    	//show shade and loading message
    	shade.style.display = 'block';
    	load.style.display = 'block';
    
    	start = new Date().getTime();
    	iframe.src = url;
    
    		
    
    
    }
    
    
 function iframeLoaded(iframe,idPrefix,justone)  {
     
    	stop = new Date().getTime();
    	duration = stop - start;
    	durationSecs = duration / 1000;
    
    	//remove listener
    	YAHOO.util.Event.removeListener(iframe.id, 'load');
    	//iframe.src = "about:blank";
    	
    	//hide shade + show result panel
    	//Can that - we'll leave the shade
    	//shade = document.getElementById('shade-' + idPrefix);
    	//shade.style.display = 'none';
    
    	//hide loading message & display loaded message	
    	loadMessage = document.getElementById('load-' + idPrefix);
    	loadedMessage = document.getElementById('load-complete-' + idPrefix);
    	
    	loadMessage.style.display = 'none';
    
    
    	loadedMessage.innerHTML = '<a href="' + iframe.src + '" target=_blank>' + iframe.src + '</a>' + '<BR /> loaded in:<h3>' + durationSecs.toFixed(2) + 's</h3>';
    	loadedMessage.style.display = 'block';
    
    
    	//we should show the load complete message here with the duration
    
    
    	//do we need to check any more?
    	if(iframe.id == 'the-iframe-left')  {
    		leftDuration = duration;
    		//process right
 		if(justone == false) 
    			goIframe(document.getElementById('url-right').value, 'right');
 		else  {
			if(justone == false)
 				document.getElementById('goiframe').value = 'Compare!';
			else
				document.getElementById('goiframe').value = 'Run test!';
 			postChecks(justone);
 
 		}
 
    	}  else {
    		rightDuration = duration;
    		document.getElementById('goiframe').value = 'Compare!';
		postChecks(justone);
    	}
    }
    
    
    //remove any listeners on the iframe load events
    //reset all the timers
    //hide all the loaded,loading overlays
    //change the submit button text back to Compare
    function cancelIframe()  {
    	YAHOO.util.Event.removeListener(document.getElementById('the-iframe-left'), 'load');
    	YAHOO.util.Event.removeListener(document.getElementById('the-iframe-right'), 'load');
    	rightDuration = 0;
    	leftDuration = 0;
    
    	loadMessage = document.getElementById('load-left');
    	loadedMessage = document.getElementById('load-complete-left');
    
 	//document.getElementById('shade-left').style.display = 'none';
    	loadMessage.style.display = 'none';
    	loadedMessage.style.display = 'none';
    
 	//document.getElementById('shade-right').style.display = 'none';
  
    	loadMessage = document.getElementById('load-right');
  	if(loadMessage != null)  {
    	loadedMessage = document.getElementById('load-complete-right');
    
    	loadMessage.style.display = 'none';
    	loadedMessage.style.display = 'none';
    
  	}
    
    	document.getElementById('goiframe').value = 'Compare!';
    	
    
    
    
    }
    
 function postChecks(justone)  {
    	//do stuff with the results
    	//1. submit to server (ajax or in the get request or in the cookie - make sure whatever it is is crumbed)
    	if(rightDuration > leftDuration)
    		left = 'quicker';
    	else
    		right = 'quicker';
    
 	submitResults(justone);
    }
    
 function submitResults(justone)  { 	
 	 //set cookie and redirect to results page
    	if (navigator.cookieEnabled || typeof(navigator.cookieEnabled) != "undefined") {
    		var c = new Cookies();
  		//just testing a single page so send to a different page with different cookies
  		if(justone == true)  {
  			c.setCookie('url', document.getElementById('url-left').value);
  			c.setCookie('duration', leftDuration);
  			c.setCookie('crumb', document.getElementById('crumb').value);
  			setTimeout("document.location.href = '/index/single-results';", 600);
  		}  else {
  		//comparing two URLs
  	
    		c.setCookie('url1', document.getElementById('url-left').value);
    		c.setCookie('url2', document.getElementById('url-right').value);
    		c.setCookie('duration1', leftDuration);
    		c.setCookie('duration2', rightDuration);
    		c.setCookie('crumb', document.getElementById('crumb').value);
    
		setTimeout("document.location.href = '/index/results';", 600);
 		}
 	
    	
    	
    
 	} else {
 		alert("Can't send in the results of your test as you don't have cookies enabled");
 	}
 
 	
 	
 	
 }
    
    function addressOnClick(id)  {
    	var itemNode = document.getElementById(id);
    	var itemValue = itemNode.value;
    	if(itemNode.selectionStart != itemNode.selectionEnd)
    		return;
    	
    	if(itemValue.match(/http:\/\/$/))  {
    		itemNode.selectionStart = itemNode.textLength;
    		itemNode.selectionEnd = itemNode.textLength;
    	}  else {
    		itemNode.select();
    	}
    
    }
