var ui = {
	settings: {
		homepage_uri: "http://ft-ee.rmconsultingonline.com/index.php"
	},
	simple_search: {
		init: function(){
			$("#nav-search .button").click(function(){
				$("#nav-search form").submit();
			});
		}
	},
	advanced_search: {
		init: function(){
			$("#advanced-search .button").click(function(){
				$("#advanced-search form").submit();
			});
		}
	},
	savings: {
		settings: {
			water: {
				per: 600 * 2500000, // saved in a year (fields * gallons)
				offset: 23990000000, 
				savings_class: "water",
				savings_title: "Water Savings",
				savings_unit: "Gallons saved<br>this year-to-date",
				savings_dec: 1000000000,
				savings_total: " billion gallons saved since 1996"		
			}, 
			pesticides: {
				per: 15000000, // saved in a year
				offset: 120000000, 
				savings_class: "pesticides",
				savings_title: "Pesticide Prevention",
				savings_unit: "Pounds saved<br>this year-to-date",
				savings_dec: 1000000,
				savings_total: " million pounds saved since 1996"		
			}, 
			carbon: {
				per: 600 * 792 * 2.2, // saved in a year (fields * kgs * kg/lb)
				offset: 7600032 * 2.2, // 16715700
				savings_class: "carbon",
				savings_title: "Carbon Emissions",
				savings_unit: "Pounds saved<br>this year-to-date",
				savings_dec: 1000000,
				savings_total: " million pounds saved since 1996"		
			}, 
			tires: {
				per: 12000000, // saved in a year 
				offset: 60000000,
				savings_class: "tires",
				savings_title: "Recycled Tires",
				savings_unit: "Tires recycled<br>this year-to-date",
				savings_dec: 1000000,
				savings_total: " million tires recycled since 1996"		
			}
		},
		init: function(){
			$("#savings-water").click(function(){ ui.savings.show("water"); return false; });
			$("#savings-pesticides").click(function(){ ui.savings.show("pesticides"); return false; });
			$("#savings-carbon").click(function(){ ui.savings.show("carbon"); return false; });
			$("#savings-tires").click(function(){ ui.savings.show("tires"); return false; });	
			this.show("water");
		},
		show: function(what){
			
			// wipe away the old
			clearInterval(ui.savings.updater);
			$("#savings").attr("class","");
			
			// get the right data
			var obj;				
			switch(what){
				case "water": obj = ui.savings.settings.water; break;
				case "pesticides": obj = ui.savings.settings.pesticides; break;
				case "carbon": obj = ui.savings.settings.carbon; break;
				case "tires": obj = t = ui.savings.settings.tires; break;		
			}
			
			// write in the basics
			$("#savings").addClass(obj.savings_class);
			$("#savings-title").html(obj.savings_title);
			$("#savings-year-unit").html(obj.savings_unit);
					
			// get current date in seconds
			var now = new Date().getTime();
			now = now / 1000;
			
			// determine reference points: beginning of this year and the base year that works with the offset number
			var this_year = new Date();
			this_year = this_year.getFullYear(); 
			this_year = new Date(this_year,0,1); // start of this year, ET
			base_year = new Date(2009,0,1); // start of 2009, used for totals, ET
			// this_year = new Date(Date.UTC(this_year,'01','01','00','00','00')); // start of this year, ET
			// base_year = new Date(Date.UTC('2009','01','01','00','00','00')); // start of 2009, used for totals, ET
			var seconds_since_new_year = now - (this_year.getTime()/1000);
			var seconds_since_base_year = now - (base_year.getTime()/1000); 
	
			// this will update once a second
			var _update = function(){
				var seconds = 365 * 24 * 60 * 60;
				var yearly_amount = Math.round(++seconds_since_new_year * obj.per / seconds);
				var base_amount = Math.round(++seconds_since_base_year * obj.per / seconds);
				var total_amount = Number((base_amount + obj.offset) / obj.savings_dec);			
				var _commas = function(nStr){
					nStr += '';
					x = nStr.split('.');
					x1 = x[0];
					x2 = x.length > 1 ? '.' + x[1] : '';
					var rgx = /(\d+)(\d{3})/;
					while (rgx.test(x1)) {
						x1 = x1.replace(rgx, '$1' + ',' + '$2');
					}
					return x1 + x2;
				}			
				$("#savings-year-value").html(_commas(yearly_amount));
				$("#savings-total").html(_commas(total_amount.toFixed(2)) + obj.savings_total);
			}
			_update();
			ui.savings.updater = setInterval(function(){_update();},1000);
			ui.equallize("#spot-2, #spot-3, #spot-4");	
		},
		updater: null
	},
	equallize: function(id){
		var equal_height = 0;
		$(id).each(function(){
			$(this).css("height","auto");
			var this_height = $(this).outerHeight();
			if(this_height > equal_height){
				equal_height = this_height;
			}
		});
		$(id).each(function(){
			var offset = $(this).outerHeight() - $(this).height();
			var new_height = equal_height - offset;
			$(this).css("height",new_height);
		});
	},
	media: {
		init: function(){
			ui.media.category();
			ui.media.modal();
		},	
		modal: function(){		
			$(".media-item a").each(function(){
				var uri = "/media/modal/" + $(this).attr("href"), s = "#site-modal", m = "#media-modal";
				//$(this).attr("href","#");
				$(this).click(function(){					
					var _clear = function(hash){$("#media-modal, .jqmOverlay").remove();}			
					$(s).append('<div id="media-modal" class="jqmWindow"></div>');
					$(m).jqm({overlay:80,onHide:_clear});
					$(m).html('<div class="media-close jqmClose"></div><iframe class="media-iframe" src="' + uri + '" scrolling="no" frameborder="0"></iframe>');					
					$(m).jqmShow();
					return false;				
				});
			});
		},
		category: function(){
			$(".media-category").each(function(){
				var c = $(this).find(".media-item").length;
				if(c == 0){ $(this).find("h3").hide(); }
			});
		}		
	},
	dropnav: {
		init: function(){
			$("#nav-main li").hover(
				function(){
					$(this).addClass("nav-active");
					$("#advanced-search select").hide();
				},
				function(){
					$(this).removeClass("nav-active");
					$("#advanced-search select").show();
				}
			);
		}		
	},
	sidebar: {
		highlight: function(){
			var n = 0;
			var _remove_base = function(uri){
				var relative_uri = uri.replace(ui.settings.homepage_uri, "");
				return relative_uri;
			}
			var current_uri = _remove_base(window.location.href);
			var n = 0, l = 0;
			$(".col-sidebar li").each(function(i){
				var link_uri = _remove_base($(this).find("a").attr("href"));
				var check_link = current_uri.search(link_uri);
				if(check_link != -1){
					l = $(this).find("a").attr("href").length;
					if(l > n) { 
						$(".col-sidebar li").removeClass("selected");
						$(this).addClass("selected");
						n = l;
					}
				}
			});
		},
		init: function(){
			ui.sidebar.highlight();
		}
	},
	lists: {
		init: function(){
			$("ol.numbers").each(function(){
				$(this).find("li").each(function(e){
					$(this).css("background","url(/images/site/li-" + (e+1) + ") no-repeat");
				});
			});
		}
	},
	pagination: {
		replace: function(obj){
			var _remove_base = function(uri){
					var relative_uri = uri.replace(ui.settings.homepage_uri, "");
					return relative_uri;
			}
			var _remove_nbsp = function(html){
				var clean_html = html.replace(/&nbsp;/g, " ");
				return clean_html;
			}
			$(obj).find("a").each(function(){
				var link_uri = _remove_base($(this).attr("href"));
				$(this).attr("href",link_uri);
				if($(this).html() == "&lt;"){ $(this).addClass("previous"); }
				if($(this).html() == "&gt;"){ $(this).addClass("next"); }
				$(this).wrapInner("<span></span>");
			});			
			$(obj).find("a:contains('First')").addClass("first");
			$(obj).find("a:contains('Last')").addClass("last");	

			if($(obj).find(".previous").length < 1){ $(".pages").after('<a class="previous disabled"></a>') }
			if($(obj).find(".first").length < 1){ $(".pages").after('<a class="first disabled"></a>') }
			if($(obj).find(".next").length < 1){ $(".pagination").append('<a class="next disabled"></a>') }
			if($(obj).find(".last").length < 1){ $(".pagination").append('<a class="last disabled"></a>') }		
					
			$(obj).html(_remove_nbsp($(obj).html()));
		},
		init: function(){
			$(".pagination").each(function(e){
				ui.pagination.replace(this);
			});
		}
	},
	carousel: {
		_settings: {},
		_defaults: {
			speed: 500, 
			increment: 140, 
			item_length: 0, 
			items_shown: 6,
			scroll_by: 6, 
			current_item: 0,
			carousel_class: ".carousel",
			holder_wrap_class: ".carousel-holder-wrap",
			content_class: ".carousel-content",
			previous_class: ".carousel-previous", 
			next_class: ".carousel-next", 
			pagination_class: ".carousel-pagination", 
			item_class: ".carousel-item"			
		},
		init: function(id,options){			
			var s = this;
			s._settings = $.extend({}, s._defaults, options);
			var d = s._settings;
			d.id = id;
			d.item_length = ($(d.id).find(d.item_class).length >= d.items_shown)?$(d.id).find(d.item_class).length:d.items_shown;			  
			s._pagination_create();
			$(d.id).find(d.previous_class).find("a").click(function(){ s.scroll(d,"p"); return false; });
			$(d.id).find(d.next_class).find("a").click(function(){ s.scroll(d,"n"); return false; });
			s.scroll(d,d.current_item);
			
			// Hide the carousel if it doesn't fill the page
			if ($(d.id).find(d.item_class).length < d.items_shown){
				$(d.id).hide();
			}			
		},
		scroll: function(d,id){
			var s = this;
															
			// calculate whats next						
			var next_item = function(){
				var next_id = 0;																											
				if(id == "p"){
					next_id = d.current_item - d.scroll_by;
					if(next_id < 0){ next_id = 0; }
				} else if(id == "n"){															
					next_id = d.current_item + d.scroll_by;
					if(next_id > (d.item_length - d.items_shown)){ next_id = d.item_length - d.items_shown };
				} else { 
					next_id = id;
				}
				return next_id;														
			}													
																																							
			// calculate where to move to																																				
			var next_position = function(){
				var new_y = next_item() * -1 * d.increment;
				var max_slide = ( d.item_length - d.items_shown) * -1 * d.increment;
				if(new_y > 0){ new_y = 0; }
				if(new_y < max_slide){ new_y = max_slide; }
				new_y = new_y + "px";
				return new_y;
			}												
			
			// move it to the new spot
			$(d.id).find(d.holder_wrap_class).animate({
				"left": next_position()
			}, d.speed);
			
			// enable/disable previous buttons
			$(d.id).find(d.previous_class).removeClass("disabled");
			$(d.id).find(d.next_class).removeClass("disabled");
			if(next_item() == 0){
				$(d.id).find(d.previous_class).addClass("disabled");
			}
			if(next_item() == (d.item_length - d.items_shown)){
				$(d.id).find(d.next_class).addClass("disabled");
			}
			
			// set the current id
			d.current_item = next_item(id);
			
			// adjust the pagination
			s._pagination_set(d);
		},
		_pagination_create: function(){
			var s = this, d = s._settings;
			var max_pages = Math.ceil(d.item_length / d.items_shown);
			if(max_pages > 1){
				for(i=1;i<=max_pages;i++){
					$(d.id).find(d.pagination_class).append('<a href="#"><span>' + i + '</span></a>');
				}
				$(d.id).find(d.pagination_class).find("a").each(function(i){
					var id = i * d.items_shown;
					var max_item = d.item_length - d.items_shown;
					if(id > max_item){ id = max_item}
					$(this).click(function(){ s.scroll(d,id); return false; });
				});
				s._pagination_set(d);
			}														
		},
		_pagination_set: function(d){	
			$(d.id).find(d.pagination_class).find("a").removeClass("selected");
			var this_page = Math.ceil(d.current_item / d.items_shown);
			$(d.id).find(d.pagination_class).find("a:eq(" + this_page + ")").addClass("selected");
		}
	},
	gallery2: {
		_settings: {},
		_defaults: {
			speed: 0, 
			increment: 580, 
			item_length: 0, 
			items_shown: 1,
			scroll_by: 1, 
			current_item: 0,
			carousel_class: ".gallery2",
			holder_wrap_class: ".gallery2-holder-wrap",
			content_class: ".gallery2-content",
			previous_class: ".gallery2-previous", 
			next_class: ".gallery2-next", 
			pagination_class: ".gallery2-pagination", 
			item_class: ".gallery2-item"			
		},
		init: function(id,options){			
			var s = this;
			s._settings = $.extend({}, s._defaults, options);
			var d = s._settings;
			d.id = id;
			d.item_length = ($(d.id).find(d.item_class).length >= d.items_shown)?$(d.id).find(d.item_class).length:d.items_shown;			  
			s._pagination_create();
			$(d.id).find(d.previous_class).find("a").click(function(){ s.scroll(d,"p"); return false; });
			$(d.id).find(d.next_class).find("a").click(function(){ s.scroll(d,"n"); return false; });
			s.scroll(d,d.current_item);
			
			// Hide the carousel if it doesn't fill the page
			if ($(d.id).find(d.item_class).length < d.items_shown){
				$(d.id).hide();
			}			
		},
		scroll: function(d,id){
			var s = this;
															
			// calculate whats next						
			var next_item = function(){
				var next_id = 0;																											
				if(id == "p"){
					next_id = d.current_item - d.scroll_by;
					if(next_id < 0){ next_id = 0; }
				} else if(id == "n"){															
					next_id = d.current_item + d.scroll_by;
					if(next_id > (d.item_length - d.items_shown)){ next_id = d.item_length - d.items_shown };
				} else { 
					next_id = id;
				}
				return next_id;														
			}													
																																							
			// calculate where to move to																																				
			var next_position = function(){
				var new_y = next_item() * -1 * d.increment;
				var max_slide = ( d.item_length - d.items_shown) * -1 * d.increment;
				if(new_y > 0){ new_y = 0; }
				if(new_y < max_slide){ new_y = max_slide; }
				new_y = new_y + "px";
				return new_y;
			}												
			
			// move it to the new spot
			$(d.id).find(d.holder_wrap_class).animate({
				"left": next_position()
			}, d.speed);
			
			// enable/disable previous buttons
			$(d.id).find(d.previous_class).removeClass("disabled");
			$(d.id).find(d.next_class).removeClass("disabled");
			if(next_item() == 0){
				$(d.id).find(d.previous_class).addClass("disabled");
			}
			if(next_item() == (d.item_length - d.items_shown)){
				$(d.id).find(d.next_class).addClass("disabled");
			}
			
			// set the current id
			d.current_item = next_item(id);
			
			// adjust the pagination
			s._pagination_set(d);
		},
		_pagination_create: function(){
			var s = this, d = s._settings;
			var max_pages = Math.ceil(d.item_length / d.items_shown);
			if(max_pages > 1){
				for(i=1;i<=max_pages;i++){
					$(d.id).find(d.pagination_class).append('<a href="#"><span>' + i + '</span></a>');
				}
				$(d.id).find(d.pagination_class).find("a").each(function(i){
					var id = i * d.items_shown;
					var max_item = d.item_length - d.items_shown;
					if(id > max_item){ id = max_item}
					$(this).click(function(){ s.scroll(d,id); return false; });
				});
				s._pagination_set(d);
			}														
		},
		_pagination_set: function(d){	
			$(d.id).find(d.pagination_class).find("a").removeClass("selected");
			var this_page = Math.ceil(d.current_item / d.items_shown);
			$(d.id).find(d.pagination_class).find("a:eq(" + this_page + ")").addClass("selected");
		}
	},
	gallery: {
		init: function(){
			$("#installations-images li").hide();			
			$("#installations-thumbs li").each(function(e){
				$(this).click(function(){
					$("#installations-images li").hide();
					$("#installations-images li:eq(" + e + ")").show();
					ui.equallize(".col-sidebar, .col-main");
				});
			});
			$("#installations-thumbs li:first").click();
		}
	},
	promotions: {
		init: function(){
			var s = this, d = "#promotions-display", n = "#promotions-nav", p = ".promotion";
			
			// add controls
			$(n).find(p).each(function(i){
				$(this).click(function(){
					s.show(i+1);
				});
				$(this).hover(function(){
					$(this).addClass("promotion-hover");
					},function(){
					$(this).removeClass("promotion-hover");
					}
				);
			});
			$(d).mouseenter(function(){clearTimeout(s._promodelay);});
			$(d).mouseleave(function(){s._advance();});
			
			// initiate the first promo			
			s.show(1);			
		},
		show: function(id){
			var s = this, d = "#promotions-display", n = "#promotions-nav", p = ".promotion", l = $(d).find(p).length, c = $(d).data("current");
			
			if(id != c){
			
				// hide all the promos
				$(d).find(p).hide();
				
				// determine the next promo
				if(id == "p"){ c = c - 1; if(c < 1){ c = l } }
				else if(id == "n"){ c = c + 1; if(c > l){ c = 1 } }
				else { c = id }
				
				// save the current promo id into memory
				$(d).data("current", c);
				
				// now show it
				$(d).find(p + ":eq(" + (c - 1) + ")").fadeIn();
				$(d).find(p + ":eq(" + (c - 1) + ")").find(".promotion-mask").css("bottom","-500px");	
				
				$(n).find(p).removeClass("promotion-active");
				$(n).find(p + ":eq(" + (c - 1) + ")").addClass("promotion-active");
				
				var textdelay = setTimeout(function(){
					$(d).find(p + ":eq(" + (c - 1) + ")").find(".promotion-mask").animate({bottom:"0"},900);
					},200);
					
				// kick off the timer	
				if(l != 1){
					s._advance();
				}
			}
		},
		_promodelay: null,
		_advance: function(){
			var s = this, d = "#promotions-display", p = ".promotion", c = $(d).data("current");
			var t = $(d).find(p + ":eq(" + (c - 1) + ")").find("input.promotion-delay").val() * 1000;
			clearTimeout(s._promodelay);
			//if(console) console.log(t);
			s._promodelay = setTimeout(function(){s.show("n")},t);
		}

	},
	request: {
		check: function(){
			var error = "", pattern = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/;
			
			// clear all error styles
			$("#request").find("tr").removeClass("request-error");
			
			if($("#request-first_name").val() == "") {
				error += "- First Name is a required field.\n";
				$("#request-first_name").parents("tr").addClass("request-error");			
			}			
			if($("#request-last_name").val() == "") {
				error += "- Last Name is a required field.\n";
				$("#request-last_name").parents("tr").addClass("request-error");
			}				
			if($("#request-organization").val() == "") {
				error += "- Organization is a required field.\n";
				$("#request-organization").parents("tr").addClass("request-error");
			}			
			if($("#request-email").val() == "" || pattern.exec($("#request-email").val()) == null) {
				error += "- You must enter a valid Email address.\n";
				$("#request-email").parents("tr").addClass("request-error");
			}			
			if($("#request-telephone").val() == "") {
				error += "- Telephone is a required field.\n";
				$("#request-telephone").parents("tr").addClass("request-error");
			}			
			if($("#request-address").val() == "") {
				error += "- Address is a required field.\n";
				$("#request-address").parents("tr").addClass("request-error");
			}			
			if($("#request-city").val() == "") {
				error += "- City is a required field.\n";
				$("#request-city").parents("tr").addClass("request-error");
			}	
			if($("#request-postal_code").val() == "") {
				error += "- Zip/Postal Code is a required field.\n";
				$("#request-postal_code").parents("tr").addClass("request-error");
			}			
			if($("#request-country").val() == "") {
				error += "- Country is a required field.\n";
				$("#request-country").parents("tr").addClass("request-error");
			}
			if($("#honeypot").val() != "") {
				error += "- Hey, are trying to spam us?";
			}		
			if(error == "") {
				$("#request").submit();
			} else {
				//alert("Oops!\n\n" + error);
				$("#request-error-message").html("<p>Please fill out all the fields marked in red.</p>")
				$("#request .request-error:first input").focus();
				return false;
			}
		},
		init: function(){
			var s = this;
			$("#request tr:odd").addClass("request-odd");
			$("#request tr:even").addClass("request-even");
			$("#button-request").click(function(){
				s.check();
				return false;
			});
		}		
	},
	distributors: {
		init: function(){
			$("#distributors_filter select").change(function(){
				$("#distributors_list").html('<div id="distributors_loading"></div>');
				ui.distributors.filter();
				ui.distributors.load();
			});
			// $("#distributors_north-america").hide();
			// 			$("#distributors_canada").hide();
			//$("#distributors_usa").hide();
		},
		filter: function(){
			// if($("#distributors_continent").val() == "87"){ 
			// 				$("#distributors_north-america").show(); 
			// 			} else {
			// 				$("#distributors_north-america").val("");
			// 				$("#distributors_north-america").hide();
			// 			}
			// 			if($("#distributors_north-america").val() == "88"){ 
			// 				$("#distributors_canada").show(); 
			// 			} else {
			// 				$("#distributors_canada").val("");
			// 				$("#distributors_canada").hide();
			// 			}
//			if($("#distributors_north-america").val() == "102"){ 
				$("#distributors_usa").show(); 
			// } else {
			// 	$("#distributors_usa").val("");
			// 	$("#distributors_usa").hide();
			// }		
		},
		load: function(){
			var c = "";
			// if($("#distributors_continent").val() != "") c = $("#distributors_continent").val();
			// 			if($("#distributors_north-america").val() != "") c = $("#distributors_north-america").val();
			// 			if($("#distributors_canada").val() != "") c = $("#distributors_canada").val();
			if($("#distributors_usa").val() != "") c = $("#distributors_usa").val();
			$("#distributors_list").load("/find-a-representative/distributors/C" + c,function(){ui.distributors.callback();});
		},
		callback: function(){
			//ui.country.init(".distributors-country");
			ui.equallize(".col-sidebar, .col-main");
		}
	},
	country: {
		init: function(obj){
			$(obj).each(function(){
				var str = $(this).text();
				var country = ui.country.convert(str);
				$(this).html(country);
			});		
		},
		convert: function(str){	
			switch(str){		
			case "US": return "United States"; break;
			case "CA": return "Canada";	break;
			case "GB": return "United Kingdom"; break;
			case "AF": return "Afghanistan"; break;
			case "AL": return "Albania"; break;
			case "DZ": return "Algeria"; break;
			case "AS": return "American Samoa"; break;
			case "AD": return "Andorra"; break;
			case "AO": return "Angola"; break;
			case "AI": return "Anguilla"; break;
			case "AQ": return "Antarctica"; break;
			case "AG": return "Antigua And Barbuda"; break;
			case "AR": return "Argentina"; break;
			case "AM": return "Armenia"; break;
			case "AW": return "Aruba"; break;
			case "AU": return "Australia"; break;
			case "AT": return "Austria"; break;
			case "AZ": return "Azerbaijan"; break;
			case "BS": return "Bahamas"; break;
			case "BH": return "Bahrain"; break;
			case "BD": return "Bangladesh"; break;
			case "BB": return "Barbados"; break;
			case "BY": return "Belarus"; break;
			case "BE": return "Belgium"; break;
			case "BZ": return "Belize"; break;
			case "BJ": return "Benin"; break;
			case "BM": return "Bermuda"; break;
			case "BT": return "Bhutan"; break;
			case "BO": return "Bolivia"; break;
			case "BA": return "Bosnia And Herzegovina"; break;
			case "BW": return "Botswana"; break;
			case "BV": return "Bouvet Island"; break;
			case "BR": return "Brazil"; break;
			case "IO": return "British Indian Ocean Territory"; break;
			case "BN": return "Brunei Darussalam"; break;
			case "BG": return "Bulgaria"; break;
			case "BF": return "Burkina Faso"; break;
			case "BI": return "Burundi"; break;
			case "KH": return "Cambodia"; break;
			case "CM": return "Cameroon"; break;
			case "CA": return "Canada"; break;
			case "CV": return "Cape Verde"; break;
			case "KY": return "Cayman Islands"; break;
			case "CF": return "Central African Republic"; break;
			case "TD": return "Chad"; break;
			case "CL": return "Chile"; break;
			case "CN": return "China"; break;
			case "CX": return "Christmas Island"; break;
			case "CC": return "Cocos (keeling) Islands"; break;
			case "CO": return "Colombia"; break;
			case "KM": return "Comoros"; break;
			case "CG": return "Congo"; break;
			case "CD": return "Congo, The Democratic Republic Of The"; break;
			case "CK": return "Cook Islands"; break;
			case "CR": return "Costa Rica"; break;
			case "CI": return "Cote D'ivoire"; break;
			case "HR": return "Croatia"; break;
			case "CU": return "Cuba"; break;
			case "CY": return "Cyprus"; break;
			case "CZ": return "Czech Republic"; break;
			case "DK": return "Denmark"; break;
			case "DJ": return "Djibouti"; break;
			case "DM": return "Dominica"; break;
			case "DO": return "Dominican Republic"; break;
			case "TP": return "East Timor"; break;
			case "EC": return "Ecuador"; break;
			case "EG": return "Egypt"; break;
			case "SV": return "El Salvador"; break;
			case "GQ": return "Equatorial Guinea"; break;
			case "ER": return "Eritrea"; break;
			case "EE": return "Estonia"; break;
			case "ET": return "Ethiopia"; break;
			case "FK": return "Falkland Islands (malvinas)"; break;
			case "FO": return "Faroe Islands"; break;
			case "FJ": return "Fiji"; break;
			case "FI": return "Finland"; break;
			case "FR": return "France"; break;
			case "GF": return "French Guiana"; break;
			case "PF": return "French Polynesia"; break;
			case "TF": return "French Southern Territories"; break;
			case "GA": return "Gabon"; break;
			case "GM": return "Gambia"; break;
			case "GE": return "Georgia"; break;
			case "DE": return "Germany"; break;
			case "GH": return "Ghana"; break;
			case "GI": return "Gibraltar"; break;
			case "GR": return "Greece"; break;
			case "GL": return "Greenland"; break;
			case "GD": return "Grenada"; break;
			case "GP": return "Guadeloupe"; break;
			case "GU": return "Guam"; break;
			case "GT": return "Guatemala"; break;
			case "GN": return "Guinea"; break;
			case "GW": return "Guinea-bissau"; break;
			case "GY": return "Guyana"; break;
			case "HT": return "Haiti"; break;
			case "HM": return "Heard Island And Mcdonald Islands"; break;
			case "VA": return "Holy See (Vatican City State)"; break;
			case "HN": return "Honduras"; break;
			case "HK": return "Hong Kong"; break;
			case "HU": return "Hungary"; break;
			case "IS": return "Iceland"; break;
			case "IN": return "India"; break;
			case "ID": return "Indonesia"; break;
			case "IR": return "Iran, Islamic Republic Of"; break;
			case "IQ": return "Iraq"; break;
			case "IE": return "Ireland"; break;
			case "IL": return "Israel"; break;
			case "IT": return "Italy"; break;
			case "JM": return "Jamaica"; break;
			case "JP": return "Japan"; break;
			case "JO": return "Jordan"; break;
			case "KZ": return "Kazakstan"; break;
			case "KE": return "Kenya"; break;
			case "KI": return "Kiribati"; break;
			case "KP": return "Korea, Democratic People's Republic Of"; break;
			case "KR": return "Korea, Republic Of"; break;
			case "KW": return "Kuwait"; break;
			case "KG": return "Kyrgyzstan"; break;
			case "LA": return "Lao People's Democratic Republic"; break;
			case "LV": return "Latvia"; break;
			case "LB": return "Lebanon"; break;
			case "LS": return "Lesotho"; break;
			case "LR": return "Liberia"; break;
			case "LY": return "Libyan Arab Jamahiriya"; break;
			case "LI": return "Liechtenstein"; break;
			case "LT": return "Lithuania"; break;
			case "LU": return "Luxembourg"; break;
			case "MO": return "Macau"; break;
			case "MK": return "Macedonia, The Former Yugoslav Republic Of"; break;
			case "MG": return "Madagascar"; break;
			case "MW": return "Malawi"; break;
			case "MY": return "Malaysia"; break;
			case "MV": return "Maldives"; break;
			case "ML": return "Mali"; break;
			case "MT": return "Malta"; break;
			case "MH": return "Marshall Islands"; break;
			case "MQ": return "Martinique"; break;
			case "MR": return "Mauritania"; break;
			case "MU": return "Mauritius"; break;
			case "YT": return "Mayotte"; break;
			case "MX": return "Mexico"; break;
			case "FM": return "Micronesia, Federated States Of"; break;
			case "MD": return "Moldova, Republic Of"; break;
			case "MC": return "Monaco"; break;
			case "MN": return "Mongolia"; break;
			case "MS": return "Montserrat"; break;
			case "MA": return "Morocco"; break;
			case "MZ": return "Mozambique"; break;
			case "MM": return "Myanmar"; break;
			case "NA": return "Namibia"; break;
			case "NR": return "Nauru"; break;
			case "NP": return "Nepal"; break;
			case "NL": return "Netherlands"; break;
			case "AN": return "Netherlands Antilles"; break;
			case "NC": return "New Caledonia"; break;
			case "NZ": return "New Zealand"; break;
			case "NI": return "Nicaragua"; break;
			case "NE": return "Niger"; break;
			case "NG": return "Nigeria"; break;
			case "NU": return "Niue"; break;
			case "NF": return "Norfolk Island"; break;
			case "MP": return "Northern Mariana Islands"; break;
			case "NO": return "Norway"; break;
			case "OM": return "Oman"; break;
			case "PK": return "Pakistan"; break;
			case "PW": return "Palau"; break;
			case "PS": return "Palestinian Territory, Occupied"; break;
			case "PA": return "Panama"; break;
			case "PG": return "Papua New Guinea"; break;
			case "PY": return "Paraguay"; break;
			case "PE": return "Peru"; break;
			case "PH": return "Philippines"; break;
			case "PN": return "Pitcairn"; break;
			case "PL": return "Poland"; break;
			case "PT": return "Portugal"; break;
			case "PR": return "Puerto Rico"; break;
			case "QA": return "Qatar"; break;
			case "RE": return "Reunion"; break;
			case "RO": return "Romania"; break;
			case "RU": return "Russian Federation"; break;
			case "RW": return "Rwanda"; break;
			case "SH": return "Saint Helena"; break;
			case "KN": return "Saint Kitts And Nevis"; break;
			case "LC": return "Saint Lucia"; break;
			case "PM": return "Saint Pierre And Miquelon"; break;
			case "VC": return "Saint Vincent And The Grenadines"; break;
			case "WS": return "Samoa"; break;
			case "SM": return "San Marino"; break;
			case "ST": return "Sao Tome And Principe"; break;
			case "SA": return "Saudi Arabia"; break;
			case "SN": return "Senegal"; break;
			case "SC": return "Seychelles"; break;
			case "SL": return "Sierra Leone"; break;
			case "SG": return "Singapore"; break;
			case "SK": return "Slovakia"; break;
			case "SI": return "Slovenia"; break;
			case "SB": return "Solomon Islands"; break;
			case "SO": return "Somalia"; break;
			case "ZA": return "South Africa"; break;
			case "GS": return "South Georgia And The South Sandwich Islands"; break;
			case "ES": return "Spain"; break;
			case "LK": return "Sri Lanka"; break;
			case "SD": return "Sudan"; break;
			case "SR": return "Suriname"; break;
			case "SJ": return "Svalbard And Jan Mayen"; break;
			case "SZ": return "Swaziland"; break;
			case "SE": return "Sweden"; break;
			case "CH": return "Switzerland"; break;
			case "SY": return "Syrian Arab Republic"; break;
			case "TW": return "Taiwan, Province Of China"; break;
			case "TJ": return "Tajikistan"; break;
			case "TZ": return "Tanzania, United Republic Of"; break;
			case "TH": return "Thailand"; break;
			case "TG": return "Togo"; break;
			case "TK": return "Tokelau"; break;
			case "TO": return "Tonga"; break;
			case "TT": return "Trinidad And Tobago"; break;
			case "TN": return "Tunisia"; break;
			case "TR": return "Turkey"; break;
			case "TM": return "Turkmenistan"; break;
			case "TC": return "Turks And Caicos Islands"; break;
			case "TV": return "Tuvalu"; break;
			case "UG": return "Uganda"; break;
			case "UA": return "Ukraine"; break;
			case "AE": return "United Arab Emirates"; break;
			case "GB": return "United Kingdom"; break;
			case "US": return "United States"; break;
			case "UM": return "United States Minor Outlying Islands"; break;
			case "UY": return "Uruguay"; break;
			case "UZ": return "Uzbekistan"; break;
			case "VU": return "Vanuatu"; break;
			case "VE": return "Venezuela"; break;
			case "VN": return "Viet Nam"; break;
			case "VG": return "Virgin Islands, British"; break;
			case "VI": return "Virgin Islands, US."; break;
			case "WF": return "Wallis And Futuna"; break;
			case "EH": return "Western Sahara"; break;
			case "YE": return "Yemen"; break;
			case "YU": return "Yugoslavia"; break;
			case "ZM": return "Zambia"; break;
			case "ZW": return "Zimbabwe"; break;
			}
		}
	},
	init: function(){
		ui.simple_search.init(); // called for header
		ui.advanced_search.init(); // used?
		ui.dropnav.init(); // called everywhere
		ui.sidebar.init(); // called just about everywhere
		ui.pagination.init(); // quite a few places
		ui.lists.init();		
		ui.promotions.init(); // only homepage and landing pages
	}
};


$(document).ready(function(){
	ui.init();
	ui.equallize(".col-sidebar, .col-main");
	ui.equallize(".foot-links ul");
	ui.equallize("#spot-2 p, #spot-3 p"); 
	ui.equallize("#spot-2, #spot-3, #spot-4");
	ui.equallize("#contact-reminder p");
	ui.equallize("#contact-reminder .col-1, #contact-reminder .col-2");
	var redo = setTimeout(function(){ui.equallize(".col-sidebar, .col-main");},2000);
	ui.country.init("#installations-table .installations-country");
	ui.country.init("#installations-about .installations-country");
});