/*! Common Javascript */



 var debug=false;
jQuery.extend({
	log: function(msg) {
		if (debug) {
			if (window.console) {
				// Firefox & Google Chrome
				console.log(msg);
			}
			else {
				// Other browsers
				$("body").append("<div style=\"width:600px;color:#FFFFFF;background-color:#000000;\">" + msg + "</div>");
			}
			return true;
		}
	}
});

/* activate debug */

 var cDebug = readCookie('js-debug') || (window.location.href.indexOf("js-debug") >= 0);
	 
      if (cDebug){
	   debug=true;
	   jQuery.log("debug active:js-debug flag given");
	  }
	  

/*!******************************************************************************
 * Namespacing function - to keep our functions organised and out of the Global namespace
 * http://blogger.ziesemer.com/2008/05/javascript-namespace-function.html
 * 
 * By Mark A. Ziesemer
 * 
 */

String.prototype.namespace = function(separator) {
	$.log("String.prototype.namespace:start");
	var ns = this.split(separator || '.'),
	o = window,
	i,
	len;
	for (i = 0, len = ns.length; i < len; i++) {
		o = o[ns[i]] = o[ns[i]] || {};
	}
	$.log("String.prototype.namespace:end");
	return o;
};





/*
 * Here we'll create our O2 VEP site Namespace
 */
"ie.o2.vep".namespace();

/*!******************************************************************************
 * Namespaced Element Iterator/Class-adding function
 * Dependency on JQuery
 */
ie.o2.vep.iteratedItems = function(elementRef, scope) {
	$.log("ie.o2.vep.iteratedItems:start");
	if(scope && scope != 'undefined') {
		elements = jQuery(elementRef, scope);
	}
	else {
		elements = jQuery(elementRef);
	}

	elements.each(
		function (i) {
			var nName = this.nodeName;
			jQuery(this).parent().children(':first').addClass("first");
			jQuery(this).parent().children(':odd').addClass("odd");
			jQuery(this).parent().children(':even').addClass("even");
			jQuery(this).parent().children(':last').addClass("last");
		});
	$.log("ie.o2.vep.iteratedItems:end");
}

/*!******************************************************************************
 * Namespaced Linkbox function
 * Dependency on JQuery
 */
ie.o2.vep.linkBox = function(elementRef, linkSource, hideLink) {
	$.log("ie.o2.vep.linkBox:start");
	jQuery(elementRef).css('cursor','pointer');
	var hideLink = ( hideLink && hideLink != 'undefined' ) ? true : false;
	
	if(hideLink && hideLink != 'undefined') {
		jQuery(elementRef).find(linkSource).addClass('hide');
	}
		
	jQuery(elementRef).live("click",
		function(e) {
			location.href = jQuery(this).find(linkSource).attr("href");
			return false;
		});

		jQuery(elementRef).live("keypress",
		function(e) {
			if( e.which != '13' ) return true;
			location.href = jQuery(this).find(linkSource).attr("href");
			return false;
		});
	$.log("ie.o2.vep.linkBox:end");
}

/*!******************************************************************************
 * Activating the module functions when the document has loaded
 * 
 * This is pure for the benefit of the static page
 */
jQuery(document).ready(function(){
	ie.o2.vep.iteratedItems("tr,td,th,li,dd,dt",".vep-module");
});

//*!******************************************************************************
//* Namespaced One-level Tabs function
//* Dependency on JQuery and JQuery UI
//*
ie.o2.vep.tabsOneLevel = function( elementRef, select, viewAll ) {
	$.log("ie.o2.vep.tabsOneLevel:start");

	var container = jQuery(elementRef);
	var tabList = container.children("ul");
	var tabs = tabList.children();
	var tabContainers = container.children("div");
	var tSel = (typeof(select)!="undefined") ? select : 0;
	var viewAll = (typeof(viewAll)!="undefined") ? viewAll : false;

	jQuery(tabContainers).addClass('ui-tabs-panel ui-tabs-hide');
	jQuery(tabContainers).eq(tSel).removeClass('ui-tabs-hide');
	jQuery(tabs).removeClass('ui-tabs-selected');
	jQuery(tabs).eq(tSel).addClass('ui-tabs-selected');

	jQuery(tabs).bind('click keypress',
		function (e) {
			if(e.type == 'keypress' && e.which != '13') return true;
				
			var tmp = jQuery(this).find("a").blur().attr("href");
			// hide all tabs
			jQuery(tabContainers).addClass('ui-tabs-hide').filter(tmp).removeClass('ui-tabs-hide');                        
			// set up the selected class
			jQuery(tabs).removeClass('ui-tabs-selected');
			jQuery(this).addClass('ui-tabs-selected');
			return false;
		});

	if( viewAll ) {
		jQuery(elementRef).data("view-all", false);
		var viewAllTab = jQuery('<li class="view-all"><a href="#view-all" title="Select a plan: view all">All plans</a></li>');
		tabList.append(viewAllTab);
	
		tabList.find('li.view-all').bind('click keypress',
			function(e) {
				if(e.type == 'keypress' && e.which != '13') return true;
				
				tabList.find('.ui-tabs-selected').removeClass('ui-tabs-selected');
				tabContainers.filter('.ui-tabs-hide').removeClass('ui-tabs-hide');
				$(this).addClass('ui-tabs-selected');
				jQuery(elementRef).data("view-all", true);
				return false;
			});

		tabList.find('li:not(.view-all)').bind('click keypress',
			function(e) {
				if(e.type == 'keypress' && e.which != '13') return true;
				
				if(jQuery(id).data("view-all")) {
					jQuery(elementRef).data("view-all", false);
					return false;
				}
			});
	}
	
	$.log("ie.o2.vep.tabsOneLevel:end");
	return $(elementRef);
}


	  

jQuery.extend({
	ariaHide: function(target) {
		$.log("ariaHide:"+target);
		$(target).attr('aria-hidden','true');
		$(target).hide();
	},
	ariaShow: function(target) {
		$.log("ariaShow:"+target);
		$(target).attr('aria-hidden','false');
		if($(target).attr("aria-live")!=undefined){
			$.log("ariaShow-trigger-update:"+target);
			// trigger DOM refresh
			//var targetHtml = $(target).html();
			//$(target).html("");
			$(target).show();
			$(".trigger",target).remove();
			$(target).append("<span class=\"trigger\">&nbsp;</span>");
			//$(target).html(targetHtml);
		}
		else{
			$.log("ariaShow-trigger-normal:"+target);
			$(target).show();
		}
	}
});


/**
* Get CSS
* @param {Object} $
*/
(function($){
   $.getCSS = function( url, media ){
	   $.log("getCSS:"+url);
      $(document.createElement('link') ).attr({
          href: url,
          media: media || 'screen',
          type: 'text/css',
          rel: 'stylesheet'
      }).appendTo('head');
   }
})(jQuery);


ie.o2.vep.createCookie =  function(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}


ie.o2.vep.readCookie = function(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;
}

ie.o2.vep.eraseCookie = function(name)
{
	ie.o2.vep.createCookie(name,"",-1);
}






 
       


