 /*
 *
 * Detect Image Support
 * Requires latest jQuery (jquery.com)
 *
 * By Jean-Luc Thiebaut (airlock.com)
 * 2007-09-28
 *
 * Update Sim Hoang (airlock.com)
 * 2008-05-20
 *
 */

 
// set globals
var css_path = "/radio3/freethinking/2008/assets/css/image-replacement.css";
var image_path = "/radio3/freethinking/2008/assets/ui/image-detect.gif";
var test_image_id = "detect-image-test";
var fallback_timeout = 5000;
var cookie_expire = 1200000; // 20 mins

function detect_image_support() {
	
	// create a test image
	var image = new Image();
	image.src = image_path+"?"+get_random();
	image.id = test_image_id;
	
	
	// Gecko-based / Safari executes next line when images are NOT supported
	if(image.complete) {
	
		$("body")
			.removeClass("checking-image-support")
			.addClass("no-image-support");
			
		create_cookie('image_support','false',cookie_expire);
				
		return;
	}

	
	setInterval(function() {
		var bc = $("body").attr("class");
		//alert("on interval BODY CLASS = "+ bc);
	}, 5000);
	
	// otherwise continue and set image onload
	image.onload = function() {
	
		
		var bc = $("body").attr("class");
		//alert("on image load body = " + bc + " & cookie = " + read_cookie("image_support"));
			
		// fixes IE issue after reactivating images, will default back to no-image-support mode for first refresh
		if($.browser.msie && read_cookie("image_support") == "false" && bc.indexOf("no-image-support") != -1) {
			erase_cookie('image_support');
			return;
		}
		
		create_cookie('image_support','true',cookie_expire);
		
		// assign image-support class
		$("body")
			.addClass("image-support")
			.removeClass("checking-image-support")
			.removeClass("no-image-support");
		
		// clear the interval 
		clearInterval(image_detect_interval);
		
	}

	
	// 
	if(!read_cookie("image_support") || read_cookie("image_support") == "true") {
		var image_detect_interval = setInterval("flag_image_support()", fallback_timeout);
	
	// else call fallback function immediately
	} else if (read_cookie("image_support") == "false") {
		
		flag_image_support();

	} 


}

// in the absence of image.onFail create a fallback timeout to revert to no-image-support
function flag_image_support() {
	
	var bc = $("body").attr("class");
		
	// if image support isn't flagged OR is the script is still checking
	if(bc.indexOf("image-support") == -1 || bc.indexOf("checking-image-support") != -1) {
		
		// assign no-image-support class
		$("body")
			.removeClass("checking-image-support")
			.removeClass("image-support")
			.addClass("no-image-support");
			
		create_cookie('image_support','false',cookie_expire);
		
	}
	
}


// create a random number
function get_random() {
    var ranNum= Math.floor(Math.random()*100000000);
    return ranNum;
}


// create cookie
function create_cookie(name,value,seconds) {
	if (seconds) {
		var date = new Date();
		date.setTime(date.getTime()+(seconds));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/radio3/freethinking/";
}


// read cookie
function read_cookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

// erase cookie
function erase_cookie(name) {
	create_cookie(name,"",-1);
}

// attach style sheet to the head of document; only executed by JS enabled browsers
var headID = document.getElementsByTagName("head")[0];
var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
cssNode.href = css_path;
cssNode.media = 'screen';
headID.appendChild(cssNode);


jQuery(document).ready(function() {
	
	// initialise image support detection
	detect_image_support();
	
});

