var CITYLIFE = {};

CITYLIFE.utilities = function() {

	function getElementsByClassName(oElm, strTagName, strClassName){
		var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		var oElement;
		for(var i=0; i<arrElements.length; i++){
			oElement = arrElements[i];
			if(oRegExp.test(oElement.className)){
				arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements)
	}
	
	function insertAfter(parent, node, referenceNode) {
		parent.insertBefore(node, referenceNode.nextSibling);
	}
	
	function getLeft(element) {
		var oNode = element;
		var iLeft = 0;
		try {
			while((oNode.tagName != "BODY") && (oNode.offsetParent != null)) {
				iLeft += oNode.offsetLeft;
				oNode = oNode.offsetParent;
			}
		}
		catch(ex){}
		
		return iLeft;
	}
	
	function getTop(element) {
		var oNode = element;
		var iTop = 0;
		
		try {
			while((oNode.tagName != "BODY") && (oNode.offsetParent != null)) {
				iTop += oNode.offsetTop;
				oNode = oNode.offsetParent;
			}
		}
		catch(ex){}
		
		return iTop;
	}
	
	function setBodyClass() {
		var body = document.getElementsByTagName('body')[0];
		body.className="yui-skin-sam";
	}
	
	function forward(path) {
		window.location = path;
	}
	
	function show(id,trigger){
		if ($$('#lightwindow_contents #t'+id)[0].className == "off"){
			$$('#lightwindow_contents #t'+id)[0].className = "on";
			$$('#lightwindow_contents #i'+id)[0].src="/static/images/minus.gif";
		}
		else{
			$$('#lightwindow_contents #t'+id)[0].className = "off";
			$$('#lightwindow_contents #i'+id)[0].src="/static/images/plus.gif";
		}
	}
	
	function getInternetExplorerVersion(){
		var rv = -1;
		if (navigator.appName == 'Microsoft Internet Explorer'){
			var ua = navigator.userAgent;
			var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
			if (re.exec(ua) != null){
				rv = parseFloat( RegExp.$1 );
			}
		}
		return rv;
	}
	
	return{
	getElementsByClassName:getElementsByClassName,
	insertAfter:insertAfter,
	getLeft:getLeft,
	getTop:getTop,
	setBodyClass:setBodyClass,
	forward:forward,
	show:show,
	getInternetExplorerVersion:getInternetExplorerVersion
	}

}();

Event.observe(window, 'load', function(){
	/* Launch gallery when the caption is clicked */
	if(window.$('gallery-link')){
		Event.observe('gallery-link', 'click', function(e) {
			myLightWindow.activate(null, $$('.gallery')[0]);
			Event.stop(e);
		});
	}

	/* If Javascript is enabled then use Lightwindows */
	$$('a.lightwindow').each(function(link) {
		link.href =  link.href.replace(/\_full/, "_data");
		link.href =  link.href.replace(/\/full/, "/overlay");
	});
	
	/* Search Switch between Whats On and Site Search */
	var links = $$('#search-switch a');
	for(var i=0; i<links.length; i++){
		Event.observe(links[i], 'click', function(e){
			links[0].className = "";
			links[1].className = "";
			$$('.'+links[0].id)[0].style.display = "none";
			$$('.'+links[1].id)[0].style.display = "none";
			CITYLIFE.calendar.hideCalendars();
			
			var elm = Event.element(e);
			elm.className = "active-link";
			if(elm.id == "whatson_search" && $('venue_search_form_what') != null){
				$('venue_search_form_what').value = $('search_form_keyword').value;
			}
			else if(elm.id == "site_search" && $('venue_search_form_what') != null){
				$('search_form_keyword').value = $('venue_search_form_what').value;
			}
			$$('.'+elm.id)[0].style.display = "block";
		});
	}
	
	if($("venue_search_form_what") != null){
		/* Prefill Search fields */
		if($('venue_search_form_what').value == "" && $('what_prefill').innerHTML != ""){
			var prefill = new Element('p', { 'id': 'prefill1' }).update($('what_prefill').innerHTML);
			prefill.className = "prefill";
			$('venue_search_form_what').parentNode.parentNode.appendChild(prefill);
			
			Event.observe('prefill1', 'click', function(){
				$('prefill1').style.display = "none";
				$('venue_search_form_what').focus();
			});
			Event.observe('venue_search_form_what', 'focus', function(){ $('prefill1').style.display = "none"; });
			Event.observe('venue_search_form_what', 'keydown', function(){ $('prefill1').style.display = "none"; });
		}
		
		if($('venue_search_form_where').value == "")	{
			var prefill = new Element('p', { 'id': 'prefill2' }).update('Manchester');
			prefill.className = "prefill";
			$('venue_search_form_where').parentNode.parentNode.appendChild(prefill);
			
			Event.observe('prefill2', 'click', function(){
				$('prefill2').style.display = "none";
				$('venue_search_form_where').focus();
			});
			Event.observe('venue_search_form_where', 'focus', function(){ $('prefill2').style.display = "none"; });
			Event.observe('venue_search_form_where', 'keydown', function(){ $('prefill2').style.display = "none"; });
		}
	}
	
});

