
var _KeyOrClickCallback = null;


/*!******************************************************************************
 *  used to initiate acessibility functions
 * Dependency on JQuery
 */
ie.o2.vep.accessibilityInit = function() {
	$.log("ie.o2.vep.accessibilityInit:start");
	
	var cContrastColour =( window.location.href.indexOf("contrastReset")>=0)?"reset":ie.o2.vep.readCookie('contrast-colour');
	ie.o2.vep.doChangeContrastColours(cContrastColour?cContrastColour:"reset");
	
	var isAnimOff =  ( (ie.o2.vep.readCookie('no-animation')!=null) && (window.location.href.indexOf("animReset")< 0));
	ie.o2.vep.setUseAnimFlag(isAnimOff);
	
	$(document).ready(ie.o2.vep.initAccessActions);
	
	
	  $.getScript("/js/jquery.scrollTo-min.js");
	  

	$.log("ie.o2.vep.accessibilityInit:end");
}

/*!******************************************************************************
 * used to associate accessibility handlers with accessibility panel
 */

ie.o2.vep.initAccessActions = function() {
	$.log("ie.o2.vep.initAccessActions:start");	
	
	$(".key-or-click").each(
		function(){
			$.log(".key-or-click init");
			$(this).bind('click keypress', ie.o2.vep.onKeyPressOrClick);
		}
	);
	
		var cAccess = ie.o2.vep.readCookie('accessPanel');
      if (cAccess && (cAccess=="true") ) {
		  $("#accessPanel").addClass("show-accessPanel");
		  $.ariaShow("#accessPanel");
		  $("#headerAccessLink").html("Hide Accessibility Options");
	  }else{
	 	 $.ariaHide("#accessPanel");
		 $("#headerAccessLink").html("Show Accessibility Options");
	  }
	  
	  	  $("#dash-ctn").focus(function(){
			if( $("#dash-ctn").val()=="Mobile/Username" ){
				$("#dash-ctn").val("");
			}
	   });
	  
	  $("#dash-pass").focus(function(){
			if( $("#dash-pass").val()=="??????" ){
				$("#dash-pass").val("");
			}
	   });
	  
 $("#keywords").focus(function(){
			if( $("#keywords").val()=="Search o2.ie" ){
				$("#keywords").val("");
			}
	   });
	  
	  
	  var cTextInfo = ie.o2.vep.readCookie('accessPanelSizeInfo');
      if (cTextInfo && (cTextInfo=="true") ) {
		  $.ariaShow("#textSizeChangeInfo");
		  $("#textSizeChangeInfo").addClass("open");
	  }else{
	 	 $.ariaHide("#textSizeChangeInfo");
		 $("#textSizeChangeInfo").removeClass("open");
	  }
	  
	$.log("ie.o2.vep.initAccessActions:end");	
}


/*!******************************************************************************
 * item specific helper functions
 */
 
 /* skip to search */
 ie.o2.vep.onSkipToSearchAction = function(elem) { 
	   $.log("ie.o2.vep.onSkipToSearchAction :start");
 	     $.scrollTo("#keywords", 400);
		 $("#keywords").focus();
	   $.log("ie.o2.vep.onSkipToSearchAction :end");
}
 
 /* text size toggles */
  
ie.o2.vep.onToggleTextSizeAction = function(elem) { 
	   $.log("ie.o2.vep.onToggleTextSizeAction :start");
	   
 	    ie.o2.vep.doToggleTextSizePanel();
	   
	   $.log("ie.o2.vep.onToggleTextSizeAction :end");
}

 ie.o2.vep.doToggleTextSizePanel = function(elem) { 
	   $.log("ie.o2.vep.doToggleTextSizePanel :start");
	   
 			if(  $("#textSizeChangeInfo").hasClass("open") ){
				 $.log("textSizeInfo click hasClass(\"open\")");
				 $.ariaHide("#textSizeChangeInfo");
				 $("#textSizeChangeInfo").removeClass("open");
				 ie.o2.vep.createCookie('accessPanelSizeInfo', "false", 365);
			 }
			 else{
				 $.log("textSizeInfo click does not hasClass(\"open\")");
				 $("#textSizeChangeInfo").addClass("open");
				 ie.o2.vep.createCookie('accessPanelSizeInfo', "true", 365);
				 $.ariaShow("#textSizeChangeInfo");
				  //$.scrollTo("#textSizeChangeInfo", 700);
				  $("#textSizeChangeInfo").focus(); 
			 }
		
	   $.log("ie.o2.vep.doToggleTextSizePanel :end");
}

 /* access panel toggles */

 ie.o2.vep.onToggleAccessPanelAction = function(elem) { 
	   $.log("ie.o2.vep.onToggleAccessPanelAction :start");
	   
 	    ie.o2.vep.doToggleAccessPanel();
	   
	   $.log("ie.o2.vep.onToggleAccessPanelAction :end");
}

 ie.o2.vep.doToggleAccessPanel = function(elem) { 
	   $.log("ie.o2.vep.doToggleAccessPanel :start");
	   
		if($("#accessPanel").hasClass("show-accessPanel")){
				  $("#accessPanel").removeClass("show-accessPanel");
				  ie.o2.vep.createCookie('accessPanel', "false", 365);
				  $.ariaHide("#accessPanel");
				  
				  $("#headerAccessLink").html("Show Accessibility Options");
			  }
			  else{
				  	$("#accessPanel").addClass("show-accessPanel");
					 $.ariaShow("#accessPanel");
					 ie.o2.vep.createCookie('accessPanel', "true", 365);
					 $("#headerAccessLink").html("Hide Accessibility Options");
					// $.scrollTo("#accessPanel", 400);
					$("#accessPanel a:first").focus();
		}
		
	   $.log("ie.o2.vep.doToggleAccessPanel :end");
}


 
 /* listen to the website */
 
ie.o2.vep.onListenToSiteAction = function(elem) { 
	   $.log("ie.o2.vep.onListenToSiteAction :start");
	   
 	   var browseAloud = "This link will bring you to the Browse Aloud website where you can download free software which will read text on this website aloud. This software may assist users with a visual impairment or dyslexia, but it will not be of use to completely blind users. Do you wish to continue to the site?";
	   if(confirm(browseAloud)){
		   window.location.href=$(elem).attr('href');
	   }
	   
	    $.log("ie.o2.vep.onListenToSiteAction :end");
}
 
 /* animations */
ie.o2.vep.onAnimationChangeAction = function(elem) {
	$.log("ie.o2.vep.onAnimationChangeAction :start");


	var turnOn = $("body").hasClass("no-animation");
	
	ie.o2.vep.doToggleAnimation();
	
	if(turnOn){
		if(confirm("do you want to refresh the page and turn animations on?")){
			window.location.reload(true)
		}
	}

	$.log("ie.o2.vep.onAnimationChangeAction :end");	
	return false;	
}

ie.o2.vep.doToggleAnimation = function() {
	$.log("ie.o2.vep.doToggleAnimation :start");

	var result = ie.o2.vep.setUseAnimFlag(!$("body").hasClass("no-animation"));
	
	$.log("ie.o2.vep.doToggleAnimation :end");	
	return result;	
}

ie.o2.vep.setUseAnimFlag = function(isAnimOff) {
	$.log("ie.o2.vep.setUseAnimFlag :start");

	if(isAnimOff){
		$("object,embed").remove();
		$("body").addClass("no-animation");
		ie.o2.vep.createCookie('no-animation', '0', 365);
		$("#toggleAnimLink").html("Turn on animations and moving or flickering text");
	}
	else{
		$("body").removeClass("no-animation");
		ie.o2.vep.eraseCookie('no-animation');	
		$("#toggleAnimLink").html("Turn off animations and moving or flickering text");
	}

	$.log("ie.o2.vep.setUseAnimFlag :end");	
	return isAnimOff;	
}
 
 /* contrast */
ie.o2.vep.onContrastChangeAction = function(elem) {
	$.log("ie.o2.vep.onContrastChangeAction :start");

	var contrastClass = ie.o2.vep.getClassSuffix(elem,"contrast-");
	 ie.o2.vep.doChangeContrastColours(contrastClass);

	$.log("ie.o2.vep.onContrastChangeAction :end");	
	return false;	
}

ie.o2.vep.doChangeContrastColours = function(contrastClass) {
	$.log(contrastClass); 
	 $("body").removeClass("high-contrast-yellow-blue");
	 $("body").removeClass("high-contrast-yellow-black");
	 $("body").removeClass("high-contrast-white-black");
	 $("body").removeClass("high-contrast-black-white");
	 if(contrastClass=="reset")
		ie.o2.vep.setContrastMode("Normal text");
	 else{
		ie.o2.vep.setContrastMode("High contrast");
	 	$("body").addClass(contrastClass);
	 }
	 
	 ie.o2.vep.createCookie('contrast-colour', contrastClass, 365);
 }
 
/*!******************************************************************************
 * generic input helper functions
 */
 
ie.o2.vep.onKeyPressOrClick = function(e) {
	$.log("ie.o2.vep.onKeyPressOrClick:start");
	$.log(e.type);
	if(e.type == 'keypress'){
	 	var code = (e.keyCode ? e.keyCode : e.which);
		if(code!= '13'  && code != '32') return true;
	}
	
	var callbackFunc=ie.o2.vep.getKeyOrClickHandler(this);
	$.log(callbackFunc);
	 ie.o2.vep.doKeyOrClickCallback(callbackFunc,this);
	 $.log("ie.o2.vep.onKeyPressOrClick:end-after-callback");	
	 return false;
}

ie.o2.vep.getKeyOrClickHandler = function(elem)
{
	$.log("ie.o2.vep.getKeyOrClickHandler:start");
	var suffix = ie.o2.vep.getClassSuffix(elem, "k-or-c-func-");	
	$.log(suffix);
	return suffix;
}

ie.o2.vep.getClassSuffix = function(elem, prefix)
{
	var suffix="no-suffix";
	$.log("ie.o2.vep.getClassSuffix:start");
	var jElem = jQuery(elem);
	//$.log( jElem.attr('class') );
	var classArr = jElem.attr('class').split(' ');
	//$.log(classArr);
	for(i=0;i<classArr.length;i++){
		$.log(classArr[i]);
		if(classArr[i].indexOf(prefix)>=0)
		{
			var suffix=classArr[i].replace(prefix,"");
			//$.log(suffix);
			return suffix;
		}
	}	
	
	return suffix;
}


ie.o2.vep.doKeyOrClickCallback = function(funcName,elem)
{
	if(funcName=="no-suffix") return false;
	
	_KeyOrClickCallback = jQuery(elem) ;
	var funcCall = "ie.o2.vep."+funcName + "(_KeyOrClickCallback);";	
	$.log("ie.o2.vep.doKeyOrClickCallback : "+funcCall);	
	return eval(funcCall);
}



/*!******************************************************************************
 *  used to switch stylesheets
 * Dependency on JQuery
 */

ie.o2.vep.setContrastMode = function(styleName) {
	$.log("ie.o2.vep.setContrastMode:start");
	$.log("ie.o2.vep.setContrastMode:--"+styleName);
		if(styleName=="High contrast"){
			$("body").addClass("high-contrast");
			ie.o2.vep.switchCSS ('High contrast', false);
			ie.o2.vep.switchCSS ('Normal text', true);
		}
		else{
			$("body").removeClass("high-contrast");
			ie.o2.vep.switchCSS ('High contrast', true);
			ie.o2.vep.switchCSS ('Normal text', false);
		}
		
	ie.o2.vep.createCookie('contrast-style', styleName, 365);
	$.log("ie.o2.vep.setContrastMode:end");
}

ie.o2.vep.switchCSS = function(styleName, flag) {
	$.log("ie.o2.vep.switchCSS:start");
	
	$('link[rel*=style][title]').each(function(i) 
			{
				if (this.getAttribute('title') == styleName){ this.disabled = flag;
				$.log("ie.o2.vep.switchCSS:set="+this.getAttribute('title')+"/"+flag);
				}
			});
	$.log("ie.o2.vep.switchCSS:end");
}
