/**
##############################################################################################
#
#		Title: BBC Ouch - Accessibility Widget
#
#		Description: Behaviour for widget which allows customisable font size and colour schemes
#
##############################################################################################
#   $Source: $
#   $Author: $
#   $Revision: $
#   $Date: $ 
##############################################################################################
*/
AccessWidget = {
	/**
	 * Properties
	 */
	defaultTheme : "theme-default",
	fontSizes :{
		normal: "120%",
		bigger: "135%",
		biggest: "160%"
	},
	
	/**
	 * Function: init
	 *
	 * Description: Performs onLoad initialisation of accessibility widget
	 */
	init : function(){
		
		try {
			// Load cookie
			bbcjs.cookies.loadCookies();
			if (bbcjs.cookies.cookieData.mywayAccessPrefs) {
				AccessWidget.currentFontSize = bbcjs.cookies.cookieData.mywayAccessPrefs.s;
				AccessWidget.currentTheme = bbcjs.cookies.cookieData.mywayAccessPrefs.t;
			}else{
				AccessWidget.currentFontSize = AccessWidget.fontSizes.normal;
				AccessWidget.currentTheme = AccessWidget.defaultTheme;
			}

			// Set current options
			AccessWidget.setFontSize(AccessWidget.currentFontSize);
			AccessWidget.setTheme();

			// Add common event listeners
			if($('access-widget')) {
				bbcjs.dom.addEventListener($('font-normal'), 'click', AccessWidget.handleChangeFontSize);
				bbcjs.dom.addEventListener($('font-bigger'), 'click', AccessWidget.handleChangeFontSize);
				bbcjs.dom.addEventListener($('font-biggest'), 'click', AccessWidget.handleChangeFontSize);
				bbcjs.dom.addEventListener($('theme-default'), 'click', AccessWidget.handleClickTheme);
				bbcjs.dom.addEventListener($('theme-blue'), 'click', AccessWidget.handleClickTheme);
				bbcjs.dom.addEventListener($('theme-hiviz'), 'click', AccessWidget.handleClickTheme);
				bbcjs.dom.addEventListener($('theme-soft'), 'click', AccessWidget.handleClickTheme);

				// Unhide the widget
				$('switcher').style.display = 'block';
			}

			// Unhide the page now the theme has been applied
			AccessWidget.showPage();
		} 
		catch (e) {
			// A JS error occurred so make sure we unhide the page
			AccessWidget.showPage();
		}
	},
	
	/**
	 * Function: handleChangeFontSize
	 *
	 * Description: Handles click of font size control
	 */
	handleChangeFontSize : function(e){
		var sizeName = e.target.id.split('-')[1];
		AccessWidget.setFontSize(AccessWidget.fontSizes[sizeName]);
		bbcjs.dom.stopEvent(e);	// stop the event to prevent link to '#'
	},
	
	
	/**
	 * Function: handleClickTheme
	 *
	 * Description: Handles click of a theme control
	 */
	handleClickTheme : function(e){
		AccessWidget.currentTheme = e.target.id;
		AccessWidget.setTheme();
		history.go(0);
		bbcjs.dom.stopEvent(e);	// stop the event to prevent link to '#'
	},
	

	/**
	 * Function: setTheme
	 *
	 * Description: Dynamically inserts a link tag into the page, 
	 * causing the currently specified theme stylesheet to be loaded
	 */
	setTheme : function(){
		var e = document.createElement("link");
		e.type = 'text/css';
		e.rel = 'stylesheet'
		e.href = "/accessibility/style/" + AccessWidget.currentTheme + ".css";
		e.media = 'all';
		document.getElementsByTagName("head")[0].appendChild(e);
		/*var x=document.getElementByTag("img");
		var test = 1;
		for (i = 0; i < x.length; i++)
				{
						var pic = x[i];
						var picdir = pic.src;
						var z=picdir.replace("/images/","/images/" + AccessWidget.currentTheme + "/");
						pic.src = z;
				}
		*/
		//alert('hi');
		//var swap = 'swap';
		for (i = 1; i < 11; i++)
		{
			//alert('start' + i);
			if (document.getElementById("swap" + i))
			{
			//alert('in');
				var pic = document.getElementById("swap" + i);
				//alert (pic.id);
				var picdir = pic.src;
				var z=picdir.replace("/images/","/images/" + AccessWidget.currentTheme + "/");
				pic.src = z;
				//alert (pic.id);
				//pic.id = "swap" + i;
				//alert('out');
			} 
		}
		//alert('done');
		
		AccessWidget.saveCookie();
	},
	
	/**
	 * Function: setFontSize
	 *
	 * Description: Sets the relative font size of the document body
	 * 
	 * @param {Float} size - Font size to set (in %)
	 */
	setFontSize : function(size){
		AccessWidget.currentFontSize = size;
		if ($('blq-main'))
			$('blq-main').style.fontSize = size;
		if ($('popup'))
			$('popup').style.fontSize = size;
		AccessWidget.saveCookie();
	},
	
	/**
	 * Function: saveCookie
	 *
	 * Description: Saves cookie with current settings
	 */
	saveCookie : function(){
		bbcjs.cookies.setCookie('mywayAccessPrefs', {
				s: AccessWidget.currentFontSize,
				t: AccessWidget.currentTheme
			}, '+1y', '/accessibility');
	},
	
	/**
	 * Function: showPage
	 *
	 * Description: Unhides the page
	 */
	showPage : function(){
		document.body.style.display = 'block';
	}
};

/**
 * Compile-time executed code
 */
try {
	bbcjs.addOnLoadItem(AccessWidget.init);
}
catch (e) {
	// A JS error occurred so make sure we unhide the page
	window.setTimeout("AccessWidget.showPage()", 100);
}
/**
  * END
  */