if(document.getElementById("map")) {
	function TipTool(map,point,opt_options){
		this.opts = opt_options || {};
		this.point = point;
		this.setMap(map);
		this.map = map;
	};
	TipTool.prototype = new google.maps.OverlayView();
	TipTool.prototype.onAdd = function(){
		this.div_ = document.createElement("div");
		this.div_.style.position = "absolute";
		this.div_.style.overflow = "hidden";
		this.div_.style.zIndex = 20000; 
		this.zIndex = this.opts.zIndex || 0;
		this.div_.className = this.opts.cssClass || this.opts.className || "tiptool";
		this.div_.innerHTML = this.opts.html || "";
			
		//google.maps.event.addDomListener(this.div_,"click",function(event){
		//	google.maps.event.trigger(me,"click",event);
		//});
		var panes = this.getPanes();
		var paneId = this.opts.pane || "floatPane";
		panes[paneId].appendChild(this.div_);
		this.opacity = this.opts.opacity * 1 || 1;
		this.div_.style.filter = "alpha(opacity:" + this.opacity * 100 + ")";
		this.div_.style.opacity = this.opacity;
	}
	TipTool.prototype.draw = function(){  
		var pixPoint = this.getProjection().fromLatLngToDivPixel(this.point); 
		this.div_.style.left = pixPoint.x + "px";
		this.div_.style.top = pixPoint.y + "px";
		var SEx = pixPoint.x + this.div_.offsetWidth;
		var SEy = pixPoint.y + this.div_.offsetHeight;
		var pixSE = new google.maps.Point(SEx,SEy);
		this.opts.SE = this.getProjection().fromDivPixelToLatLng(pixSE);
		this.opts.point = this.point;
	};
	TipTool.prototype.setPosition = function(pint){ 
		if(!this.div_) return false;
		this.point = pint;    
		this.draw();   
		return true
	};
	TipTool.prototype.onRemove = function(){
		if(!this.div_) return false;
		this.div_.parentNode.removeChild(this.div_);
		this.div_ = null;
		return true;
	};
	TipTool.prototype.hide = function(){
		if(!this.div_) return false;
		this.div_.style.display = "none";
		return true;
	};
	TipTool.prototype.show = function(){
		if(!this.div_) return false;
		this.div_.style.display = "block";
		return true;
	};
	TipTool.prototype.setContent = function(html){
		if(!this.div_) return false;
		this.div_.innerHTML = html;
		return true;
	};
	TipTool.prototype.props = function(options){
		var opts = options || {};
		for(var prop in opts){
			this.opts[prop] = opts[prop];
		}
		return this.opts;
	};
	TipTool.prototype.getPosition = function(){
		if(!this.div_) return null;
		return this.bounds_.getCenter();
	};
	TipTool.prototype.isVisible = function(){
		var bounds = this.map.getBounds();
		var visible = (bounds.contains(this.opts.point) && bounds.contains(this.opts.SE));
		return visible;
	};
	TipTool.prototype.bringVisible = function(){
		if(this.isVisible()){
			this.map.setCenter(this.map.getCenter());
		}else{
			this.map.panTo(this.opts.point);            
		}
	};
	google.maps.Marker.prototype.attachTipTool = function(html,opt_options){
		var map_ = this.getMap();
		var position = this.getPosition();
		map_.tiptool_ = map_.tiptool_ || new TipTool(map_,position,opt_options);
		google.maps.event.addListener(this,"mouseover",function(){ 
			map_.tiptool_.setPosition(position); 
			map_.tiptool_.setContent(html); 
			map_.tiptool_.show();
			clearTimeout(map_.tiptool_.timer);
		});
		google.maps.event.addListener(this,"mouseout",function(){
			clearTimeout(map_.tiptool_.timer);
			map_.tiptool_.timer = setTimeout(function(){
				map_.tiptool_.hide();
			},200);
		});
	}
	
	google.maps.Map.prototype.markers = new Array();
	google.maps.Map.prototype.getMarkers = function() {
    	return this.markers
	};

	google.maps.Map.prototype.clearMarkers = function() {
    	for(var i=0; i<this.markers.length; i++) {
        	this.markers[i].setMap(null);
    	}
    	
    	this.markers = new Array();
	};

	google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;
	google.maps.Marker.prototype.setMap = function(map) {
    	if(map) {
        	map.markers[map.markers.length] = this;
    	}
    	
    	this._setMap(map);
	}
}

var ENET = {
	Page: {
		map:"",
		mapMarkers:[],
		teamList:"",
		dolly:"",
		init:function() {
			if($("#homepage-slider").length) {
				var el = $("#homepage-slider");
				
				if(el.length > 0) {
					var str = "";
					
					for(var i = 1, li_c = el.find("ul.slides li").length; i <= li_c; i++) {
						str += "<li>" + i + "</li>";
					}
					
					el.find(".homepage-slider-controls").html(str).end().find(".slider-wrapper").flexslider({
						animation:"slide",
						controlNav:true,
						directionNav:false,
						slideshowSpeed:4000,
						manualControls:".homepage-slider-controls li",
						slideshow:"true"
					});
				}
			}
			
			if($(".testimonial-slider").length) {
				var el = $(".testimonial-slider");
				
				if(el.length > 0) {
					var str = "";
					
					for(var i = 1, li_c = el.find("ul.slides li").length; i <= li_c; i++) {
						str += "<li>" + i + "</li>";
					}
					
					el.find(".testimonial-controls").html(str).end().find(".slider-wrapper").flexslider({
						animation:"slide",
						controlNav:true,
						directionNav:true,
						slideshowSpeed:4000,
						manualControls:".testimonial-controls li",
						slideshow:"true"
					});
				}
			}
			
			if($("#pagination").length) {
				ENET.Page.teamList = $("#pagination");
				
				ENET.Page.buildPagination();
				
				ENET.Page.dolly = ENET.Page.teamList.children().clone();
				
				$("form[name=meet_the_team] select").bind("change",function() {
					ENET.Page.teamList.html(ENET.Page.dolly);
					
					var selectedTeam = $(this).val();
				
					if(selectedTeam == "All Teams") {
						ENET.Page.teamList.html(ENET.Page.dolly);
						
						ENET.Page.buildPagination();
					} else {
						var filtered = ENET.Page.teamList.children("." + selectedTeam);
					
						ENET.Page.teamList.html(filtered);

						ENET.Page.buildPagination();
					}
				});
			}
			
			if($(".dropdown-menu").length) {
				$(".dropdown-menu").each(function(){
					var themenu = $(this);
					var position = themenu.parent().position();
					var offset = themenu.parent().offset();
				
					if((themenu.width() + offset.left) >= $(window).width()) {
						themenu.css("left","auto");
					}
				});
			}
			
			if($("#strEmail").length) {
				$("#strEmail").focus(function(){
					if($(this).val() == "Your email address…") {
						$(this).val("");
					}
				}).blur(function() {
					if($(this).val() == "") {
						$(this).val("Your email address…");
					}
				});
			}
			
			if($("#datepicker").length) {
				$("#datepicker").datepicker({
					inline:true
				});
			}
		
			if($(".book-now").length) {
				$(".book-now").fancybox({
		 			"autoDimensions":true, 
         			"type":"inline",
         			"scrolling":"yes",
					"titleShow":false
				});
	
				$("a#inline").fancybox({
					"titleShow":false,
					"hideOnContentClick":false
				});

				$("a.group").fancybox({
					"transitionIn":"elastic",
					"transitionOut":"elastic",
					"speedIn":600, 
					"titleShow":false,
					"speedOut":200, 
					"overlayShow":false
				});
		
				//$("#fancybox-content-holder").bind("resize",function() {
				//	var height = $("#fancybox-content-holder").height();// + 25;
					
					$("#fancybox-content").css("height","auto");
					
				//	$('#fancybox-wrap').height(height);
				//});
			}
			
			if($("#search_category_button").length) {
				$("#search_category_button").bind("click",function(e) {
					e.preventDefault();
				
					window.location = $("#search_category_select option:selected").val();
				
					return false;
				});
			}
			
			if($(".course-feedback textarea").length) {
				$(".course-feedback textarea").click(function() {
					$(".course-feedback .hidden-elements").show();
				});
			
				$(".course-feedback textarea").focusout(function() {
					if($(this).val() == "") {
						$(".course-feedback .hidden-elements").hide();
					}
				});
			}
		
			if($("#coursesTable").length) {
				var locations = new Array();
				
				$("#course_locations").append($("<option/>").attr({"value":""}).append("Any Location"));
				
				$.each($("#coursesTable tbody tr td:last-child a"),function() {
					locations.push($(this).html().trim());
				});
				
				locations = locations.filter(function(item,i,a) {
		    		return i == a.indexOf(item);
				});
				
				$.each(locations,function(counter,value) {
					$("#course_locations").append($("<option/>").attr({"value":value}).append(value));		
				});
				
				$("#course_locations").change(function() {
		    		dataTable.fnFilter($(this).val(),3);
				});
		    	
				var dataTable = $("#coursesTable").dataTable({
					"sPaginationType":"full_numbers",
					"oLanguage":{"sSearch":"Filter courses:"},
					"bJQueryUI":false,
					"iDisplayLength":10,
					"aaSorting":[[0,"asc"]],
					"aoColumns":[{"sType":"html"},{"sType":"html"},{"sType":"string"},{"sType":"html"}]
				});
				
				$(".datepicker").datepicker({ 
					dateFormat:"dd/mm/yy"
				});		
				
				$("#dateStart,#dateEnd").keyup(function() { 
					dataTable.fnDraw(); 
				}).change(function() { 
					dataTable.fnDraw(); 
				});
				
				$.fn.dataTableExt.afnFiltering.push(function(oSettings,aData,iDataIndex) {
					var segments = aData[1].split("/");
				
					segments[0] = segments[0].replace('<span style="display:none;">',"");
					segments[2] = segments[2].replace("<","");
				
					segments.pop();
				
					var date = segments[0] + "/" + segments[1] + "/" + segments[2];
				
					var dateStart = ENET.Page.fcnParseDateValue($("#dateStart").val());
					var dateEnd = ENET.Page.fcnParseDateValue($("#dateEnd").val());
					var evalDate = ENET.Page.fcnParseDateValue(date);
				
					if(evalDate >= dateStart && evalDate <= dateEnd) {
						return true;
					} else {
						return false;
					}
				});
			}
		},
		
		buildPagination:function() {
			var numberOfItems = ENET.Page.teamList.children().size();
				
			var showPerPage = 3; 
				
			var numberOfPages = Math.ceil(numberOfItems / showPerPage);
			
			if(numberOfItems > 3) {	
				$("#blog_post_navigation").show().empty();
				
				$("#current_page").val(0);
				
				$("#show_per_page").val(showPerPage);
				
				var navigationHtml = '<a class="previous_link" href="javascript:ENET.Page.goToPreviousPage();">Prev</a>';
				
				var currentLink = 0;
				
				while(numberOfPages > currentLink) {
					navigationHtml += '<a class="page_link" href="javascript:ENET.Page.goToPage(' + currentLink +')" longdesc="' + currentLink +'">'+ (currentLink + 1) +'</a>';
					
					currentLink++;
				}
				
				navigationHtml += '<a class="next_link" href="javascript:ENET.Page.goToNextPage();">Next</a>';
				
				$("#blog_post_navigation").html(navigationHtml);
				
				$("#blog_post_navigation .page_link:first").addClass("active_page");

				ENET.Page.teamList.children().css("display","none");
				
				ENET.Page.teamList.children().slice(0,showPerPage).css("display","block");
			} else {
				$("#blog_post_navigation").hide().empty();
				
				ENET.Page.teamList.children().css("display","block");
			}
			
			setTimeout(function() {
				$(".scroll-pane").jScrollPane();
			},10);	
		},
		
		goToPreviousPage:function() {
			var newPage = parseInt($("#current_page").val()) - 1;
			
			if($(".active_page").prev(".page_link").length) {
				ENET.Page.goToPage(newPage);
			}
		},
		
		goToNextPage:function() {
			var newPage = parseInt($("#current_page").val()) + 1;
		
			if($(".active_page").next(".page_link").length) {
				ENET.Page.goToPage(newPage);
			}
		},
		
		goToPage:function(pageNum) {
			var showPerPage = parseInt($("#show_per_page").val());
		
			var startFrom = pageNum * showPerPage;
		
			var endOn = startFrom + showPerPage;
		
			ENET.Page.teamList.children().css("display","none").slice(startFrom,endOn).css("display","block");
		
			$(".page_link").parent().removeClass("selected");	
			
			$(".page_link[longdesc=" + pageNum + "]").parent().addClass("selected");
			
			$(".page_link[longdesc=" + pageNum + "]").addClass("active_page").siblings(".active_page").removeClass("active_page");
			
			$("#current_page").val(pageNum);
			
			$(".scroll-pane").jScrollPane();
		},
		
		createMarker:function(point,address,title,counter) {
			var image = new google.maps.MarkerImage("/themes/enet/img/markers_" + counter + ".png");
			
			var marker = new google.maps.Marker({
				position:point,
				map:ENET.Page.map,
				draggable:false,
				raiseOnDrag:false,
				icon:image
			});
			
			marker.attachTipTool(title);
			
			ENET.Page.mapMarkers.push(marker);		
		},
		
		fcnParseDateValue:function(rawDate) {
			var dateArray = rawDate.split("/");
			var parsedDate = dateArray[1] + dateArray[0] + dateArray[2];

			return parsedDate;
		}
	}
}

var $ = this.jQuery.noConflict();

$(document).ready(function() {
	ENET.Page.init();
});
