google.load("maps", "2",{"other_params":"sensor=false"});

var $E = YAHOO.util.Event, $D = YAHOO.util.Dom;

var map, baseIcon;

function initialize() {

	initListeners();

    if (!document.getElementById("map")) {
        return false;
    }

    map = new google.maps.Map2(document.getElementById("map"));

    var cntr;

    //use center or first school
    if (typeof center != 'undefined') {
        cntr = new GLatLng(center[0], center[1]);

        // Create our "tiny" marker icon
        var homeIcon = new GIcon(G_DEFAULT_ICON);

        homeIcon.image = "http://maps.google.com/mapfiles/kml/pal3/icon56.png";
        homeIcon.iconSize = new GSize(32, 32);

        // Set up our GMarkerOptions object
        markerOptions = { icon:homeIcon };

        map.addOverlay(new GMarker(cntr, markerOptions));

    }else{
		
		
		for(var i = 0, l = schools.length; i <  l; i++){
			
			if(schools[i] != null){
				
			school = schools[i];
        	cntr = new GLatLng(school[0], school[1]);
				
			}
			
		}
		
    }
    
	if(cntr == null){
		
	return;	
	}
	
	
    //zoom set by inline script
    map.setCenter(cntr, zoom);
    map.setUIToDefault();

    baseIcon = new GIcon(G_DEFAULT_ICON);
    //baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    //baseIcon.iconSize = new GSize(56, 31);
    baseIcon.shadowSize = new GSize(0, 0);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);

    for (var i = 0, l = schools.length; i < l; i++){
        school = schools[i];
		
		if(school == null){
		
		continue;
		}
        point = new GLatLng(school[0], school[1]);
        marker = createMarker(point, i);

        map.addOverlay(marker);

    }

    

    
}

// Creates a marker whose info window displays the letter corresponding
// to the given index.
function createMarker(point, index) {
    // Create a lettered icon for this point using our icon class
    var letter = String.fromCharCode("A".charCodeAt(0) + index);
    var letteredIcon = new GIcon(baseIcon);
	
	if((index+1) >= 100){
	letteredIcon.iconSize = new GSize(55, 31);
	}
	
	if((index+1) < 100){
	letteredIcon.iconSize = new GSize(45, 31);
	}
	
	if((index+1) < 10){
	letteredIcon.iconSize = new GSize(35, 31);
	}
	
	
	letteredIcon.image = "http://chart.apis.google.com/chart?chst=d_bubble_text_small_withshadow&chld=bbT|"+(index+1)+"|C6EF8C|000000";
	
	
    //letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

    // Set up our GMarkerOptions object
    markerOptions = { icon:letteredIcon };
    var marker = new GMarker(point, markerOptions);
    /*
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml("Marker <b>" + letter + "</b>");
    });*/
    return marker;
}


function initListeners(){

    $E.on('schools', 'click', function(e){
									   
		//check there is a map there 
		if (!$D.get('map')){
            return false;
        }

        var el = $E.getTarget(e);

        if ('li' != el.tagName.toLowerCase()){
            el = $D.getAncestorByTagName(el, 'li');
        }

        if (!el){
            return false;
        }

        var els = $D.getChildren(el.parentNode);

        for (var i = 0, l = els.length; i < l; i++){
            if (els[i] == el){
                break;
            }
        }

        panToSchool(i);

  


		 
        panToSchool(i);
		scrollPage($D.getXY('map')[1], 0.5, YAHOO.util.Easing.easeOut); 

    });
	
	 $E.on('award1-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award1-icon', 'visibility', 'visible');$D.setXY('award1-icon', [region.left + 30, region.top + 5]); }}); 
	 $E.on('award1-label', 'mouseout', function(e){$D.setStyle('award1-icon', 'visibility', 'hidden');});
	 
	 $E.on('award2-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award2-icon', 'visibility', 'visible');$D.setXY('award2-icon', [region.left + 30, region.top + 5]); }});
	 $E.on('award2-label', 'mouseout', function(e){$D.setStyle('award2-icon', 'visibility', 'hidden');});
	 
	 $E.on('award3-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award3-icon', 'visibility', 'visible');$D.setXY('award3-icon', [region.left + 30, region.top + 5]); }});
	 $E.on('award3-label', 'mouseout', function(e){$D.setStyle('award3-icon', 'visibility', 'hidden');});
	 
	 $E.on('award4-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award4-icon', 'visibility', 'visible');$D.setXY('award4-icon', [region.left + 30, region.top + 5]); }});
	 $E.on('award4-label', 'mouseout', function(e){$D.setStyle('award4-icon', 'visibility', 'hidden');});
	 
	 $E.on('award5-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award5-icon', 'visibility', 'visible');$D.setXY('award5-icon', [region.left + 30, region.top + 5]); }});
	 $E.on('award5-label', 'mouseout', function(e){$D.setStyle('award5-icon', 'visibility', 'hidden');});
	 
	 $E.on('award6-label', 'mousemove', function(e){var region = $D.getRegion(this);if(e.clientX < region.left+30){$D.setStyle('award6-icon', 'visibility', 'visible');$D.setXY('award6-icon', [region.left + 30, region.top + 5]); }});
	 $E.on('award6-label', 'mouseout', function(e){$D.setStyle('award6-icon', 'visibility', 'hidden');});
	 
	 
	 var a1 = $D.getElementsByClassName("award1");
	 var a2 = $D.getElementsByClassName("award2");
	 var a3 = $D.getElementsByClassName("award3");
	 var a4 = $D.getElementsByClassName("award4");
	 var a5 = $D.getElementsByClassName("award5");
	 var a6 = $D.getElementsByClassName("award6");
	 
	 
	 
	 $E.on(a1, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award1-icon', 'visibility', 'visible');$D.setXY('award1-icon', [region.left -70 , region.top +30]); });
	 $E.on(a1, 'mouseout', function(e){$D.setStyle('award1-icon', 'visibility', 'hidden');});
	 
	 $E.on(a2, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award2-icon', 'visibility', 'visible');$D.setXY('award2-icon', [region.left-70 , region.top +30]); });
	 $E.on(a2, 'mouseout', function(e){$D.setStyle('award2-icon', 'visibility', 'hidden');});
	 
	 $E.on(a3, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award3-icon', 'visibility', 'visible');$D.setXY('award3-icon', [region.left -70, region.top+30 ]); });
	 $E.on(a3, 'mouseout', function(e){$D.setStyle('award3-icon', 'visibility', 'hidden');});
	 
	 $E.on(a4, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award4-icon', 'visibility', 'visible');$D.setXY('award4-icon', [region.left-70 , region.top+30 ]); });
	 $E.on(a4, 'mouseout', function(e){$D.setStyle('award4-icon', 'visibility', 'hidden');});
	 
	 $E.on(a5, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award5-icon', 'visibility', 'visible');$D.setXY('award5-icon', [region.left-70, region.top +30]); });
	 $E.on(a5, 'mouseout', function(e){$D.setStyle('award5-icon', 'visibility', 'hidden');});

	 $E.on(a6, 'mouseover', function(e){var region = $D.getRegion(this);$D.setStyle('award6-icon', 'visibility', 'visible');$D.setXY('award6-icon', [region.left-70 , region.top +30]); });
	 $E.on(a6, 'mouseout', function(e){$D.setStyle('award6-icon', 'visibility', 'hidden');});


    $E.on(window, 'unload', GUnload);

}


	 function scrollPage(to, dur, ease) {  
     var setAttr = function(a, v, u) {  
         window.scroll(0, v);  
    };  
  
     var anim = new YAHOO.util.Anim(null,  
        { 'scroll' : {  
             from : $D.getDocumentScrollTop(),  
           to : to }  
         },  
        dur, ease  
     );  
     anim.setAttribute = setAttr;  
    anim.animate();  
 }  




function panToSchool(i){
    school = schools[i];
	
	//is we dotn have a marker then return;
	if(school == null){
	
	return;
	}

    point = new GLatLng(school[0], school[1]);

    map.panTo(point);
	map.setZoom(12);
}

google.setOnLoadCallback(initialize);

YAHOO.namespace('UFA');

YAHOO.UFA.authorityAutoComplete = function () {

    return  {

        lastQuery: null,

        init : function(){

            var el = $D.get('localauthority');

            var container = document.createElement('div');
            $D.generateId(container);

            el.parentNode.appendChild(container);

            var oDS = new YAHOO.util.XHRDataSource("/about/schools-locator/authorities");
            // Set the responseType
            oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
            // Define the schema of the delimited results
            oDS.responseSchema = {
                recordDelim: "\n",
                fieldDelim: "\t"
            };
            // Enable caching
            oDS.maxCacheEntries = 5;

            var config = {
                animVert: true,
                animHoriz: true,
                animSpeed: 0.25,
                minQueryLength: 1,
                maxResultsDisplayed: 21,
                autoHighlight: false,
                forceSelection: true
            }

            var myAutoComp = new YAHOO.widget.AutoComplete(el, container, oDS, config);

            myAutoComp.itemSelectEvent.subscribe(function(){
                document.getElementById('q').value = '';
            });
            
        }

    };

}();

$E.onDOMReady(YAHOO.UFA.authorityAutoComplete.init);

