//initialisation function

if(typeof Array.prototype.push!='function'){Array.prototype.push=function(v){var i=this.length>>>0,j=0;while(j<arguments.length){this[i++]=arguments[j++];}
return(this.length=i);};}

if(!Object.prototype.hasOwnProperty){Object.prototype.hasOwnProperty=function(pty){return(typeof this[pty]!="undefined"&&(this.constructor&&this.constructor.prototype&&this.constructor.prototype[pty]!==this[pty]));};}

var GMap = (GMap) ? GMap : false;

var googleMap;

var bool,
f = {
	onloadArray : [],
	mapContentArray : [],
	points : {},
	isIE : function () {
		var __isIE = false;
		
		/*@cc_on
  			@if (@_win32)
				__isIE = true;
   			@end
		@*/
		
		return __isIE;
	},
	
	addOnloadEvent : function (func, order) {
		var that = this;
		var arr = that.onloadArray;
		arr.push(func);
		window.onload = function () {
			for (var i = Number(0); i < arr.length; i++){
				arr[i]();
			}
		};
	},
	
	$ : function (id){
		return document.getElementById(id);
	},
	
	clearChildren : function (n){
		while (n.firstChild){
			n.removeChild(n.firstChild)
		}
		return n;
	},
	
	getElementsByClassName : function (par, str, tag) {
		var tag = (!tag) ? "*" : tag ;
		var __re, __el, __arr = (tag == "*" && par.all) ? par.all : par.getElementsByTagName(tag), __holder = [];
		
		str = str.replace(/\-/g, "\\-");
		__re = new RegExp("(^|\\s)" + str + "(\\s|$)");
		
		for (var i = Number(0); i < __arr.length; i++) {
			__el = __arr[i];
			if (__re.test(__el.className)) {
				__holder.push(__el);
			}
		}
		
		return (__holder);
	},
	
	getElementContents : function (par, str, o) {
		/* args 
		par is the DOM object that contains the object you're searching for 
		type 	: 				DOM element
		ie 		: 				{document | f.$("div")}
		
		str is the search term
		type 	: 				String
		ie		: 				{"h3" | "class-name" | "div"}
		
		o is an object which contains properties that are contextual to the search term
			o.pos 	:				as both getElementsByTagName and getElementsByClassName return
									arrays this property allows you to grab an object from a
									position within the zero-indexed array. If this value is not
									existant in the object then the full array is returned. You 
									can explicitly request the full array by including the string "all"
			type	:				String, Number
			ie		:				{undefined | [0-9] | "all"}
		
			o.type	:				is the type of element you want to search
			type	:				String
			ie		:				{"tag" | "class" | "id"}
			
			o.tag :					is an optional property of the object that's used for the 
									getElementsByClassName method which allows you to shorten the "depth"
									of the search - from all elements in the page to a sub node. Must 
									be a tag name.
			type	:				String
			ie		:				{"div" | "span"}
		
		*/
		var __obj, that = this;
		
		switch (o.type) {
			case "tag":
			__obj = (o.pos == undefined || o.pos == "all") ? par.getElementsByTagName(str) : par.getElementsByTagName(str)[o.pos];
			break;
			
			case "class":
			__obj = (o.pos == undefined || o.pos == "all") ? that.getElementsByClassName(par, str, o.tag) : that.getElementsByClassName(par, str, o.tag)[o.pos];
			break;
			
			case "id":
			__obj = par.$(str);
			break;
		}
		
		return __obj;
	}
};

f.addOnloadEvent(function (){
	if (f.$("booking-form")){
		setupDates();
	}
});

var map = {
	old : null,
	
	setFirstSelected : function () {
		var __that = this;
		
		$(".map-content.first > h3").each(
			function () {
				$(this).addClass("selected");
				__that.old = this;
			}
		);
	},
	
	doAnimate : function (element, isFromMap) {
		var __that = this, __obj;
		
		if (__that.old != element) {
			__obj = {height: "toggle", opacity : "toggle"};
			$(__that.old).next("div").children("div").animate(
				__obj, 
				{
					duration : 200, 
					easing : "easeInSine", 
					complete : function () {
						__that.old = element;
						
						if (isFromMap)
							element.marker.openInfoWindow(element.marker.node);
						
						$(__that.old).addClass("selected");
						$(__that.old).next("div").children("div").animate(
							__obj, 
							{duration : 400, easing : "easeInSine"}
						);
					}
				}
			);
		
			$(__that.old).removeClass("selected");
		}
	},
	
	eventFunctionHandler : function (element) {
		map.doAnimate(this, true)
	}
};

if (typeof jQuery != 'undefined') {
	$(function() {
		if ($(".map-content").length) {
			var __obj, __img = new Image();
			
			__img.src = "/images/bg-h3-on.png";
			__img.src = "/images/bg-h3-first-on.png";
			__img.src = "/images/contract.gif";
					
			$("body").addClass("has-jQuery");
			
			$(".map-content > div > div").hide();
			$(".map-content.first > div > div").show();
			
			map.setFirstSelected();
			
			$(".map-content > h3").bind("click", map.eventFunctionHandler);
		}
	});
	$(function () {
		$("body").addClass("has-jQuery");
		var $_next = "lta-next";
		var $_prev = "lta-previous";
		$(".scroll").each(function (i){
			this.style.display = "none";
			$(".carouseltop").eq(i).append('<img src="/images/car_arrow-red-up.gif" id="'+$_prev+'-'+i+'" class="'+$_next+'" width="13" height="7" alt="higher ranked players" />');
			$(".carouselbottom").eq(i).append('<img src="/images/car_arrow-red-down.gif" id="'+$_next+'-'+i+'" class="'+$_prev+'" width="13" height="7" alt="lower ranked players" />');
			$(this).carousel({
				previous : 	$_prev+'-'+i,
				next  : $_next+'-'+i,
				scrollid : "lta-scroll-"+i,
				step : 108,
				viewheight : 324,
				easing : "easeOutQuad",
				total : $(this).children(".player-rank").length
			});
			this.style.display = "block";
		});  
	})
}


lta = {
	vars : {},
	counter : 0,
	
	stripAndAppend : function (par, el) {
		el.className = el.id = "";
		par.appendChild(el);
		
		return el;
	},
	
	setPointValues : function (o) {
		var that = this, __vars, __el = f.$(o.id), __a, __h3, __p, __img, __float, __span;
		
		__vars = that.vars["point_"+that.counter] = {};
		
		__vars.node = document.createElement("div");
		__vars.node.id = "x";
		
		__vars.long = o.long;
		__vars.lat = o.lat;
		__vars.id = o.id;
		
		__vars.orig = f.getElementContents(__el, "h3", {pos : 0, type :"tag"});
		
		__h3 = that.stripAndAppend(__vars.node, __vars.orig.cloneNode(true));
		__h3.style.padding = "0 0 5px";
		__span = __h3.getElementsByTagName("span");
		
		for (var i = Number(0); i < __span.length; i += 1) {
			for (var j = Number(0); j < __span[i].childNodes.length; j += 1) {
				if (__span[i].childNodes[j].nodeType == 3) {
					__vars.h3 = __span[i].childNodes[j].data;
					break;
				}
			}
		}
		
		__img = that.stripAndAppend(__vars.node, f.getElementContents(__el, "img", {pos : 0, type :"tag"}).cloneNode(true));
		
		__float = (f.isIE()) ? "styleFloat" : "cssFloat" ;
		__img.style[__float] = "left";
		__img.style.padding = "3px 5px 5px 0";
		
		__p = that.stripAndAppend(__vars.node, f.getElementContents(__el, "p", {pos : 0, type :"tag"}).cloneNode(true));
		__p.style.width = "222px";
		__p.insertBefore(__img, __p.firstChild)
		
		__a = that.stripAndAppend(__vars.node, f.getElementContents(__el, "map-link", {pos : 0, type :"class"}).cloneNode(true));
		__a.className = "teaserlink-home"
		
		that.counter++;
	},
	
	showMap : function() {
		var __imgs = f.$("google-map").getElementsByTagName("img");
		
		map.doAnimate(f.$(this.htmlId).getElementsByTagName("H3")[0]);
		
		for (var i = Number(0); i < __imgs.length; i++) {
			if (__imgs[i].src == "http://maps.google.com/intl/en_ALL/mapfiles/iw2.png") {
				__imgs[i].src = "/images/maps.png";
			}
			if (__imgs[i].src == "http://maps.google.com/intl/en_ALL/mapfiles/iw_close.gif") {
				__imgs[i].src = "/images/close.gif";
				__imgs[i].style.width = __imgs[i].style.height = "16px";
				__imgs[i].style.marginLeft = __imgs[i].style.marginBottom = "-4px";
				break;
			}
		}
		
		var __divs = f.$("google-map").getElementsByTagName("div"),
			__borders = {borderTop : true, borderBottom : true, borderLeft : true, borderRight : true};
			
		for (var i = Number(0), __tmp; i < __divs.length; i++) {
			for (var j in __borders) {
				if (__borders.hasOwnProperty(j)) {
					if (__tmp = __divs[i].style[j]) {
						switch (__tmp) {
							case "1px solid rgb(171, 171, 171)" :
							case "#ababab 1px solid" :
							__divs[i].style[j+"Color"] = "#000000"
							break;
						}
					}
				}
			}
			if (__divs[i].id == "x") {
				__divs[i].parentNode.style.height = "auto";	
			}
		}
	}
}
   
f.addOnloadEvent(function() {	
	if (f.$("google-map") && GBrowserIsCompatible()) {
		var __map = new GMap2(f.$("google-map")), __point, __marker, __markerOpts, __windowOpts, __icon, __old;
		googleMap = __map;
		__map.setCenter(new GLatLng(25, 0), 2);
		__map.addControl(new GLargeMapControl())
		for (var i in lta.vars) {
			__point = new GLatLng(lta.vars[i].lat, lta.vars[i].long);
			
			var __icon = new GIcon();        
			__icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
			__icon.iconSize = new GSize(19, 34);
			__icon.shadowSize = new GSize(37, 34);
			__icon.iconAnchor = new GPoint(9, 34);
			__icon.infoWindowAnchor = new GPoint(9, 2);
			__icon.infoShadowAnchor = new GPoint(18, 25);
			__icon.image = "/images/marker.png";
			__icon.imageOn = "/images/marker-red.png";
			
			__markerOpts = {title : lta.vars[i].h3, icon : __icon}
			lta.vars[i].orig.marker = __marker = new GMarker(__point, __markerOpts);			
			__map.addOverlay(__marker);
			__marker.bindInfoWindow(lta.vars[i].node, {maxWidth : 300});
			__marker.htmlId = lta.vars[i].id;
			__marker.node = lta.vars[i].node;
			
			GEvent.addListener(__marker, "click", lta.showMap);
			
			GEvent.addListener(__marker, "infowindowclose", function() {
				this.setImage(__icon.image);
			});
			
			GEvent.addListener(__marker, "infowindowopen", function() {
				this.setImage(__icon.imageOn);
			});
		}
	}
});



//---- NAVIGATION ROLLOVERS & MENU EVENTS ----//
f.addOnloadEvent(function(){
	var nItems = new Array(), nItemsI;
	
	if (n = f.$("top-nav")){
		nItems = n.getElementsByTagName("a");
		
		for (var i = Number(0), j = Number(nItems.length); i < j; i++){
			nItemsI = nItems[i];
			navImg = nItemsI.getElementsByTagName("img");
			
			if (navImg[0]){
				if (navImg[0].src.indexOf("-sel") == -1){
					nItemsI.stored = navImg[0].id;
					nItemsI.onmouseover = imgRoll;
					nItemsI.onmouseout = imgOff;
				}
			}
		}
	}	
});

//---- NAVIGATION ROLLOVERS PRE-LOADERS ----//
if(document.images){
	nav01Roll = new Image();
	nav01Roll.src = "/images/nav-home-sel.gif";
	nav01Off = new Image();
	nav01Off.src = "/images/nav-home.gif";
	
	nav02Roll = new Image();
	nav02Roll.src = "/images/nav-players-sel.gif";
	nav02Off = new Image();
	nav02Off.src = "/images/nav-players.gif";
	
	nav03Roll = new Image();
	nav03Roll.src = "/images/nav-competition-sel.gif";
	nav03Off = new Image();
	nav03Off.src = "/images/nav-competition.gif";
	
	nav04Roll = new Image();
	nav04Roll.src = "/images/nav-coaches-sel.gif";
	nav04Off = new Image();
	nav04Off.src = "/images/nav-coaches.gif";
	
	nav05Roll = new Image();
	nav05Roll.src = "/images/nav-clubs-sel.gif";
	nav05Off = new Image();
	nav05Off.src = "/images/nav-clubs.gif";
	
	nav06Roll = new Image();
	nav06Roll.src = "/images/nav-parents-sel.gif";
	nav06Off = new Image();
	nav06Off.src = "/images/nav-parents.gif";
	
	nav07Roll = new Image();
	nav07Roll.src = "/images/nav-watch-sel.gif";
	nav07Off = new Image();
	nav07Off.src = "/images/nav-watch.gif";
	
	nav08Roll = new Image();
	nav08Roll.src = "/images/nav-news-sel.gif";
	nav08Off = new Image();
	nav08Off.src = "/images/nav-news.gif";

	nav09Roll = new Image();
	nav09Roll.src = "/images/nav-shop-sel.gif";
	nav09Off = new Image();
	nav09Off.src = "/images/nav-shop.gif";

	nav10Roll = new Image();
	nav10Roll.src = "/images/nav-in-your-area-sel.gif";
	nav10Off = new Image();
	nav10Off.src = "/images/nav-in-your-area.gif";
	
	navB01Roll = new Image();
	navB01Roll.src = "/images/nav-blue-myprofile-sel.gif";
	navB01Off = new Image();
	navB01Off.src = "/images/nav-blue-myprofile.gif";
	
	navB02Roll = new Image();
	navB02Roll.src = "/images/nav-blue-membership-sel.gif";
	navB02Off = new Image();
	navB02Off.src = "/images/nav-blue-membership.gif";
	
	navB03Roll = new Image();
	navB03Roll.src = "/images/nav-blue-myclub-sel.gif";
	navB03Off = new Image();
	navB03Off.src = "/images/nav-blue-myclub.gif";
	
	navB04Roll = new Image();
	navB04Roll.src = "/images/nav-blue-myschool-sel.gif";
	navB04Off = new Image();
	navB04Off.src = "/images/nav-blue-myschool.gif";
	
	navB05Roll = new Image();
	navB05Roll.src = "/images/nav-blue-play-sel.gif";
	navB05Off = new Image();
	navB05Off.src = "/images/nav-blue-play.gif";
	
	navB06Roll = new Image();
	navB06Roll.src = "/images/nav-blue-coach-sel.gif";
	navB06Off = new Image();
	navB06Off.src = "/images/nav-blue-coach.gif";

	navB07Roll = new Image();
	navB07Roll.src = "/images/nav-blue-tournament-organisers-sel.gif";
	navB07Off = new Image();
	navB07Off.src = "/images/nav-blue-tournament-organisers.gif";

	navB08Roll = new Image();
	navB08Roll.src = "/images/nav-blue-placestoplay-sel.gif";
	navB08Off = new Image();
	navB08Off.src = "/images/nav-blue-placestoplay.gif";
}

//---- NAVIGATION ROLLOVERS ----//
function imgRoll(){
	var n = this.stored;
	if(f.$(n)){
		f.$(n).src = eval(n+"Roll").src;
	}
}

function imgOff(){
	var n = this.stored;
	if(f.$(n)){
		f.$(n).src = eval(n+"Off").src;	
	}
}


//---- HOMEPAGE SEARCH ----//
var homeSearch = function(){
	
	f.$("find-link-00").onclick = function(){
		hideSearches();
		f.$("find-ranking").className="find-search";
		f.$("find-link-00").className="selected";
		return false;
	};
	
	f.$("find-link-01").onclick = function(){
		hideSearches();
		f.$("find-player").className="find-search";
		f.$("find-link-01").className="selected";
		return false;
	};
	f.$("find-link-02").onclick = function(){
		hideSearches();
		f.$("find-club").className="find-search";
		f.$("find-link-02").className="selected";
		return false;
	};
	f.$("find-link-03").onclick = function(){
		hideSearches();
		f.$("find-competition").className="find-search";
		f.$("find-link-03").className="selected";
		return false;
	};
	f.$("find-link-04").onclick = function(){
		hideSearches();
		f.$("find-coach").className="find-search";
		f.$("find-link-04").className="selected";
		return false;
	};	
	
	f.$("find-link-05").onclick = function(){
		hideSearches();
		f.$("find-county").className="find-search";
		f.$("find-link-05").className="selected";
		return false;
	};	
	
	
}

var hideSearches = function(){
	f.$("find-link-00").className="";
	f.$("find-link-01").className="";
	f.$("find-link-02").className="";
	f.$("find-link-03").className="";
	f.$("find-link-04").className="";
	f.$("find-link-05").className="";
	
	f.$("find-ranking").className="find-search hide";
	f.$("find-player").className="find-search hide";
	f.$("find-club").className="find-search hide";
	f.$("find-competition").className="find-search hide";
	f.$("find-coach").className="find-search hide";
	f.$("find-county").className="find-search hide";
}

//---- TROPHY TABS ----//
var trophyTabs = function(){
	
	f.$("tab-results").onclick = function(){
		f.$("tab-results").firstChild.src="/images/tab_results_on.gif";
		f.$("tab-order").firstChild.src="/images/tab_order_of_play.gif";
		f.$("tab-results").className="selected";
		f.$("tab-order").className="";
		f.$("results").className="show-content";
		f.$("order").className="hide";
		return false;
	};
	f.$("tab-order").onclick = function(){
		f.$("tab-results").firstChild.src="/images/tab_results.gif";
		f.$("tab-order").firstChild.src="/images/tab_order_of_play_on.gif";
		f.$("tab-results").className="";
		f.$("tab-order").className="selected";
		f.$("results").className="hide";
		f.$("order").className="show-content";
		return false;
	};	
}

var hideOrderTab = function(){
	f.$("tab-results").className="selected";
	f.$("tab-order").className="";
	f.$("results").className="show-content";
	f.$("order").className="hide";
}

//---- Image Replacement on Junior pages ----//

$(document).ready(function(){   
	ir_init('a.image-replace');
});

function ir_init(DomChunk){
	$(DomChunk).click(function(){
	var a = this.href || this.alt;
	ir_show(a);
	this.blur();
	return false;
  });
}

function ir_show(url){
	$(".kids-photo-large").attr("src", url);
}

//---- LTA functions ----//
var bounds;
var totalMarkers;
var markersAdded;

function InitialiseClubMap(total)
{
    google.load('search', '1');
    bounds = new GLatLngBounds();
    totalMarkers = total;
    markersAdded = 0;
}

function AddClubMarker(postcode, lat, lng, text, clubLink, clubmark, lastClub)
{
    if(lat != '' && lng != '')
    {
        markersAdded++;
        ConfigureClubMarker(lat, lng, text, clubLink, clubmark, lastClub); 
    }
    else
    {
        var localSearch = new GlocalSearch();

        localSearch.setSearchCompleteCallback(null,
            function()
            {
                markersAdded++;
                    
                if (localSearch.results[0])
                { 
                    ConfigureClubMarker(localSearch.results[0].lat, localSearch.results[0].lng, text, clubLink, clubmark, lastClub);  
                     
                    image = new Image();
                    image.src = "/Templates/InYourArea/Mapping/Coordinates.aspx?postcode=" + postcode + "&lat=" + localSearch.results[0].lat + "&lng=" + localSearch.results[0].lng;
                }
            });

        localSearch.execute(postcode + ", UK");
    }
}

function ConfigureClubMarker(lat, lng, text, clubLink, clubmark, lastClub)
{
    var coordinates = new GLatLng(lat, lng);
    
    var customIcon = new GIcon();   
    
    if(clubmark)
    {
        customIcon.infoWindowAnchor = new GPoint(11, 16);
        customIcon.iconSize = new GSize(41, 36);
        customIcon.iconAnchor = new GPoint(11, 41);    
        customIcon.image = '/images/counties/clubmark-map-pin.png';
    }
    else
    {
        customIcon.infoWindowAnchor = new GPoint(10, 15);
        customIcon.iconSize = new GSize(37, 34);
        customIcon.iconAnchor = new GPoint(10, 37);
        customIcon.image = '/images/counties/other-map-pin.png';
    }
    
    var marker = new GMarker(coordinates, customIcon);
    GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(text);}); 
    f.$(clubLink).onclick = function(){marker.openInfoWindowHtml(text);};
    
    googleMap.addOverlay(marker);
    bounds.extend(coordinates);
}

function FinaliseClubMap()
{      
    //googleMap.addControl(new GMapTypeControl());
    
    if(totalMarkers != markersAdded)
    {
        setTimeout(FinaliseClubMap, 100);
    }
    else
    {
        var zoom = googleMap.getBoundsZoomLevel(bounds);
        if(zoom > 14) zoom = 14;
        googleMap.setCenter(bounds.getCenter(), zoom); 
               
        f.$("google-map").style.visibility = "";
    }
}

function SetCentreUsingPostcode(postcode)
{
    var localSearch = new GlocalSearch();

    localSearch.setSearchCompleteCallback(null,
        function()
        {
            if (localSearch.results[0])
            {    
	            var coordinates = new GLatLng(localSearch.results[0].lat, localSearch.results[0].lng);          
	            googleMap.setCenter(coordinates, 15);
                marker = new GMarker(coordinates);
                googleMap.addOverlay(marker);
                f.$("google-map").style.visibility = "";
            }
        });

    localSearch.execute(postcode + ", UK");        
}

function TogglePanel(a, id)
{
    ToggleContent(a, id, "Close panel", "Show panel", "header-link-up", "header-link-down");
}

function ToggleMaterials(a, id)
{
    ToggleContent(a, id, "Hide course materials", "Show course materials", "links-link-up", "links-link-down");
}

function ToggleAlternatives(a, id)
{
    ToggleContent(a, id, "Hide alternatives dates", "Show alternative dates", "links-link-up", "links-link-down");
}

function ToggleAdvancedOptions(a, id)
{
    ToggleContent(a, id, "Hide advanced options", "Show advanced options", "find-course-up", "find-course-down");
}

function ToggleAdvancedSearch(a, id)
{
    ToggleContent(a, id, "Hide advanced search", "Show advanced search", "find-club-up", "find-club-down");
}

function ToggleContent(a, id, upText, downText, upClass, downClass)
{
    var currentClass = f.$(id).className;
    
    if(currentClass == "hide")
    {
        f.$(id).className = "show-content";
        a.innerHTML = upText;
        a.className = upClass;
    }
    else
    {
        f.$(id).className = "hide";
        a.innerHTML = downText;
        a.className = downClass;
    }
}

function ShowDateRadios()
{
    f.$('LiDateRadios').className = "selected";
    f.$('DateRadiosClass').value = "selected";
    f.$('LiDateBoxes').className = "";
    f.$('DivDateRadios').className = "padding";
    f.$('DivDateBoxes').className = "hide";
}

function ShowDateBoxes()
{
    f.$('LiDateRadios').className = "";
    f.$('DateRadiosClass').value = "";
    f.$('LiDateBoxes').className = "selected";
    f.$('DivDateRadios').className = "hide";
    f.$('DivDateBoxes').className = "padding";
}

function CheckTermsAndConditions()
{
    if(f.$('termsCheckBox').checked)
    {
        f.$('spanRequired').className = "hide";
        return true;
    }
    else
    {
        f.$('spanRequired').className = "show-content";
        return false;
    }
}

function OnlineTestsSelected()
{
    f.$('type-option').className = "show-content";
    f.$('more-options').className = "hide";
    f.$('advanced-options').className = "show-content";
    ToggleAdvancedOptions(f.$('advanced-options-link'), 'advanced-options');
}

function QualificationsSelected()
{
    f.$('type-option').className = "hide";
    f.$('more-options').className = "show-content";
}

function OtherFormatSelected()
{
    f.$('type-option').className = "show-content";
    f.$('more-options').className = "show-content";
}

function ShowHide(id)
{
    var element = document.getElementById(id);
    
    if(element != null)
        element.className = (element.className == "hide") ? "show" : "hide"; 
}


                                   
function limiter(controlId, counterId)
{
    var count = "125";
    var tex = document.forms[0][controlId].value;
    var len = tex.length;
    if(len > count)
    {
        tex = tex.substring(0,count);
        document.forms[0][controlId].value =tex;
        len = count;
        return false;
    }
    document.forms[0][counterId].value = count-len;
}



                       