	// Cookies start //
	
	// Set_Cookie( 'test', 'it works', '', '/', '', '' );
	function Set_Cookie( name, value, expires, path, domain, secure )	{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires ){
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
	}
	
	// Get_Cookie( 'test' )
	function Get_Cookie( check_name ) {
		var a_all_cookies = document.cookie.split( ';' );
		var a_temp_cookie = '';
		var cookie_name = '';
		var cookie_value = '';
		var b_cookie_found = false;
		for ( i = 0; i < a_all_cookies.length; i++ )
		{
			a_temp_cookie = a_all_cookies[i].split( '=' );
			cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
			if ( cookie_name == check_name )
			{
				b_cookie_found = true;
				if ( a_temp_cookie.length > 1 )
				{
					cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
				}
				return cookie_value;
				break;
			}
			a_temp_cookie = null;
			cookie_name = '';
		}
		if ( !b_cookie_found )
		{
			return null;
		}
	}

	// Delete_Cookie('test', '/', '');
	function Delete_Cookie( name, path, domain ) {
		if (Get_Cookie(name)){
			document.cookie = name + "=" + 
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
		}
	}
	
	// Cookies end //

	// BW Check
	var bwKbps = Get_Cookie('bwCookieKbps');		// null or cookie value
	var bwSeconds;
	var bwCheckStarted = false;
	var bwReCheckStarted = false;
	var bwHandlerCalled = false;
	var bwSecs = new Array(1.9, 2.19, 2.8, 3.4, 4.8, 6, 9, 17.5);
	var bwPcts = new Array(178, 153, 130, 120, 110, 107, 105, 102.5);
	var bwTestFile = "bwcheck.jpg";
	var bwTestFileBytes = 459390;
	var bwUseCache = false;
	var bwReCheckURL = "";
	function bw_set_testfile(filename, bytes){bwTestFile = filename;bwTestFileBytes = bytes;}
	function bw_set_recheck(filename){bwReCheckURL = filename;}
	function exp_decay(t0, y0, t1, y1, tx){var t = t1-t0;var k = Math.abs(Math.log(y1/y0)/t);return y0 / Math.exp(k*tx);}	
	function bw_adjust_pct(sec){if (sec <= bwSecs[0]){return bwPcts[0];}var t0 = bwSecs[0];var y0 = bwPcts[0];for (i=1;i<bwSecs.length;i++){if (sec == bwSecs[i]){return bwPcts[i];}else if (sec < bwSecs[i]){var t1 = bwSecs[i];var y1 = bwPcts[i];return exp_decay(t0, y0, t1, y1, sec-t0);}t0 = bwSecs[i];y0 = bwPcts[i];}return 100;}
	function bw_adjust(kbps, sec){return bw_adjust_pct(sec) / 100 * kbps;}
	function bw_reset(){Delete_Cookie('bwCookieKbps');bwKbps = null;bwSeconds = null;}
	function bw_kbps(){if (bwKbps != null && bwKbps != ""){return bwKbps;}return 0;}
	var bwDateObj;
	var bwTimeStart;

	function bw_handler(){
		if (bwHandlerCalled){return;}
	  bwDateObj = new Date();
	  bwHandlerCalled = true;
		bwSeconds = (bwDateObj.getTime() - bwTimeStart) / 1000;
		var kbps = Math.round(bw_adjust((bwTestFileBytes / 128) / bwSeconds, bwSeconds));
		if (bwUseCache && kbps > 8000){
			bwUseCache = false;
			bwHandlerCalled = false;
			bwTestFile = bwReCheckURL;
			bwReCheckStarted = true;
			bw_check();
			return;
		}
		else if (kbps > 20000){
			bwReCheckStarted = false;
			bwHandlerCalled = false;
			bw_check();
			return;
		}
		else {
			//alert(kbps + " kbps")
		}
		bwKbps = kbps;
		Set_Cookie('bwCookieKbps', kbps, 14, '/', '', '');
		bw_check_ready();			
	}

	function bw_check(){
		if (document.images){
			var bwURL = bwTestFile;	
			if (!bwUseCache && !bwReCheckStarted){
				bwDateObj = new Date();
				bwURL = bwURL + "?"+bwDateObj.getTime();
			}
    	bwDateObj = new Date();
			bwTimeStart = bwDateObj.getTime(); 
			var image = new Image(); 
			image.src = bwURL;
			image.onload = bw_handler;
		}
	}

	function bw_check_once(){
		if (bwCheckStarted){return;}
		bwCheckStarted = true;
		if (bwKbps == null || bwKbps == ""){bw_check();}
	}