var Partners = {
	asPartners : [],
	oPartners : {},
	oCountries : {},
	ShowPartners : function(asThese, bPretty) {
		bPretty = bPretty === undefined ? true : bPretty;
		asThese = asThese.sort(ignoreCaseSort);
		oPartners = this.oPartners;
		$.each(asThese, function(i,sThis){
			/*var oP = $(oPartners[sThis]);
			$(oPartners[sThis]).remove();
			$(oP).appendTo('#partners-text')*/
			bPretty ? $(oPartners[sThis]).fadeIn('fast') : $(oPartners[sThis]).show()
		});
	},
	HidePartners : function(asThese, bPretty) {
		bPretty = bPretty === undefined ? true : bPretty;
		asThese.sort();
		oPartners = this.oPartners;
		$.each(asThese, function(i,sThis){
			bPretty ? $(oPartners[sThis]).fadeOut('fast') : $(oPartners[sThis]).hide()
		});
	},
	HideAll : function() {
		this.HidePartners(this.asPartners, false);
	},
	AddCountry : function(sCountry, sPartner) {
		if (this.oCountries[sCountry] == undefined) { this.oCountries[sCountry] = []; }
		/*if ($.inArray(this.oCountries[sCountry], sPartner) == -1) { this.oCountries[sCountry][this.oCountries[sCountry].length] = sPartner;} else { this.asCrap = $.inArray(this.oCountries[sCountry], sPartner) + ' : ' + this.oCountries[sCountry]; }*/
		/*because of incompatibility with IE7+ we're leaving this check line out,
			for the moment each country is only represented once anyways */
		this.oCountries[sCountry][this.oCountries[sCountry].length] = sPartner;
	}
};

function ignoreCaseSort(a, b) {
    return ((a.toLowerCase() < b.toLowerCase()) ? -1 : ((a.toLowerCase() > b.toLowerCase()) ? 1 : 0));
}


$(document).ready(function(){
	
	$('#partner-country').attr('disabled','disabled');
	$('#partner-organisation').attr('disabled','disabled');
	
	var asPartners = [];
	var asCountries = [];

	$('.partner').each(function(i,oPartner){
		var sPartner = $(oPartner).find('h3').html();
		if (sPartner == '') { return; }
		sPartner = sPartner.replace('&amp;', '&');
		sPartner = sPartner.replace(/^[^\w]+/g,'')
		sPartner = sPartner.replace(/\,\s/g, ' ');
		asPartners[asPartners.length] = sPartner;
		Partners.oPartners[sPartner] = oPartner;

		var sCountries = $(oPartner).find('.countries').html();
		if (sCountries != '' && sCountries != null) {
			sCountries = $.trim(sCountries); // trim the countries string
			sCountries = sCountries.replace(/\,\s+/g,','); //make sure the delimeted string has no spaces
			asTheseCountries = sCountries.split(',');
			for (var n = 0; n < asTheseCountries.length; n++) {
				Partners.AddCountry(asTheseCountries[n], sPartner)
				if ($.inArray(asTheseCountries[n], asCountries) == -1) { asCountries[asCountries.length] = asTheseCountries[n];	}
			}
		}
		
		var sAdditional = $(oPartner).find('.additional').html();
		if (sAdditional != '' && sAdditional != null) {
			var asAdditional = sAdditional.split('|');
			var asHTML = ['<div class="address">']
			asHTML[asHTML.length] = '<p class="address">' + asAdditional[0] + '</p>'
			asDetails = ['Contact name', 'Telephone', 'Fax', 'Email', 'Website'];
			for (var n = 0; n < asDetails.length; n++) {
				if (asAdditional[n+1] == '') { continue; }
				asHTML[asHTML.length] = '<p class="' + asDetails[n] + '"><strong>' + asDetails[n] + '</strong><br />'
				if (asDetails[n] == 'Website') { asAdditional[n+1] = '<a href="' + asAdditional[n+1] + '" target="_blank">' + asAdditional[n+1] + '</a>' }
				if (asDetails[n] == 'Email') { asAdditional[n+1] = '<a href="mailto:' + asAdditional[n+1] + '">' + asAdditional[n+1] + '</a>' }
				asHTML[asHTML.length] = asAdditional[n+1] + '</p>'
			}
			asHTML[asHTML.length] = '</div>'
			
			$(oPartner).prepend(asHTML.join('\n'));
			$(oPartner).prepend($(oPartner).find('h3'));
		}
	})

	asPartners.sort(ignoreCaseSort);

	$.each(asPartners, function(i,sPartner){
		$('#partner-organisation').append('<option value="' + sPartner + '">' + sPartner + '</option>');
	});
	
	asCountries.sort(ignoreCaseSort);
	
	$.each(asCountries, function(i,sCountry){
		$('#partner-country').append('<option value="' + Partners.oCountries[sCountry].join(',') + '">' + sCountry + '</option>');
	});
	
	Partners.asPartners = asPartners;
	
	$('#partner-country').removeAttr('disabled');
	$('#partner-organisation').removeAttr('disabled');
	
	$('#partner-organisation').change(function(){
		Partners.HideAll();
		$('#partner-country').attr("selectedIndex",0);
		//Partners.ShowPartners([$(this).val()])
		Partners.ShowPartners($(this).val().split(','))
	});

	$('#partner-country').change(function(){
		Partners.HideAll();
		$('#partner-organisation').attr("selectedIndex",0);
		//Partners.ShowPartners([$(this).val()])
		Partners.ShowPartners($(this).val().split(','))
	});
	
});
