markers = new Array();
marx = new Array();

$().ready(function() {
    var datasrc = 'http://communities.usc.edu/assets/inc/programs.php';
    $.get(datasrc, function(jsondata) {
    eval(jsondata);

    // search default message disappears when the search field is focused
    $("#programs_search input").focus( function() {
	if ($(this).val()=="Search Programs") {$(this).val("");}
    });

    // search default message returns when the search field is left blank
    $("#programs_search input").blur( function() {
        if ($(this).val()=="") {$(this).val("Search Programs");}
    });

    markers.sort(sortbytitle);

    for(t=0; t < markers.length;t++) {
	markers[t].cats = new Array();
	markers[t].cats = markers[t].categories.split('|');
        for(n=0; n<markers[t].cats.length; n++) {
	markers[t].types = new Array();
        switch(markers[t].cats[n]) {
case '01':  markers[t].types[n] = 'Educated Children'; break;
case '02':  markers[t].types[n] = 'Healthy Families'; break;
case '03':  markers[t].types[n] = 'Research'; break;
case '04':  markers[t].types[n] = 'Safe Streets'; break;
case '05':  markers[t].types[n] = 'Service Learning'; break;
case '06':  markers[t].types[n] = 'Programs with local schools'; break;
case '07':  markers[t].types[n] = 'Early childhood education programs'; break;
case '08':  markers[t].types[n] = 'Programs in math, science and engineering'; break;
case '09':  markers[t].types[n] = 'Programs in the arts'; break;
case '10':  markers[t].types[n] = 'Tutoring and Mentoring'; break;
case '11':  markers[t].types[n] = 'Counseling/Support Programs'; break;
case '12':  markers[t].types[n] = 'Dental Programs'; break;
case '13':  markers[t].types[n] = 'Food, Toy Drives'; break;
case '14':  markers[t].types[n] = 'Medical Resources'; break;
case '15':  markers[t].types[n] = 'Economic Development'; break;
case '16':  markers[t].types[n] = 'Education'; break;
case '17':  markers[t].types[n] = 'Environmental'; break;
case '18':  markers[t].types[n] = 'Health'; break;
case '19':  markers[t].types[n] = 'Public Policy'; break;
case '20':  markers[t].types[n] = 'Sports and Recreation'; break;
case '21':  markers[t].types[n] = 'Thriving Businesses'; break;
case '22':  markers[t].types[n] = 'Volunteer Opportunities'; break;
case '23':  markers[t].types[n] = 'USC Students'; break;
case '24':  markers[t].types[n] = 'USC Faculty, Staff, Alumni and Neighbors'; break;
                default:   markers[t].types[n] = '';
            }
	    markers[t].type = markers[t].type + markers[t].types[n];
	    var mid = markers[t].id;
	    marx[mid] = markers[t];
        }
    }
    var sortid = '999';
    $('#sortby li ul').hide();
    $('#sortby li a').click(function() {
	if(document.body.scrollTop) {
	    var scrolly = document.body.scrollTop;
	} else {
	    var scrolly = window.pageYOffset;
	}
	window.location.hash='#'+this.parentNode.id;
	window.scrollTo(0,scrolly);

	if(this.className=='top') {
	    if(this.parentNode.className=='on') {
		$('li.on').removeClass('on'); 
		$('#programdata').html('');
		$('#'+this.parentNode.id+' ul:visible').slideUp(); sortid = '';
	    } else {
		sortid = this.parentNode.id;
		$('#sortby li.on').removeClass('on');
		$('#sortby li ul:visible').slideUp();
		if(sortid=='05') {
		    $('li#05 ul li a').each(function() {
			var p=0;
			for(i=0; i<markers.length; i++) { if(!p) {
			    var sponsor = markers[i].univSponsor; 
			    if(sponsor && (sponsor.indexOf(this.innerHTML)!=-1) && (markers[i].categories.indexOf('05')!=-1)) {
				p++;
			    }
			} }
			if(!p) { this.parentNode.style.display = 'none'; }
		    });
		}
		if(sortid=='school') {
                    $('li#school ul li a').each(function() {
                        var p=0;
                        for(i=0; i<markers.length; i++) { if(!p) {
                            var sponsor = markers[i].univSponsor;
                            if(sponsor && (sponsor.indexOf(this.innerHTML)!=-1)) {
                                p++;
                            }
                        } }
                        if(!p) { this.parentNode.style.display = 'none'; }
                    });
                }

		$('#'+sortid+' ul').slideDown();
		$('#'+sortid).addClass('on');
		if(!this.parentNode.childNodes[1]) { sortprograms(sortid,markers); } else { $('#programdata').html(''); }
	    }
	} else { 
	    sortid = this.parentNode.id;
	    sortprograms(sortid,markers); 
	}
    return false; 
    });

//    $('#sortby li a').click(function() { sortprograms(this.parentNode.id,markers); return false; });

    // search behavior
    $('#programs_search').submit( function() {

	//deselect other sort options
	$('#sortby li.on').removeClass('on');
	$('#sortby li ul:visible').slideUp();

	//on form submit, grabs  the search term and saves it to a variable
	var psearch = $("#programs_searchbox").attr('value').toLowerCase();

	//change location bar to make bookmarkable, back-button, etc.
	window.location.hash='#search='+psearch;

	searchfor(psearch);
	return false;
    });


    function searchfor(psearch) {
		//clears out previous results
		$('#programdata').html(''); 

		//inserts a div called "search_results and text about what you searched for"
		$('#programdata').append('<ul id="search_results"><h3>Search results for: '+psearch+'</h3></ul>');

		//start a counter for the number of results
		var n = 0;

		//loop through markers
		for(a=0; a<markers.length; a++) {
			
			//builds the searchable string(s)
	  		var thisprogram = (markers[a].name + markers[a].country + markers[a].regionname + markers[a].schoolname + markers[a].description).toLowerCase();
			
			//searching the saved string for the search term
	    	        var thisresult = thisprogram.indexOf(psearch);
			
			//If it's there, display the results in the search_results div
			if(thisresult!=-1) { 
				var display_results = '<li><a id="s_'+markers[a].id+'" href="/assets/inc/program.html?id='+markers[a].id+'" class="program thickbox">'+markers[a].name+'</a></li>';
				$('#search_results').append(display_results); n++;
			};
		}; 

		if(!n) {
		       $('#search_results').append("<li>Sorry, there were no matches for your search.</li>");
		}
	TB_search_init(markers);
    	return false; 
	}

function TB_search_init(markers) {
    circle_loading = new Image(100,100);
    circle_loading.src="/assets/images/loading.gif";
    $("a.thickbox").click(function(){
        var t = this.id.substring(2);
        TB_show(marx[t]);
        this.blur();
        return false;
    });
}

howmany = function(field,match) {
if(match) {
       //start the count at zero
       n=0;
       //loop through markers
       for(a=0; a<markers.length; a++) {
            //determine which field we're comparing
            switch(field) {
                case 'school': comp = markers[a].school; break;
            }
     
            //convert variables to lower case
            comp = comp.toLowerCase(); match = match.toLowerCase();
        
            //increment the count by one for each match
            if(comp.indexOf(match) != -1) {
                n++;
            }
       }
       return n;
}
}        


    // check for hash info
    if(window.location.hash) {
        phash = window.location.hash.substring(1).split('=');
        if(phash[0]=='search') {
	    $("#programs_searchbox").val()==phash[1];
            searchfor(phash[1]);
        } else {
	    $('#programdata').append('<ul></ul>');
	    if(phash[0]) { 
		var p = 1;
		$('ul li.on').removeClass('on');
		$('ul li#'+phash[0]).addClass('on');
		$('ul li ul li#'+phash[0]).each(function() { $(this.parentNode.parentNode).addClass('on'); $(this.parentNode).slideDown(); });
		$('ul li#'+phash[0]+' ul').each(function() { $(this.parentNode).addClass('on'); $(this).slideDown(); p = 0; });
		if(p) { sortprograms(phash[0],markers); }
	    }
	}
	window.scrollTo(0,0); 
    } else {
    }
return false;
});

Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++)
	{
		for(var x = 0, y = r.length; x < y; x++)
		{
			if(r[x]==this[i])
			{
				continue o;
			}
		}
		r[r.length] = this[i];
	}
	return r;
}

function sortprograms(type,programdata) {
    $('ul li ul li.on').removeClass('on');
    $('li#'+type).addClass('on');
    $('#programdata').html(''); $('#programdata').append('<ul></ul>');

if((type.substr(0,3)=='05_') || (type.substr(0,2)=='s_')) { 
	if(type.substr(0,3)=='05_') { var typestring = type.substring(3); } else { var typestring = type.substring(2); }
	var school_list = new Array('13;Letters','01;Architecture','02;Business','03;Cinema','04;Communication','05;Dentistry','06;School of Education','07;Engineering','08;Fine Arts','09;Gerontology','12;Law','14;Medicine','15;Music','16;Pharmacy','17;Policy','18;Social Work','19;Theatre','23;Accounting');
        for(m=0; m<school_list.length; m++) {
           school_list[m] = school_list[m].split(';');
           if(school_list[m][0]==typestring) { var schoolname = school_list[m][1]; }
        }
}

    for(i=0; i<programdata.length; i++) {
if((type.substr(0,3)=='05_') || (type.substr(0,2)=='s_')) {
	var cat_match = '|'+programdata[i].univSponsor;
	cat_match = cat_match.indexOf(schoolname);
	if((type.substr(0,3)=='05_') && (cat_match!=-1)) {
	    var cat_match = programdata[i].categories;
	    cat_match = cat_match.indexOf('05');
	}
} else if(type=='nog') {
	var cat_match = (programdata[i].nog - 1);
} else if(type=='upc') {
	var cat_match = (programdata[i].upc - 1);
} else if(type=='hsc') {
	var cat_match = (programdata[i].hsc - 1);
} else {
	var cat_match = '|'+programdata[i].categories;
	cat_match = cat_match.indexOf(type);
}
	if(cat_match != -1) {
	    $('#programdata ul').append('<li><a class="program thickbox" id="'+programdata[i].id+'" href="/assets/inc/program.html?id='+programdata[i].id+'">'+programdata[i].name+'</a></li>');
	}
    }
TB_init(programdata);
return false;
}

function addprogram(program) {
if(program.url) {
    $('#programdata ul').append('<li><a class="program" href="'+program.url+'" id="'+program.id+'">'+program.name+'</a></li>');
} else {
    $('#programdata ul').append('<li><span class="program" class="collapsed" id="'+program.id+'">'+program.name+'</span></li>');
    $('#'+program.id).click(function() {

if(!document.getElementById(program.id+'_description')) {
	$('#'+program.id).addClass("expanded").removeClass("collapsed").after('<div id="'+program.id+'_description" class="description">'+program.description+'</div>');
} else {
            $('#'+program.id).addClass("collapsed").removeClass("expanded")
	    $('#'+program.id+'_description').remove();
}
    });
}

}

function sortbycountry(a, b) {
    var x = a.country.toLowerCase();
    var y = b.country.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortbyregion(a, b) {
    var x = a.regionname.toLowerCase();
    var y = b.regionname.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortbytitle(a, b) {
    var x = a.name.toLowerCase();
    var y = b.name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

});

function TB_init(markers) {
      circle_loading = new Image(100,100);
      circle_loading.src="/assets/images/loading.gif";
       
        $("a.thickbox").click(function(){
        var t = this.id;
        TB_show(marx[t]);
        this.blur();
        return false;
        });
    
}

function TB_show(box) {//function called when the user clicks on a thickbox link
                $("body")
                .append("<div id='TB_overlay'></div><div id='TB_window'></div>");
                $("#TB_overlay").click(TB_remove);
                $(window).resize(TB_position);
                $(window).scroll(TB_position);
     
                $("#TB_overlay").show();
                $("body").append("<div id='TB_load'><div id='TB_loadContent'><img src='/assets/images/loading.gif' /></div></div>");
                        TB_WIDTH = 500;
                        TB_HEIGHT = 500;
                        ajaxContentW = TB_WIDTH - 30;
                        ajaxContentH = TB_HEIGHT - 50;
                        $("#TB_window").append("<div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><img src='/assets/images/close.gif' width='20' height='20' alt='close' /></a></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
                        $("#TB_closeWindowButton").click(TB_remove);
                        $("#TB_ajaxContent").html('<h2>'+box.name+'</h2><p class="description">'+box.description+'</p><dl>');
                        if(box.univPartner) { $("#TB_ajaxContent").append('<dt class="univpartner">University Partner(s)</dt><dd>'+box.univPartner+'</dd>'); }
                        if(box.commPartner) { $("#TB_ajaxContent").append('<dt class="commpartner">Community Partner(s)</dt><dd>'+box.commPartner+'</dd>'); }
                        if(box.contact) { $("#TB_ajaxContent").append('<dt class="contact">Contact Info</dt><dd><pre>'+box.contact+'</pre></dd>'); }
                        if((box.email)&&(box.email.indexOf('@')!=-1)) { $("#TB_ajaxContent").append('<dt class="email">Email</dt><dd><a href="mailto:'+box.email+'">'+box.email+'</a></dd>'); }

                        if(box.url) { $("#TB_ajaxContent").append('<dt class="url"><a href="'+box.url+'">Website</a></dt>'); }
                        $("#TB_ajaxContent").append('</dl>');
                            TB_position();
                            $("#TB_load").remove();
                            $("#TB_window").slideDown("normal");
}

