var hostName = 'http://www.afterschoolchicago.org';
var map, geocoder, markers = null;
var overlays = new Array();
var currentCenter = new GLatLng(41.853836,-87.667122);
var zoom = 13;
var deselectCurrent = function() {};
var firstSearch = true;
var errorInCtrl = null;
var ctaOverlay = null;
var resultCount = 0;
var searchParams;
var printCount = 10;

var repID = 1;
function doReplaces(str) {
    //str = unescape(decodeURIComponent(str)).replace(/\+/g," ");
    str = str.replace(/%%/g, hostName + 'map/icons/expand.gif');
    str = str.replace(/\$\$/g,repID);
    repID++;
    return str;    
}

var schIcon = new GIcon();
var libIcon = new GIcon();
var grIcon = new GIcon();
var parkIcon = new GIcon();
var poiIcon = new GIcon();

function initMapPNGIcons() {
    schIcon.image = hostName + "map/icons/school_icon_blue.png";
    schIcon.iconSize = new GSize(24, 24);
    schIcon.iconAnchor = new GPoint(10, 10);
    schIcon.infoWindowAnchor = new GPoint(12, 8);  

    libIcon.image = hostName + "map/icons/library.png";
    libIcon.iconSize = new GSize(32, 32);
    libIcon.iconAnchor = new GPoint(10, 10);
    libIcon.infoWindowAnchor = new GPoint(12, 12);  

    grIcon.image = hostName + "map/icons/green_pin.png";
    grIcon.iconSize = new GSize(24, 24);
    grIcon.shadowSize = new GSize(35, 22);
    grIcon.iconAnchor = new GPoint(10, 10);
    grIcon.infoWindowAnchor = new GPoint(12, 10);      

    parkIcon.image = hostName + "map/icons/tree.png";
    parkIcon.iconSize = new GSize(25, 25);
    parkIcon.shadowSize = new GSize(35, 22);
    parkIcon.iconAnchor = new GPoint(10, 10);
    parkIcon.infoWindowAnchor = new GPoint(12, 8);

    poiIcon.image = hostName + "map/icons/origin.gif"; 
    poiIcon.iconSize = new GSize(29, 40);
    poiIcon.shadowSize = new GSize(36, 40);
    poiIcon.iconAnchor = new GPoint(14, 15);
    poiIcon.infoWindowAnchor = new GPoint(13, 5);
}

function initializePoint(id, text) {
    var id = id;
    var text = text;
	var marker = new GMarker(id, poiIcon);
	var listItem = document.createElement('li');
	var listItemLink = listItem.appendChild(document.createElement('a'));
	listItemLink.href = "#";
	listItemLink.innerHTML = text;
	
	var focusPoint = function() {
		marker.openInfoWindowHtml("<div style='margin-right:10px;font: 12px Ariel, sans-serif;'><strong>" + searchingFrom + "</strong><br />" + text + "</div>");
		deselectCurrent();
		listItem.className = 'currentorigin';
		deselectCurrent = function() { listItem.className = 'origin'; }
		map.panTo(id);
		return false;
	}

	GEvent.addListener(marker, 'click', focusPoint);
	listItemLink.onclick = focusPoint;
	$('sidebar-geocodelist').appendChild(listItem);
	map.addOverlay(marker);
    overlays[overlays.length] = marker;
}

function handleSearch() {    
    counter++; // starts with zero, increment the counter every click on the search button
    
    resultCount = 0;
    _showSplash = false;
    showSplash();
    hide($('programInfoTable'));
    $('maskLayer').hide();
    
    changeBodyClass('standby', 'loading');
    var searchText = $('s').value;
    if (searchText == '') {
        errorIn = 'address';
        changeBodyClass('noerror', 'haserror', $('s'));
        showPopup('address_alertMsg');
        return false;
    }
    
    // only initialize the geocoder once
    if (!geocoder) geocoder = new GClientGeocoder();
    geocoder.getLatLng(searchText+', Chicago, IL',
        function (response) {
            if (!response) {
                errorIn = 'address';
                changeBodyClass('noerror', 'haserror', $('s'));
                showPopup('geocoding_alertMsg');
                return false;
            } else {
			    clearProgramList();
	            clearMarkers();

				initializePoint(response, searchText);
				$('desc').value = searchText;
				$('lat').value = response.toString().substr(response.toString().indexOf("("),response.toString().indexOf(",")).replace(/\(/,"").replace(/\,/,"");
				$('lng').value = response.toString().substr(response.toString().indexOf(",")).replace(/\)/,"").replace(/\,/,"").replace(/ /,"");
				
	            var x = parseFloat($('lng').value) * 530.6;
	            x = x + '';
                $('x').value = x.split('.')[0];
                
                var y = parseFloat($('lat').value) * 689.9;
                y = y + '';
                $('y').value = y.split('.')[0];
				
				changeBodyClass('geocode-ready', 'geocode-done');
				currentCenter = response;
                handleUpdate();				
            }// else
        }// function
    ); // geocoder		
    return false;
}

function clearProgramList() {
	$('resnum').innerHTML = '';
	
    while($('sidebar-list-programs').childNodes.length > 0)
        $('sidebar-list-programs').removeChild($('sidebar-list-programs').lastChild);

    while($('sidebar-list-libraries').childNodes.length > 0)
        $('sidebar-list-libraries').removeChild($('sidebar-list-libraries').lastChild);

    while($('sidebar-list-parks').childNodes.length > 0)
        $('sidebar-list-parks').removeChild($('sidebar-list-parks').lastChild);

    while($('sidebar-list-schools').childNodes.length > 0)
        $('sidebar-list-schools').removeChild($('sidebar-list-schools').lastChild);
    			
    while($('sidebar-geocodelist').childNodes.length > 0)
        $('sidebar-geocodelist').removeChild($('sidebar-geocodelist').lastChild);
        
    $('libraries1').hide(); // horizontal line above libraries
    $('libraries2').hide(); // libraries header
    $('schools2').hide();   // schools header
    $('parks1').hide();     // horizontal line above parks
    $('parks2').hide();     // parks header
    $('programs1').hide();  // horizantal line above community programs
    $('programs').hide(); 
	    
	//initializePoint(new GLatLng($('lat').value, $('lng').value), $('desc').value);
}

function handleUpdate() {
    _alert = null;
    
	if (validateUpdatePrograms() == false) { 
	    changeBodyClass('loading', 'standby');
	    return false 
    };
       
	var frDate = new Date($('from-date').value);
	if (frDate == 'Invalid Date' || $('now').checked) 
		frDate = new Date();

	var age = 0;
	var myage = parseInt($('theage').value);
	
	if (isNaN(myage) || myage < 0)
		age = 15;
	else if (myage < 6)
		age = 1;
	else if (myage < 13)
		age = 2;
	else if (myage < 18)
	    age = 4;
	else
	    age = 8;
	    
	var gender = $('gender').value;
	var type = 0;
    var _progTypes = '';

	if ($('academic').checked) { type += 1; _progTypes += categories['academic'] + ', '; }
	if ($('arts').checked) { type += 2; _progTypes += categories['arts'] + ', '; }
	if ($('health').checked) { type += 4; _progTypes += categories['health'] + ', '; }
	if ($('life').checked) { type += 8; _progTypes += categories['life'] + ', '; }
	if ($('social').checked) { type += 16; _progTypes += categories['social'] + ', '; }
	if ($('religion').checked) { type += 32; _progTypes += categories['religion'] + ', '; }
	if ($('sports').checked) { type += 64; _progTypes += categories['sports'] + ', '; }
	if ($('career').checked) { type += 128; _progTypes += categories['career'] + ', '; }
	if (type == 0) { type = 255; }

	var days = 0;
	var _days = '';
	if ($('monday').checked) { days += 1; _days += daysOfWeek['monday'] + ', '; }
	if ($('tuesday').checked) { days += 8; _days += daysOfWeek['tuesday'] + ', '; }
	if ($('wednesday').checked) { days += 64; _days += daysOfWeek['wednesday'] + ', '; }
	if ($('thursday').checked) { days += 512; _days += daysOfWeek['thursday'] + ', '; }
	if ($('friday').checked) { days += 4096; _days += daysOfWeek['friday'] + ', '; }
	if ($('saturday').checked) { days += 32768; _days += daysOfWeek['saturday'] + ', '; }
	if ($('sunday').checked) { days += 262144; _days += daysOfWeek['sunday'] + ', '; }
	if (days == 0) { days = 299593; }

	var daytime = 0;
	var _daytime = '';
	if ($('morning').checked) { daytime += days; _daytime += timesOfDay['morning'] + ', ';}
	if ($('afternoon').checked) { daytime += 2 * days; _daytime += timesOfDay['afternoon'] + ', ';}
	if ($('evening').checked) { daytime += 4 * days; _daytime += timesOfDay['evening'] + ', ';}
	if (daytime == 0) { daytime = days + 2 * days + 4 * days; }
	  
	// create a request                
    var request = GXmlHttp.create();
	searchParams = "qid=" + counter +
	    "&session=" + session_id +
		"&x="   + $('x').value + 
		"&y="  + $('y').value +
		"&dist=" + ($('dist').value * 10) + 
		"&from=" + (frDate.getMonth() + 1) + '/' + frDate.getDate() + '/' + frDate.getFullYear() +
		"&age="+age+"&gender="+gender+"&type="+type+"&daytime="+daytime;

	request.open("GET", "print.asp?" + searchParams, true);
    $('searchAddress').innerHTML = $('s').value;

    //tell the request what to do when the state changes.
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
		    var json = request.responseText.evalJSON();
		    if (json != null && json.location.length == 0) {
		        showPopup('no_match_alertMsg');
			    return;
		    }// if
		    var locations = json.location;
		    var serachResult = locations.length;
		    $('resnum').innerHTML = serachResult + ' ' + (serachResult > 1 ? resultsFoundStr : resultFoundStr);
            showHidePanel('search_criteria','hide', false);
            showHidePanel('search_results','show', false);
            
		    var counter = 0;
		    locations.each(function(loc) {
                x_coord = loc.lng * 530.6 + '';
                x_coord = x_coord.split('.')[0];
                
                y_coord = loc.lat * 689.9 + '';
                y_coord = y_coord.split('.')[0];
                
		        addMarker(loc.lat, loc.lng, loc.name, loc.dist/10, loc.program[0], loc.icon, loc.locid, x_coord, y_coord);
		    });
            
            zoom = 15;  //global
			if ($('dist').value == "1")
				zoom = 15;
			else if ($('dist').value == "2")
				zoom = 14;
			else if ($('dist').value == "5")
				zoom = 13;
				          
            // load KML only for the first seach
            if(firstSearch) {
                firstSearch = false;
                toggleCTA('cta');
            }
                
            handleResize('handleUpdate');
            changeBodyClass('loading','standby');
        } //if	       
	} //function
    request.send(null);
    return false;
}

// this is used to align show/hide CAT
function positionShowHideCTA() {
    // Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return '210px';
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight) {
		    return '255px';
    }
	// IE 5
	if (document.body) {
		    return '255px';
	}
	// Just in case.
	return '210px';
}

function isAdvSearch() {
    return $('what_kind_of_programs_data').style.display == 'none' ? false : true;
}

function getBufHeight() {
	if (self.innerHeight) return 0;
    else return 1;
}

function getBufWidth() {
	if (self.innerHeight) return 2;
    else return 0;
}

function getSearchPanelWidth() {
    return eval($('search_criteria').style.width.split('px')[0]);
}

function getResultPanelWidth() {
    return eval($('search_results').style.width.split('px')[0]);
}

function handleResize(from) {
    var minWidth = 1060;
    var minHeight = 470;
    $('infoTextSpacer').style.height = '0px';  // reset height of infoTextContainer before finiding actual height of viewport
    
    var _windowWidth = getWindowWidth();
    if(_windowWidth < minWidth)
        _windowWidth = minWidth;
        
    $('map1').style.width = _windowWidth - getSearchPanelWidth() - getResultPanelWidth() - getBufWidth();
    $('title_table').style.width = _windowWidth;    

    var _windowHeight = getWindowHeight() - getBufHeight();    
	if(_windowHeight < minHeight)
        _windowHeight = minHeight;
        
    $('map1').style.height = _windowHeight;    
    $('infoTextSpacer').style.height = _windowHeight - ($('afterschoolchicagoheader').getHeight() + $('whatkindofprogramssection').getHeight() + $('advancedsettingssection').getHeight() + $('advancednfindbuttonssection').getHeight() + $('infoText').getHeight());

    $('results-sidebar').style.height = $('map1').getHeight() - $('bottomInfoDiv').getHeight() - $('topInfoDiv').getHeight() - getBufWidth();
    
    if(map != null) {
        map.checkResize();
        map.setCenter(currentCenter, zoom);
    }
        
    showSplash();
    setProgramImagesSize();
    showMask(); // diplsays mask fit to the new screen size
}

function isChrome() {
    return navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
}

function getWindowWidth() {
    // Standard browsers (Mozilla, Safari, Chrome)
	if (self.innerHeight) {
        var scrollBarWidth = 17;
        return (isAdvSearch() ? self.innerWidth - scrollBarWidth : self.innerWidth);
    }
    // IE
    if (document.body)
        return document.body.clientWidth;
    // Just in case.
    return 0;
}

function getWindowHeight() {
	// Standard browsers (Mozilla, Safari, Chrome)
	if (self.innerHeight) {
        return (isAdvSearch() ? $('searchCriteriaPanel').getHeight() : self.innerHeight - $('title_table').getHeight() - 2);
    }
	// IE
	if (document.body) {
	    return (isAdvSearch() ? $('searchCriteriaPanel').getHeight() : document.body.clientHeight - $('title_table').getHeight());
    }
	// Just in case.
	return 0;
}

function repositionPopup() {
    showPopup(_alert);
}

function changeBodyClass(from, to, errorIn) {
    if(errorIn != null) {
        changeBodyClass('loading', 'standby');
        
        $('errorIndicator').style.position = 'absolute';
        var aLeft = $(errorIn).cumulativeOffset().left;
        var aTop = $(errorIn).cumulativeOffset().top - $(errorIn).getHeight()/2;
        
        if(errorIn.id == 's')
            aLeft += $(errorIn).getWidth();
        else if(errorIn.id == 'academic')
            aLeft += $(errorIn).getWidth() + 220;
        else if(errorIn.id == 'monday')
            aLeft += $(errorIn).getWidth() + 50;
        else if(errorIn.id == 'morning')
            aLeft += $(errorIn).getWidth() + 80;
        else if(errorIn.id == 'later')
            aLeft += $(errorIn).getWidth() + 200;
        else if(errorIn.id == 'serach') {
            aLeft += $(errorIn).getWidth();
            aTop -= 20;
        }
                
        $('errorIndicator').style.left =  aLeft;
        $('errorIndicator').style.top = aTop;
        errorInCtrl = errorIn
        $(errorInCtrl).focus();
    }
    if(to == 'loading')
        showPopup('loading');
    else if(to == 'standby')
        hide($('loading_div'));
        
    document.body.className = document.body.className.replace(from, to);
    return false;
}

function hidePopup(ctrl) {
    if(ctrl.include('.gif')) {
        hide($('popup_alert_div'));
        _alert = null;
    }
    else
        hide($('popup_program'));
    return false;
}

var _alert = null;
function showPopup(img) {
    if(img != null) {
        var image;
        if(img == 'loading') {
            hide($('popup_alert_div'));            
            $('loading_div').style.width = '200px';
            $('loading_div').update(alertMsgs[img]);
            image = $('loading_div');
        }
        else if(img.include('_alertMsg')) {
            hide($('loading_div'));            
            _alert = img;
            $('alertMsg').update(alertMsgs[img.split('_alertMsg')[0]]);
            $('popup_alert_div').style.width = '400px';
            image = $('popup_alert_div');
        }
        else {
            image = $('popup_program');
            image.src = 'images/popup_' + img + lang + '.gif';
        }
        show(image);
        image.style.left = getPopupLeft(image.id);
        image.style.top = getPopupTop(image.id);
    }
    return false;
}

function getPopupLeft(popup) {
    return document.viewport.getScrollOffsets().left + (document.viewport.getWidth() - $(popup).getWidth())/2;
}

function getPopupTop(popup) {
    return document.viewport.getScrollOffsets().top + (document.viewport.getHeight() - $(popup).getHeight())/2;
}  

function tg(id, img, progid) { 
    var tabDiv = $(id);
    while (tabDiv && tabDiv.className != 'mytabbody' &&
           tabDiv.className != 'site')
        tabDiv = tabDiv.parentNode;
    var currPos = tabDiv.scrollTop;

    var style = $(id).style;
    var image = $(img);
    if (style.display == 'block') {
        style.display = 'none';
        image.src = hostName + 'map/icons/expand.gif';
    } else {
        style.display = 'block';
        image.src = hostName + 'map/icons/collapse.gif';
        _track('program_click', session_id, prog_loc_id, progid, 0, counter);
    }

    tabDiv.scrollTop = currPos;
    return false;
}

var errorIn = '';
function validateUpdatePrograms() {
	// Confirm valid date
	if($('later').checked && !valid_date($('from-date').value)) {
	    showAdvancedSearch();
	    errorIn = 'when';
	    changeBodyClass('noerror', 'haserror', $('later'));
	    showPopup('valid_date_alertMsg');
		return false;
	}
	
	// Confirm at least one program type is set
	if ( ( $('academic').checked || $('arts').checked || $('health').checked || $('life').checked || $('social').checked || $('religion').checked || $('sports').checked  || $('career').checked) == false )
	{ 
	    errorIn = 'programs';
	    changeBodyClass('noerror', 'haserror', $('academic'));
	    showPopup('program_type_alertMsg');
		return false;
	};
	
	// Confirm that at least one day is set
	if ( ( $('monday').checked || $('tuesday').checked || $('wednesday').checked || $('thursday').checked || $('friday').checked || $('saturday').checked || $('sunday').checked ) == false )
	{ 
	    errorIn = 'days';
	    showAdvancedSearch();
	    changeBodyClass('noerror', 'haserror', $('monday'));
	    showPopup('atleast_one_day_alertMsg');	    
		return false;
	};
	
	// Confirm that at least one time is set
	if ( ( $('morning').checked || $('afternoon').checked || $('evening').checked ) == false )
	{ 
	    errorIn = 'times';
	    showAdvancedSearch();
	    changeBodyClass('noerror', 'haserror', $('morning'));
	    showPopup('atleast_one_time_alertMsg');
		return false;
	};	
	return true;
}

function hideAdvancedSearch() {
    if($('advancedSearchBtn').src.include('basic'))
        toggleAdvacedSearch('advancedSearchBtn');
}

function showAdvancedSearch() {
    if($('advancedSearchBtn').src.include('advanced'))
        toggleAdvacedSearch('advancedSearchBtn');
}

function valid_date(_date) {
    var flag = false;
    
    if(_date.indexOf('/') < 0 && _date.length == 8)
        _date = _date.substring(4, 6) + '/' + _date.substring(6, 8) + '/' + _date.substring(0, 4)

    if(_date.split('/').length == 3) {
        var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
        if (_date.match(RegExPattern))
            flag = true;
    }    
    return flag;        
}

function clearMarkers() {
    for (var i=0;i<overlays.length;i++)
        map.removeOverlay(overlays[i]);

    overlays = new Array();
}

function addMarker(latitude, longitude, name, dist, progcount, icon, id, x_coord, y_coord) {
	var icon = unescape(decodeURIComponent(icon));
    var marker = null;
    if (icon == 'library') {
        marker = new GMarker(new GLatLng(latitude, longitude), libIcon);
    } else if (icon == 'school') {
        marker = new GMarker(new GLatLng(latitude, longitude), schIcon);
    } else if (icon == 'park') {
        marker = new GMarker(new GLatLng(latitude, longitude), parkIcon);
    } else {
        marker = new GMarker(new GLatLng(latitude, longitude), grIcon);
    }
    
    var listItem = document.createElement('li');
    var listItemLink = listItem.appendChild(document.createElement('a'));
    var name = unescape(decodeURIComponent(name));
    listItemLink.href = "#";
    listItemLink.id = "link_" + id;
    listItemLink.innerHTML = name.replace(/\+/g," ") + ' [' + dist + '&nbsp;' + milesStr + ']' + ((progcount > 1) ? ' (' + progcount + '&nbsp;' + programsStr + ')' : ' (1&nbsp;' + programStr + ')');
	
	// on marker click, load info widnow with tabs [location & programs tabs]
	var focusPoint = function() {
	    if(!sidebar_click)
	        _track('location_icon_click', session_id, id, 0, 0, counter);
	        
	    var url = 'print.asp?purpose=programs&' + searchParams + '&x_coord=' + x_coord + '&y_coord=' + y_coord;
	    new Ajax.Request(url, {
	        method: 'get',
	        onSuccess: function(transport) {
	            var json = transport.responseText.evalJSON();
	            var progs = json.location[0].program;
	            
	            var programs = new Object();
                i = 0; // only marker
                for (var j=0;j<progs.length;j++) {
                    var tab = progs[j].tabname;
                    if (tab == '') tab = otherTab;
                    else {
                        if (typeof tabnames[tab] != 'undefined')
                            tab = tabnames[tab];
                    }
                    if (typeof programs[tab] == 'undefined')
                        programs[tab] = new Array();
                    
                    programs[tab][programs[tab].length] = doReplaces(progs[j].progdiv) + doReplaces(progs[j].actdiv);
                        
                } // for
                
                
                var infoTabs = new Array();
                // add location tab
                infoTabs[0] = new GInfoWindowTab(locationTab, "<div class='site' style='width:375px;height:200px;margin-right:10px;overflow:auto;font: 12px Ariel, sans-serif;'>" + json.location[0].sitediv + "</div>");
                	             
                // add programs tab
                for (tab in programs) {
            	    var allprogs = '';
            	    if(tab == schoolTab)
            	        allprogs += schoolDisclaimer;
            	    
            	    for (var q=0;q<programs[tab].length;q++) {
            		    allprogs += programs[tab][q];
            	    }
                    allprogs = allprogs.replace(/\+/g," ");
                    allprogs = allprogs.replace(/<br><a /g,"</div><br><br><a ");
                    //prompt('', allprogs);
            	    infoTabs[infoTabs.length] = new GInfoWindowTab(tab, "<div class='mytabbody' style='width:375px;height:200px;margin-right:10px;overflow:auto;font: 12px Ariel, sans-serif;'>" + allprogs + "</div>");
                }
                
                marker.openInfoWindowTabsHtml(infoTabs, {noCloseOnClick:true});
	            deselectCurrent();
	            listItem.className = 'current';
	            deselectCurrent = function() { listItem.className = ''; }
	            var handler = GEvent.addListener(map, "infowindowclose", function() { 
                    deselectCurrent();
                    GEvent.removeListener(handler);
                }); 
	        }
	    });
		return false;
	}	
	
    var sidebar_click = false;
	var sidebar_location_click = function () {
	    sidebar_click = true;
	    _track('location_sidebar_click', session_id, id, 0, 1, counter);
	    focusPoint();
	    sidebar_click = false;
	}
	
	var orig_image = null;
	var orig_back_col = null;
	var orig_col = null;
	var highLightMarker = function() {
	    orig_image = (marker.getIcon()).image;
	    orig_back_col = $("link_" + id).style.backgroundColor;
	    orig_col = $("link_" + id).style.color;
	    var new_img = (marker.getIcon()).image.split('.png')[0] + '_hl.png';
	    marker.setImage(new_img);
	    $("link_" + id).style.backgroundColor = "silver";
	    $("link_" + id).style.color = "black";
	    $("link_" + id).focus();
	}
	var deHighLightMarker = function() {
	    marker.setImage(orig_image);
	    $("link_" + id).style.backgroundColor = orig_col;
	    $("link_" + id).style.color = orig_col;
	}

	GEvent.addListener(marker, 'click', focusPoint);
	GEvent.addListener(marker, 'mouseover', highLightMarker);
	GEvent.addListener(marker, 'mouseout', deHighLightMarker);
	listItemLink.onclick = sidebar_location_click;
	listItemLink.onmouseover = highLightMarker;
	listItemLink.onmouseout = deHighLightMarker;

    if (icon == 'library') {
	    $('sidebar-list-libraries').appendChild(listItem);
	    $('libraries1').show(); // horizontal line above libraries
	    $('libraries2').show(); // libraries header
    } else if (icon == 'school') {
	    $('sidebar-list-schools').appendChild(listItem);
	    $('schools2').show();   // schools header
    } else if (icon == 'park') {
	    $('sidebar-list-parks').appendChild(listItem);                
	    $('parks1').show();     // horizontal line above parks
	    $('parks2').show();     // parks header
    } else {
	    $('sidebar-list-programs').appendChild(listItem);               
	    $('programs1').show();  // horizantal line above community programs
	    $('programs').show();   // programs header
    }

	map.addOverlay(marker);
	overlays[overlays.length] = marker;
}

var _showSplash = true;
function showSplash(from) {
    if(_showSplash) {
        show($('splashImg'));
        $('splashImg').src = 'images/splash' + lang + '.gif';
        $('splashImg').width = 900;
        $('splashImg').height = 352;

        if((document.viewport.getWidth() - $('search_criteria').getWidth()) <= 900)
            $('splashImg').width = $('map1').getWidth();

        $('splashImg').style.left = $('search_criteria').getWidth() + ($('map1').getWidth() - $('splashImg').getWidth()) / 2;
        $('splashImg').style.top = 50 + ($('map1').getHeight() - $('splashImg').getHeight()) / 2;
        
        showMask();

        // to make "program types" area on the image clickable
        $('checkout').innerHTML = '<area shape="rect" coords="'
            + getCheckoutXCord(630) + ',' + getCheckoutYCord(275) + ',' 
            + getCheckoutXCord(835) + ',' + getCheckoutYCord(330) + '" href="javascript:showProgramsPopup(true);" />';
    }
    else {
        hide($('splashImg'));
    }
}

function showMask() {
    $('maskLayer').style.left = $('map1').cumulativeOffset().left;
    $('maskLayer').style.top = $('map1').cumulativeOffset().top;
    $('maskLayer').style.width = $('map1').getWidth();
    $('maskLayer').style.height = $('map1').getHeight();
}

function setProgramImagesSize() {
    $('programInfoTable').style.left = $('search_criteria').getWidth() + ($('map1').getWidth() - $('programInfoTable').getWidth()) / 2;
    $('programInfoTable').style.top = 50 + ($('map1').getHeight() - $('programInfoTable').getHeight()) / 2;   
}
        
function showProgramsPopup(flag) {
    if(flag) {
        _showSplash = false;
       
        hide($('splashImg'));
        setProgramImagesSize();
                
        $('pImg1').src = 'images/creative' + lang + '.gif';
        $('pImg2').src = 'images/academic' + lang + '.gif';
        $('pImg3').src = 'images/sports' + lang + '.gif';
        $('pImg4').src = 'images/health' + lang + '.gif';
        $('pImg5').src = 'images/life' + lang + '.gif';
        $('pImg6').src = 'images/career' + lang + '.gif';
        $('pImg7').src = 'images/community' + lang + '.gif';
        $('pImg8').src = 'images/religious' + lang + '.gif';
        $('progDescHeader').update(progHeaderDesc);
        $('closeProgTypeCloseImgBtn').src = 'images/closebtn.gif';        
        
        show($('programInfoTable'));
        showProgramDesc('pImg1');
    }
}

function getCheckoutYCord(_y) {
    return ($('splashImg').getHeight() * _y / 350);
}

function getCheckoutXCord(_x) {
    return ($('splashImg').getWidth() * _x / 900);
}

var prevProgram = null;
function showProgramDesc(_prog) {
    if(prevProgram != null)
        $(prevProgram).className = 'deSelectProgram';
    else
        prevProgram = '/images/creative.gif';
           
    $(_prog).className = 'selectProgram';
    prevProgram = _prog;
    
    var progType = $(_prog).src.split('/');
    var prog = progType[progType.length-1].split('.')[0].split('_es')[0];
    $('searchBtnTd').innerHTML = searchBtnTxt[prog];
    $('programDesc').innerHTML = categoryDescs[prog];
}

function setProgramType(_prog) {
    $('academic').checked = false;
    $('arts').checked = false;
    $('career').checked = false;
    $('health').checked = false;
    $('life').checked = false;
    $('religion').checked = false;
    $('social').checked = false;
    $('sports').checked = false;
    
    var search = $(prevProgram).src;
    if(search.include('creative'))
        $('arts').checked = true;
    else if(search.include('academic'))
        $('academic').checked = true;
    else if(search.include('sports'))
        $('sports').checked = true;
    else if(search.include('health'))
        $('health').checked = true;
    else if(search.include('life'))
        $('life').checked = true;
    else if(search.include('career'))
        $('career').checked = true;
    else if(search.include('community'))
        $('social').checked = true;
    else if(search.include('religious'))
        $('religion').checked = true;
            
    closeProgTypesPopup();
}

function hideSearchResultPanel() {
    $('programs1').hide();  // horizantal line above community programs
    $('programs').hide();   // programs header
    $('libraries1').hide(); // horizontal line above libraries
    $('libraries2').hide(); // libraries header
    $('parks1').hide();     // horizontal line above parks
    $('parks2').hide();     // parks header
    $('schools2').hide();   // schools header
}

var feedback_count;
var session_id;
var counter;
var lang = '';
//var cookie = new Cookies();
function init() {
    session_id = generateGuid();
    hostName = window.location.href.split('locator')[0];
    initMapPNGIcons();
    feedback_count = 0;
    counter = 0;    // search counter
        
    lang = cookie.getCookieValue('lang');//getLang(); // get previously used lang if available in cookie
    _track('init', session_id, 0, 0, 0, counter); // track initial load    
    showHidePanel('search_results','hide', true);    
	_mSvgEnabled = false; // Firefox 1.5.0.4/Mac wasn't rendering the SVG.

	$('s').value = '';
	$('s').select();
	$('dist').value = '1';
	
	$('gender').value = '3';
	$('theage').value = '?';
	
	$('academic').checked = true;
	$('arts').checked = true;
	$('health').checked = true;
	$('life').checked = true;
	$('social').checked = true;
	$('religion').checked = true;
	$('sports').checked = true;
	$('career').checked = true;
	
	$('now').checked = true;
	$('from-date').value = get_todays_date();
	
	$('monday').checked = true;
	$('tuesday').checked = true;
	$('wednesday').checked = true;
	$('thursday').checked = true;
	$('friday').checked = true;
	$('saturday').checked = true;
	$('sunday').checked = true;

	$('morning').checked = true;
	$('afternoon').checked = true;
	$('evening').checked = true;
	
	try {
	    map = new GMap2($("map1"));
	    map.setCenter(currentCenter, zoom);	
	    map.addControl(new GSmallMapControl());
	    map.addControl(new GMapTypeControl());
	    map.addControl(new GScaleControl());
	}catch(ex) { alert('Google map is required for this website to function properly.'); return; }
    
    show($('map-legend'));
	$('map-legend').style.right = positionShowHideCTA();    

    changeBodyClass('loading','standby');
}

function get_todays_date() {
	var today = new Date();
    return (today.getMonth() + 1) + '/' + today.getDate() + '/' + today.getFullYear();
}

window.onresize = function () { handleResize('resize'); map.checkResize(); };
window.onload = init;

function toggleCheckbox(chkbox) {
    $(chkbox).checked = !$(chkbox).checked;
    hideErrorIndicator('program', chkbox);
}

function hideErrorIndicator(ctrlName, ctrl) {
    if(ctrlName == 'address') {
        changeBodyClass('haserror','noerror');
    }
    else if(ctrlName == 'programs') {
        if ( ( $('academic').checked || $('arts').checked || $('health').checked || $('life').checked || $('social').checked || $('religion').checked || $('sports').checked  || $('career').checked) == true) {
            changeBodyClass('haserror','noerror');
        }
    }
    else if(ctrlName == 'days') {
        if ( ( $('monday').checked || $('tuesday').checked || $('wednesday').checked || $('thursday').checked || $('friday').checked || $('saturday').checked || $('sunday').checked ) == true ) {
            changeBodyClass('haserror','noerror');
        }
    }
    else if(ctrlName == 'times') {
        if ( ( $('morning').checked || $('afternoon').checked || $('evening').checked ) == true ) {
            changeBodyClass('haserror','noerror');
        }
    }
    else {
        if(errorInCtrl != null) {
            try {
                $(errorInCtrl).focus();
            }catch(ex) {}
        }
        changeBodyClass('haserror','noerror');        
    }
    hide($('popup_alert_div'));
    errorInCtrl = null;
    _alert = null;
}

function hide(ctrl) {
    ctrl.style.display = 'none';
}

function show(ctrl) {
    ctrl.style.display = 'block';
}

function dateChanged() {
    $('later').checked = true;
    changeBodyClass('haserror','noerror');
}

function showHidePanel(panel, task, resize) {
    
    var panelWidth = 275;

    if(panel == 'search_criteria') {
        hideAdvancedSearch();
        if(task == 'hide') {
            $('search_again_img').setAttribute('onclick', "showHidePanel('search_criteria','show', true);");
            $('search_again_img').src = $('search_again_img').src.replace('hide', 'again');
        }
        else {
            $('search_again_img').setAttribute('onclick', "showHidePanel('search_criteria','hide', true);");
            $('search_again_img').src = $('search_again_img').src.replace('again', 'hide');
        }
    }
    else if(panel == 'search_results') {
        panelWidth = 200;
        $('search_again_img').src = 'images/button_search_again' + lang + '.gif';
        
        if(task == 'hide')
            hideSearchResultPanel(); // hide search result subsections
    }
    
    panelWidth = panelWidth + 'px';    
    $(panel).style.width = (task == 'show' ? panelWidth : '0px');
    $(panel).style.display = (task == 'show' ? 'block' : 'none');
    
    if(task != 'show')
        changeBodyClass('haserror','noerror');

    if(resize)
        handleResize('showhidepanel');
}

function toggleAdvacedSearch(ctrl) {
    if($(ctrl).src.include('advanced')) {
        $(ctrl).src = $(ctrl).src.replace('advanced', 'basic');
        show($('what_kind_of_programs_data'));
    }
    else {
        hide($('what_kind_of_programs_data'));
        $(ctrl).src = $(ctrl).src.replace('basic', 'advanced');
        $('what_kind_of_programs_data').style.display = 'none';
        if(errorIn == 'programs' || errorIn == 'days' || errorIn == 'times') {
            hideErrorIndicator();
            errorIn = null;                        
        }
    }
    try {
        $('serach').focus();
    }catch(ex) {}
    handleResize('toggleAdvacedSearch');
}

function closeProgTypesPopup() {
    hide($('programInfoTable'));
    handleSearch();
}

function toggleCTA(ctrl) {    
    if($(ctrl).innerHTML.include(hideCtaStr))
        $(ctrl).innerHTML = showCtaStr;
    else
        $(ctrl).innerHTML = hideCtaStr;
        
     if($(ctrl).innerHTML.include(hideCtaStr)) {
        if(ctaOverlay == null) {
            changeBodyClass('standby','loading');
            ctaOverlay = new GGeoXml("http://www.afterschoolchicago.org/map/kml/cys.kml",
	            function () { changeBodyClass('loading','standby'); })
            map.addOverlay(ctaOverlay);
        }
        else
            ctaOverlay.show();
    }
    else
        ctaOverlay.hide();
}

var prog_loc_id = 0;
function _track(_type, session_id, location_id, program_id, side_bar, counter) {
    var params;
    
    if(_type == 'init') {
        params = { 
            session: session_id,
            qid: counter
        };
    }
    else if(_type == 'location_sidebar_click') {
        params = { 
            session: session_id,
            loc: location_id,
            sidebar : 1,
            qid: counter
        };
        prog_loc_id = location_id;
    }
    else if(_type == 'location_icon_click') {
        params = { 
            session: session_id,
            loc: location_id,
            sidebar : 0,
            qid: counter
        };
        prog_loc_id = location_id;
    }
    else if(_type == 'program_click') {
        params = { 
            session: session_id,
            loc: location_id,
            prog : program_id,
            qid: counter
        };
    }
    
    new Ajax.Request('usage.asp', {
        method: 'get',
        parameters: params,
        onSuccess: function(transport) {},
        onFailure: function() {}
    });
}

function generateGuid()
{
    var result, i, j;
    result = '';
    for(j=0; j<32; j++)  {
        if( j == 8 || j == 12|| j == 16|| j == 20)
        result = result + '-';
        i = Math.floor(Math.random()*16).toString(16).toUpperCase();
        result = result + i;
    }
    return result;
}

function showHelp(url) {
    var windowWidth = 800;
    if(screen.width > 800)
        windowWidth = 1000;
        
    var windowHeight = 600;
    var windowLeft = (screen.width - windowWidth) / 2;
    var windowTop = 200;
    window.open(url,'After_School_Chicago_Help','width=' + windowWidth + ',height=' + windowHeight + ',left=' + windowLeft + ',top=' + windowTop + ',screenX=' + windowLeft + ',screenY=' + windowTop + ',scrollbars=yes, resizable=yes').focus();
}

function showPopupWindow(url, window_name, width, height) {
    var windowWidth = (isNaN(width) ? 570 : width);
    var windowHeight = (isNaN(height) ? 450 : height);
    var windowLeft = (screen.width - windowWidth) / 2;
    var windowTop = 200;
    
    if(url.include('feedback')) {
        feedback_count++;
        url = url + '?session_id=' + session_id + '&feedback_count=' + feedback_count;
    }
    
    window.open(url, window_name, 'width=' + windowWidth + 
        ',height=' + windowHeight + ',left=' + windowLeft + ',top=' + windowTop + ',screenX=' + windowLeft + ',screenY=' + windowTop + 
        ',scrollbars=yes, resizable=yes').focus();
}

function getLang() {
    var url = window.location.href.split('/');
    var page = url[url.size()-1];
    try {
        return '_' + page.split('_')[1].split('.')[0];
    }catch(ex) { return '' }
}

function printResult() {
    showPopupWindow('print_result.asp?' + searchParams + '&origin=' + $F('s') + '&printCount=' + printCount, 'SearchResult', 850, 600);
}