Object.extend(Event, {
	_domReady : function() {
		if (arguments.callee.done) return;
		arguments.callee.done = true;

		if (this._timer)  clearInterval(this._timer);

		this._readyCallbacks.each(function(f) { f() });
		this._readyCallbacks = null;
	},
	onDOMReady : function(f) {
		if (!this._readyCallbacks) {
			var domReady = this._domReady.bind(this);

			if (document.addEventListener)
				document.addEventListener("DOMContentLoaded", domReady, false);

			/*@cc_on @*/
			/*@if (@_win32)
			document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
			document.getElementById("__ie_onload").onreadystatechange = function() {
			if (this.readyState == "complete") domReady();
			};
			/*@end @*/

			if (/WebKit/i.test(navigator.userAgent)) {
				this._timer = setInterval(function() {
					if (/loaded|complete/.test(document.readyState)) domReady();
				}, 10);
			}

			Event.observe(window, 'load', domReady);
			Event._readyCallbacks =  [];
		}
		Event._readyCallbacks.push(f);
	}
});

lbdPanels={

	init:function() {
		if($('lbd-tabs')) {
			var active = cookie.get("lbdSearchPanels") || "search";
			lbdPanels.setActive(active);
			lbdPanels.hideTopLinks();
			lbdPanels.attachEvents();
		}
	},

	setActive:function(active) {
		var panels = $('lbd-tabs').getElementsByTagName("a");
		for(var i = 0; i < panels.length; i++) {
			if(Element.hasClassName(panels[i], active)) {
				Element.addClassName(panels[i], "active");
			} else {
				Element.removeClassName(panels[i], "active");
			}
		}
		if(active == "categories") {
			Element.addClassName($('lbd-searchBody'), "hidden");
			Element.removeClassName($('lbd-categoriesBody'), "hidden");
			Element.addClassName($('lbd-listingsBody'), "hidden");
			Element.addClassName($('lbd-myaccountBody'), "hidden");
		} else if(active == "listings") {
			Element.addClassName($('lbd-searchBody'), "hidden");
			Element.addClassName($('lbd-categoriesBody'), "hidden");
			Element.removeClassName($('lbd-listingsBody'), "hidden");
			Element.addClassName($('lbd-myaccountBody'), "hidden");
		} else if(active == "myaccount") {
			Element.addClassName($('lbd-searchBody'), "hidden");
			Element.addClassName($('lbd-categoriesBody'), "hidden");
			Element.addClassName($('lbd-listingsBody'), "hidden");
			Element.removeClassName($('lbd-myaccountBody'), "hidden");
		}  else {
			Element.removeClassName($('lbd-searchBody'), "hidden");
			Element.addClassName($('lbd-categoriesBody'), "hidden");
			Element.addClassName($('lbd-listingsBody'), "hidden");
			Element.addClassName($('lbd-myaccountBody'), "hidden");
		}

		cookie.set("lbdSearchPanels", active, 90);
	},

	attachEvents:function() {
		if($('lbd-tabs')) {
			var panelLinks = $('lbd-tabs').getElementsByTagName("a");
			for(var i = 0; i < panelLinks.length; i++) {
				Event.observe(panelLinks[i], 'click', lbdPanels.click, false);
			}
		}
	},

	click:function(e) {
		//Event.stop(e);
		var el = Event.element(e);
		if(Element.hasClassName(el, "categories")) {
			lbdPanels.setActive("categories");
		} else if(Element.hasClassName(el, "listings")) {
			lbdPanels.setActive("listings");
		} else if(Element.hasClassName(el, "myaccount")) {
			lbdPanels.setActive("myaccount");
		} else {
			lbdPanels.setActive("search");
		}

	},

	hideTopLinks:function() {
		var tpl = $('lbd-main').getElementsByTagName("a");
		for(var i = 0; i < tpl.length; i++) {
			if(Element.hasClassName(tpl[i], "top")) {
				Element.addClassName(tpl[i], "hidden");
			}
		}
	}
}


lbdListings={

	init:function() {
		if($('lbdListingsOverview')) {
			var active = cookie.get("lbdListingsOverview") || "news";
			lbdListings.setActive(active);
			lbdListings.attachEvents();
		}
	},

	setActive:function(active) {
		var tbodies = $('lbdListingsOverview').getElementsByTagName("tbody");
		for(var i = 0; i < tbodies.length; i++) {
			if(Element.hasClassName(tbodies[i], active)) {
				Element.removeClassName(tbodies[i], "hidden");
			} else {
				Element.addClassName(tbodies[i], "hidden");
			}
		}

		var listingLinks = $('listingsNavWrapper').getElementsByTagName('a');
		for(var j = 0; j< listingLinks.length; j++) {
			if(Element.hasClassName(listingLinks[j], active)) {
				Element.addClassName(listingLinks[j].parentNode, "active");
			} else {
				Element.removeClassName(listingLinks[j].parentNode, "active");
			}
		}
		cookie.set("lbdListingsOverview", active, 90);
	},

	attachEvents:function() {
		var listingLinks = $('listingsNavWrapper').getElementsByTagName('a');
		for(var i = 0; i< listingLinks.length; i++) {
			Event.observe(listingLinks[i], 'click', lbdListings.click, false);
		}
	},

	click:function(e) {
		//Event.stop(e);
		var el = Event.element(e);
		if(Element.hasClassName(el, "events")) {
			lbdListings.setActive("events");
		} else if(Element.hasClassName(el, "jobs")) {
			lbdListings.setActive("jobs");
		} else if(Element.hasClassName(el, "contracts")) {
			lbdListings.setActive("contracts");
		} else {
			lbdListings.setActive("news");
		}
	}
}


lbdLogReg={

	init:function() {
		if($('lbd-myaccountBody')) {
			var active = cookie.get("lbdMyAccount") || "login";
			lbdLogReg.setActive(active);
			lbdLogReg.attachEvents();
		}
	},

	setActive:function(active) {
		var option = $('lbd-LoginOptions').getElementsByTagName("a");
		for(var i = 0; i < option.length; i++) {
			if(Element.hasClassName(option[i], active)) {
				Element.addClassName(option[i], "active");
			} else {
				Element.removeClassName(option[i], "active");
			}
		}
		if(active == "register") {
			Element.addClassName($('lbd-LoginPanel'), "hidden");
			Element.removeClassName($('lbd-RegisterPanel'), "hidden");
		} else {
			Element.removeClassName($('lbd-LoginPanel'), "hidden");
			Element.addClassName($('lbd-RegisterPanel'), "hidden");
		}

		cookie.set("lbdMyAccount", active, 90);
	},

	attachEvents:function() {
		var loginRegLinks = document.getElementsByTagName('a');
		for(var i = 0; i< loginRegLinks.length; i++) {
			if(Element.hasClassName(loginRegLinks[i], "loginLink") || Element.hasClassName(loginRegLinks[i], "registerLink")) {
				Event.observe(loginRegLinks[i], 'click', lbdLogReg.click, false);
			}
		}
	},

	click:function(e) {
		//Event.stop(e);
		var el = Event.element(e);
		if(Element.hasClassName(el, "registerLink")) {
			lbdPanels.setActive("myaccount");
			lbdLogReg.setActive("register");
		} else {
			lbdPanels.setActive("myaccount");
			lbdLogReg.setActive("login");
		}
	}
}


lbdCheckUrl={

	init:function() {
		var u = new Poly9.URLParser(window.location);
		var frag = u.getFragment();
		lbdCheckUrl.switchOn(frag);
	},

	switchOn:function(frag) {
		switch(frag) {
		case "anSearch":
			lbdPanels.setActive("search");
			break
		case "anCategories":
			lbdPanels.setActive("categories");
			break
		case "anListings":
			lbdPanels.setActive("listings");
			break
		case "anMyaccount":
			lbdPanels.setActive("myaccount");
			break
		case "liNews":
			lbdPanels.setActive("listings");
			lbdListings.setActive("news");
			break
		case "liEvents":
			lbdPanels.setActive("listings");
			lbdListings.setActive("events");
			break
		case "liJobs":
			lbdPanels.setActive("listings");
			lbdListings.setActive("jobs");
			break
		case "liContracts":
			lbdPanels.setActive("listings");
			lbdListings.setActive("contracts");
			break
		case "anMyaccount-login":
			lbdPanels.setActive("myaccount");
			lbdListings.setActive("login");
			break
		case "anMyaccount-login":
			lbdPanels.setActive("myaccount");
			lbdListings.setActive("register");
			break
		}
	}
}


lbdAddCompanyMultis={

	init:function() {
		if($('fields[multiBusinessCategoryLevel1]') && $('fields[multiBusinessCategoryLevel2]')) {
			Event.observe($('fields[multiBusinessCategoryLevel1]'), 'change', lbdAddCompanyMultis.setSubs, false);
			Event.observe($('fields[multiBusinessCategoryLevel1]'), 'focus', lbdAddCompanyMultis.setSubs, false);
			Event.observe($('fields[multiBusinessCategoryLevel1]'), 'blur', lbdAddCompanyMultis.setSubs, false);
			lbdAddCompanyMultis.hideSubs();
		}
	},

	setSubs:function() {
		var selected = [];

		lbdAddCompanyMultis.switchBack();

		if($('fields[multiBusinessCategoryLevel1]2')) {
			var ops = $('fields[multiBusinessCategoryLevel1]2').getElementsByTagName("option");
			for (var i = ops.length-1; i >= 0; --i){
				selected[selected.length] = ops[i].value;
			}
		} else {
			var ops = $('fields[multiBusinessCategoryLevel1]').getElementsByTagName("option");
			for (var i = ops.length-1; i >= 0; --i){
				if(ops[i].selected == true) {
					selected[selected.length] = ops[i].value;
				}
			}
		}
		var subOps = $('subsHolder').getElementsByTagName("option");
		for (var j = subOps.length-1; j >= 0; --j){
			if(lbdAddCompanyMultis.inArray(subOps[j].getAttribute("parent"), selected)) {
				$('fields[multiBusinessCategoryLevel2]').appendChild(subOps[j]);
			}
		}

		if($('fields[multiBusinessCategoryLevel2]2')) {
			var subOpsSelected = $('fields[multiBusinessCategoryLevel2]2').getElementsByTagName("option");
			for (var k = subOpsSelected.length-1; k >= 0; --k){
				if(!lbdAddCompanyMultis.inArray(subOpsSelected[k].getAttribute("parent"), selected)) {
					$('subsHolder').appendChild(subOpsSelected[k]);
					sortSelectBox($('fields[multiBusinessCategoryLevel2]'));
				}
			}
		}
	},

	switchBack:function() {
		var subOps = $('fields[multiBusinessCategoryLevel2]').getElementsByTagName("option");
		for (var i = subOps.length-1; i >= 0; --i){
			$('subsHolder').appendChild(subOps[i]);
		}
	},

	hideSubs:function() {
		var subOps = $('fields[multiBusinessCategoryLevel2]').getElementsByTagName("option");
		for (var i = subOps.length-1; i >= 0; --i){
			Element.addClassName(subOps[i], "hidden");
		}
	},

	inArray:function(needle, haystack) {
		for (var i = haystack.length-1; i >= 0; --i){
			if(haystack[i] == needle) {
				return true;
			}
		}
		return false;
	}
}

Event.observe(window, 'load', lbdAddCompanyMultis.init, false);


lbdPageStart={

	init:function() {
		if($('lbdSearchMap')) {
			mapId = "lbdSearchMap";
			$(mapId).style.background = "none";
			widgetMapOptions.init();
		}
		lbdPageStart.profileMap();
	},

	profileMap:function() {
		if($('lbdProfileMap')) {
			mapId = "lbdProfileMap";
			Element.setOpacity($("lbdProfileMap"), 0.05);
			map = new GMap2(document.getElementById(mapId));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl(G_ANCHOR_TOP_RIGHT));
			map.setCenter(new GLatLng(defaultLat, defaultLon), defaultZoom);
		}
	}
}

Event.onDOMReady(function() {
	lbdPageStart.init();
});