/* Common Components JS */
//*!******************************************************************************
//* Namespaced Component toggling function
//* Dependency on JQuery and JQuery UI
//*
ie.o2.vep.toggleComponent = function(toggle, mode){
    var parentList = toggle.parents("ul.component-list");
    var parentCont = toggle.parents(".cl-section");

    var animateOpen = function(parentCont){
        parentCont.addClass("cl-section-selected");
		 var t=null;
		 parentCont.find(".cl-section-content").show('normal', function(){
				parentCont.addClass("loaded");
				
				parentCont.find('.bl').css('position','absolute');
				parentCont.find('.bl').removeAttr('style');
				parentCont.find('.br').css('position','absolute');
				parentCont.find('.br').removeAttr('style');
				

				
            });
		 
    };

    var animateClose = function(parentCont){
		if( !parentCont.find("cl-section-selected") ) return;

        parentCont.find(".cl-section-content iframe").hide();
        parentCont.find(".cl-section-content").hide('fast');
        var targetWidth = parentCont.parents("li").width();
	

        parentCont.animate({
            width: (targetWidth) + "px",
            marginLeft: 0
        }, 200, function(){
            parentCont.removeClass("cl-section-selected");

        });
    };

    if (mode == 'open') {
        var openCont = parentList.find(".cl-section-selected");
        animateClose(openCont);

		if( parentCont.find("ul.load-meta").length > 0 ) {
			parentCont.find(".cl-section-content-container").addClass("load-meta-loading");
			ie.o2.vep.loadComponent(parentCont.find(".cl-section-content"),
				function() {
					animateOpen(parentCont);
				})
		}
		else {
				animateOpen(parentCont);
		}
    }
    else {
        animateClose(parentCont);
    }
}

//*!******************************************************************************
//* Namespaced Component AJAX-loading function
//* Dependency on JQuery
//*
ie.o2.vep.loadComponent = function(target, callback ) {
	var url = jQuery(target).find("ul.load-meta .load-url").text();
	
	url=jQuery.trim("http://"+window.location.hostname+":"+window.location.port+url);

	$.log("loading fragment : '"+url+"'");
	

					
					

	try{		
		jQuery(target).load(url,
			function (responseText, textStatus, XMLHttpRequest) {
				$.log("load responseText : "+responseText);
				$.log("load textStatus : "+textStatus);
				
				if(textStatus == "success") {
					jQuery(this).find("ul.load-meta").remove();
					jQuery(this).addClass("content-loaded");
					if(callback && callback != 'undefined') callback();
				}
			});
	}
	catch(e){
		$.log("An exception occurred in the script. Error name: " + e.name + ". Error message: " + e.message	);
	}
}

//*!******************************************************************************
//* Namespaced Component link-handling function
//* Dependency on JQuery and JQuery UI
//*

ie.o2.vep.expandOrLink = function(isItLinkOnly,destUrl,toggle,e) {
			
            if(isItLinkOnly) {
				if(destUrl.length > 0) {
	                window.location.href=unescape(destUrl);
				}
				else
				{
					window.location.href="http://www.o2online.ie";
				}
                return false;
            }
			if(e.type == 'keypress' && e.which != '13') return true;

	        var toggleComp = ie.o2.vep.toggleComponent;
	        var parentCont = toggle.parents(".cl-section");

	        if (parentCont.hasClass("cl-section-selected")) {
	            toggleComp(toggle, 'close');
	        }
	        else {
	            toggleComp(toggle, 'open');
				// if fragment script is available and not already loaded
				fragScript = parentCont.find(".cl-section-content .load-meta .load-frag-script").text();
				if (fragScript != "") {
					$.getScript(fragScript);	
				}
	        }
			return false;
}

ie.o2.vep.linkComponent = function(elementRef, linkSource) {
	jQuery(".cl-section h4 a").bind("click keypress",
		function(e){
            if(jQuery(this).parent().parent().parent(".link_only").length != 0) {
                window.location.href=unescape(jQuery(this).attr("href"));
                return false;
            }
			if(e.type == 'keypress' && e.which != '13') return true;

			jQuery(this).blur();
			
			objClkd = jQuery(this);
			isItLinkOnly = objClkd.parent().parent().parent(".link_only").length != 0;
			destUrl = objClkd.attr("href");
	        var toggle = objClkd.parent();
			ie.o2.vep.expandOrLink(isItLinkOnly,destUrl,toggle,e);
			
        	return false;
	    });

    jQuery(".cl-section .cl-section-toggle").bind("click keypress",
		function(e){
			objClkd = jQuery(this);
			isItLinkOnly = objClkd.parent().parent().parent(".link_only").length != 0;
			destUrl = objClkd.parent().siblings("h4").children("a").attr("href");
	        var toggle = objClkd.parent().siblings("h4");
			ie.o2.vep.expandOrLink(isItLinkOnly,destUrl,toggle,e);
	    });

    jQuery(".cl-section h4").bind("click keypress",
		function(e){
			objClkd = jQuery(this);
			isItLinkOnly = objClkd.parent().parent(".link_only").length != 0;
			destUrl = objClkd.children("a").attr("href");
	        var toggle = objClkd;
			ie.o2.vep.expandOrLink(isItLinkOnly,destUrl,toggle,e);
	    });
}

jQuery(document).ready(
	function(){
		ie.o2.vep.linkComponent();
	});

