PAGE_JS = new Object({
	common: function() {
		/* image popups */
		$('img.popup').each(function() {
			$(this).parent('a').colorbox({
				inline: true,
				href: '#window' + $(this).attr('id'),
				width: '900px',
				maxHeight: '70%',
				onComplete: function() {
					$('div#cboxLoadedContent').jScrollPane(jScrollPaneArgs);
				}
			});
		});
		/* link popups */
		$('a.popup').each(function() {
			$(this).colorbox({
				inline: true,
				href: '#window' + $(this).attr('id'),
				width: '900px',
				maxHeight: '70%',
				onComplete: function() {
					$('div#cboxLoadedContent').jScrollPane(jScrollPaneArgs);
				}
			});
		});
		/* fancy-pants scrollbars */
		$('body[id!=contact] div#main div.content_body').jScrollPane(jScrollPaneArgs);
		/* live search */
		var result_limit = 14;
		$('input#searchInput').focus(function() {
			if ($(this).hasClass('searchDefault')) {
				$(this).val('').removeClass('searchDefault');
			}
		}).blur(function() {
			if (($(this).val() == '') || ($(this).val() == $(this).attr('title'))){
				$(this).val($(this).attr('title')).addClass('searchDefault');
			}
			window.setTimeout('$(\'div#ajaxSearch span\').fadeOut()', 1000);
		}).each(function() {
			$(this).trigger('blur');
		}).bind('keyup click', function() {
			if (($(this).val().length > 0) && (($(this).val()[0] != prevQuery[0]) || (prevQuery == ''))) {
				q_mods = [];
				q_tits = [];
				q_desc = [];
				q_sdes = [];
				q_urls = [];
				$.ajax({
					data: 'q=' + $(this).val()[0] + '&ajax=true',
					dataType: 'script',
					url: '/products/',
					success: function(data) {
						eval(data);
						if (q_mods.length > 0) {
							if ($('div#ajaxSearch').length == 0) {
								$('<div id="ajaxSearch"></div>').appendTo($('div#header')).hide();
							} else {
								$('div#ajaxSearch').empty();
							}
							for (i in q_mods) {
								$('<span class="' + q_mods[i].toLowerCase() + '"><a href="' + q_urls[i] + '" title="' + q_tits[i] + ' ' + q_desc[i] + '" target="_blank">Model ' + q_mods[i] + ' ' + q_sdes[i] + '</a></span>').appendTo($('div#ajaxSearch'));
							}
							$('div#ajaxSearch').show();
							$('div#ajaxSearch span:not([class*=' + ($('input#searchInput').val()).toLowerCase() + '])').hide();
							$('div#ajaxSearch span:visible:gt(' + result_limit + ')').hide();
						}
					}
				});
				prevQuery = $(this).val();
			} else {
				$('div#ajaxSearch span').show();
				$('div#ajaxSearch span:not([class*=' + ($(this).val()).toLowerCase() + '])').hide();
				$('div#ajaxSearch span:visible:gt(' + result_limit + ')').hide();
				if ($(this).val().length == 0) {
					$('div#ajaxSearch span').hide();
				}
			}
		}).parent().submit(function(event) {
			if ($('input#searchInput').val() == $('input#searchInput').attr('title') || $('input#searchInput').val() == '') {
				event.preventDefault();
			}
		});
		/* links and pdfs in new window */
		$('div.productLinks a, div.productDetails_buttons a:first-child').attr('target', '_blank');
	},
	home: function() {
		/* interest-items carousel */
		if ($('div#main ul li').size() > 4) {
			$('div#main')
				.css('position', 'relative')
				.prepend('<span id="carouselNav_prev"><a href="#">&laquo;</a></span>')
				.append('<span id="carouselNav_next"><a href="#">&raquo;</a></span>')
				.jCarouselLite({
					visible: 4,
					btnNext: '#carouselNav_next a',
					btnPrev: '#carouselNav_prev a'
				});
		}
		/* main splash slider */
		$('div#header').css({
			position: 'absolute',
			'z-index': 3
		});
		$('<div id="slider"></div>')
			.hide()
			.appendTo($('div#splash'))
			.append('<img src="/static/img/bg_home_01.jpg">')
			.append('<img src="/static/img/bg_home_02.jpg">')
			.append('<img src="/static/img/bg_home_03.jpg">')
			.append('<img src="/static/img/bg_home_04.jpg">')
			.append('<img src="/static/img/bg_home_05.jpg">')
			.append('<img src="/static/img/bg_home_06.jpg">')
			.append('<img src="/static/img/bg_home_07.jpg">')
			.append('<img src="/static/img/bg_home_08.jpg">')
		;
		/* interest item popups */
		$('div#main ul a').each(function() {
            if ($(this).data('popupimage')) {
                $(this).click(function(event) {
                    var popupcontent = $('<a>').attr('href', $(this).attr('href'));
                    if ($(this).attr('target')) {
                        $(popupcontent).attr('target', $(this).attr('target'));
                    }
                    $(popupcontent).append($('<img>').attr('src', $(this).data('popupimage')));
                    $.colorbox({html: $(popupcontent).get()});
                    event.preventDefault();
                });
            }
		});
	},
	products: function() {
		$('div#header').css({
			position: 'absolute',
			'z-index': 4
		});
		/* product details popup */
		$('div#product_details > div.productDetails').css({
			position: 'absolute',
			top: 0,
			'z-index': 2,
			display: 'none'
		});
		$('div.content div a').click(function(event) {
            var productid = $(this).attr('id');
			if ($('div#' + productid + '-details').length) {
				event.preventDefault();
				$.bbq.pushState({product: productid.replace('product', '')});
			}
		});
		$(window).bind('hashchange', function(e) {
            if (typeof $.bbq.getState('product') == 'string') {
                var urlproductid = $.bbq.getState('product');
    			if ($('div#product' + urlproductid + '-details').length) {
    				$('div#product_details > div.productDetails').hide();
    				$('div#product' + urlproductid + '-details').fadeIn();
    				$('html, body').animate({scrollTop:0}, 'slow');
    			}
            } else if (window.location.hash.indexOf('#product') != -1) {
				$.bbq.pushState({product: window.location.hash.replace('#product', '').replace('-details', '')});
            }
        });
		$(window).trigger('hashchange');
		/* helpful links / gallery */
		$('div#product_details > div.productGallery img').css({
			display: 'block',
			clear: 'both',
			marginTop: '10px'
		});
		$('div#product_details > div.productLinks, div#product_details > div.productGallery, div#product_details > div.productVideos').css({
			display: 'none'
		});
		$('div.productDetails a.linkPopup').each(function() {
			$(this).data('colorboxLink', $(this).attr('href')).attr('href', '');
			var height = false;
			var width = '750px';
			var maxHeight = '50%';
			var gallery = false;
			if ($(this).hasClass('gallery')) {
				height = 650;
				maxHeight = false;
				gallery = true;
			}
			if ($(this).hasClass('video')) {
				height = 450;
				width = 1000
				maxHeight = false;
			}
			$(this).colorbox({
				inline: true,
				href: $(this).data('colorboxLink'),
				width: width,
				height: height,
				maxHeight: maxHeight,
				title: '',
				onComplete: function() {
					$('div#cboxLoadedContent').jScrollPane(jScrollPaneArgs);
					if (gallery == true) {
						$('div#cboxTitle').html($('div#cboxLoadedContent img:first-child').attr('title'));
						$('div#cboxLoadedContent div.jspContainer').css({
							backgroundImage: 'url(' + $('div#cboxLoadedContent img:first-child').attr('src') + ')',
							backgroundRepeat: 'no-repeat',
							backgroundPosition: '150px 30px'
						});
						$('div#cboxLoadedContent img').mouseover(function() {
							$(this).css('cursor', 'pointer');
						}).click(function() {
							$('div#cboxTitle').html($(this).attr('title'));
							$('div#cboxLoadedContent div.jspContainer').css('background-image', 'url(' + $(this).attr('src') + ')');
						});
						/* remove title, doesn't work when scrolling */
						$('div.jspPane div.content h1').hide();
						/* move scrollbar to left */
						$('div.jspVerticalBar').css('left', '100px')
					}
				},
				onClosed: function() {
				    $('div.jspPane div.content h1').show();
				}
			});
		});
		/* intelligent stripping of f&b's > 10 */
		$('.productDetails_specs').each(function() {
			$('li', $(this)).each(function() {
				$(this).data('liCount', $('li', $(this)).size());
			});
			$('li', $(this)).slice(10).remove();
			if (($('li:last', $(this)).lenght) &&
				($('li:last', $(this)).parent().parent().get(0).tagName.toLowerCase() == 'li') &&
				(($('li:last', $(this)).siblings().size() + 1) < $('li:last', $(this)).parent().parent().data('liCount'))
			) {
				$('li:last', $(this)).parent().parent().remove();
			}
		});
		/* standards icons tooltips */
		$('div.productDetails_icons img[title]').tooltip();
	},
	bulbs: function() {
        UTIL.fire('products');
        $('div.productDetails_specs dl dd:empty').each(function() {
            $(this).siblings().eq($(this).index() - 1).remove();
        });
	},
	contact: function() {
		$('div#wrapper').css('position', 'relative');
		$('div#header').css({
			'position': 'absolute',
			'z-index': 4,
			'height': '40px'
		});
		var cacheImage = document.createElement('img');
		cacheImage.src = '/static/img/bg_fade.png';

		$('div#contactForm tr').css('visibility', 'hidden');
		$('select#contactPoint').parents('tr').css('visibility', 'visible');

		$('select#contactPoint').change(function() {
			$('option[value=]', $(this)).remove();
			if ($(this).val() == 'global') {
				$('div#contactForm tr').show().css('visibility', 'visible');
				$('tr.repfield').hide();
				$('div#selectRegion').fadeOut();
			} else {
				$('div#contactForm tr').hide().css('visibility', 'visible');
				$('select#contactPoint').parents('tr').show();
				$('tr.repfield').show();
				$('div#selectRegion').fadeIn();
			}
			$('div#contactForm tr').css({
				color: '#000',
				fontWeight: 'normal'
			});
			$('div.content > h1 > span').fadeOut('slow', function() {
				$(this).remove();
			});
		});
		$('area.mapReveal')
			.mouseover(function() {
				$('img#img-' + $(this).attr('id')).fadeIn('fast')
			})
			.mouseout(function() {
				$('img#img-' + $(this).attr('id')).fadeOut('fast')
			})
			.click(function(event) {
				$('select[name=region]').val($(this).attr('alt'));
				$('select[name=region] option[value=]').remove();
				$('select[name=region_state]')
					.empty()
					.append('<option value="" selected="selected">Please select</option>');
				for (i in region_states[$(this).attr('alt')]) {
					$('<option value="' + i + '">' + region_states[$(this).attr('alt')][i] + '</option>').appendTo($('select[name=region_state]'));
				}
				if ($(this).attr('alt') == 'United_States') {
					$('td#repstate').html('State:');
				} else if ($(this).attr('alt') == 'Canada') {
					$('td#repstate').html('Province/Territory:');
				} else {
					$('td#repstate').html('Country:');
				}
				$('div#contactForm tr').hide().css('visibility', 'visible');
				$('select#contactPoint').parents('tr').show();
				$('tr.repfield').show();
				$('div#selectRegion').fadeIn();
				event.preventDefault();
				$('div#contactForm tr').css({
					color: '#000',
					fontWeight: 'normal'
				});
				$('div.content > h1 > span').fadeOut('slow', function() {
					$(this).remove();
				});
			});
		$('select[name=region]').change(function() {
			$('select[name=region] option[value=]').remove();
			$('select[name=region_state]')
				.empty()
				.append('<option value="" selected="selected">Please select</option>');
			for (i in region_states[$(this).val()]) {
				$('<option value="' + i + '">' + region_states[$(this).val()][i] + '</option>').appendTo($('select[name=region_state]'));
			}
			if ($(this).val() == 'United_States') {
				$('td#repstate').html('State:');
			} else if ($(this).val() == 'Canada') {
				$('td#repstate').html('Province/Territory:');
			} else {
				$('td#repstate').html('Country:');
			}
			$('div#contactForm tr').hide().css('visibility', 'visible');
			$('select#contactPoint').parents('tr').show();
			$('tr.repfield').show();
			$('div#selectRegion').fadeIn();
			$('div#contactForm tr').css({
				color: '#000',
				fontWeight: 'normal'
			});
			$('div.content > h1 > span').fadeOut('slow', function() {
				$(this).remove();
			});
		});
		$('select[name=region_state]').change(function() {
			$('select[name=region_state] option[value=]').remove();
			$('div#contactForm tr').show();
			$('input[name=city], input[name=country]').parents('tr').hide();
		});

		$('div#contactForm > form').submit(function() {
			var formValid = true;
			$('input, textarea', $('tr:visible span.red', $(this)).parent().siblings()).each(function() {
				if ($(this).val() == '') {
					$(this).parent().parent().css({
						color: '#e81b23',
						fontWeight: 'bold'
					});
					formValid = false;
				} else {
					$(this).parent().parent().css({
						color: '#000',
						fontWeight: 'normal'
					});
				}
			});

			if (formValid != true) {
				if ($('div.content > h1 > span').length == 0) {
					$('<span> - Please complete all fields marked with an asterisk</span>').css('display', 'inline').hide().appendTo('div.content > h1').fadeIn('slow').fadeOut('slow').fadeIn('slow');
				} else {
					$('div.content > h1 > span').fadeOut('slow').fadeIn('slow').fadeOut('slow').fadeIn('slow');
				}
				return false;
			} else {
				$('div.content > h1 > span').fadeOut('slow', function() {
					$(this).remove();
				});
			}
		});
		/* google maps */
		$('div#gmap').each(function() {
			var gmap_coords = new google.maps.LatLng(43.23726, -88.15053);
			var gmap = new google.maps.Map(this, {
				center: gmap_coords,
				zoom: 14,
				mapTypeId: google.maps.MapTypeId.ROADMAP,
				mapTypeControl: false,
				streetViewControl: false
			});
			var gmap_marker = new google.maps.Marker({
        		position: gmap_coords,
        		map: gmap,
        		title: 'J.W. Speaker Corporation',
        		icon: '/static/img/gmap_icon.png'
			});
			var gmap_infowindow = new google.maps.InfoWindow({
				content: '<img src="/static/img/logo_small.jpg"><br><strong>J.W. Speaker Corporation</strong><br>N120 W19434 Freistadt Road<br>PO Box 1011<br>Germantown, Wisconsin 53022<br>U.S.A<br>&nbsp;<br>'+
					'<a href="http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=N120+W19434+Freistadt+Rd,+Germantown,+WI+53022+%28J.W.+Speaker+Corporation%29&hl=en&geocode=CZRzGc1ysfARFY6_kwId_e2--iEDYJ5tmUwxLw&mra=ls&sll=43.23294,-88.147547&sspn=0.048401,0.111494&ie=UTF8&z=14" target="_blank">Directions</a>'
			});
	    	google.maps.event.addListener(gmap_marker, 'click', function() {
	      		gmap_infowindow.open(gmap, gmap_marker);
	    	});
		}).css({
			background: '#b1b1b1'
		});
	},
	capabilities: function() {
		if ($('img.gallery_custom').length > 0) {
			$('a.gallery_custom').parent('li').show();
		}
		if ($('img.gallery_facility').length > 0) {
			$('a.gallery_facility').parent('li').show();
		}
		$('div#gallery_custom img, div#gallery_custom img').css({
			display: 'block',
			clear: 'both',
			marginTop: '10px'
		});
		$('a.linkPopup').each(function() {
			$(this).data('colorboxLink', $(this).attr('href')).attr('href', '');
			var height = false;
			var maxHeight = '50%';
			var gallery = false;
			if ($(this).hasClass('gallery')) {
				height = 650;
				maxHeight = false;
				gallery = true;
			}
			$(this).colorbox({
				inline: true,
				href: $(this).data('colorboxLink'),
				width: '750px',
				height: height,
				maxHeight: maxHeight,
				title: '',
				onComplete: function() {
					$('div#cboxLoadedContent').jScrollPane(jScrollPaneArgs);
					if (gallery == true) {
						$('div#cboxTitle').html($('div#cboxLoadedContent img:first-child').attr('title'));
						$('div#cboxLoadedContent div.jspContainer').css({
							backgroundImage: 'url(' + $('div#cboxLoadedContent img:first-child').attr('src') + ')',
							backgroundRepeat: 'no-repeat',
							backgroundPosition: '120px 30px'
						});
						$('div#cboxLoadedContent img').mouseover(function() {
							$(this).css('cursor', 'pointer');
						}).click(function() {
							$('div#cboxTitle').html($(this).attr('title'));
							$('div#cboxLoadedContent div.jspContainer').css('background-image', 'url(' + $(this).attr('src') + ')');
						});
					}
				}
			});
		});
	}
});

UTIL = new Object({
	fire : function(func) {
		var namespace = PAGE_JS;
		if (func !== '' && typeof namespace[func] == 'function') {
			namespace[func]();
		}
	},
	loadEvents : function()	{
		UTIL.fire('common');
		UTIL.fire(document.body.id);
	}
});

$(document).ready(UTIL.loadEvents);
$(window).load(function() {
	$('div#slider')
		.show()
		.nivoSlider({
			pauseTime: 3000,
			directionNav: false,
			keyboardNav: false,
			pauseOnHover: false
		});
	// stupid hack to move around the nav to force css3pie to re-calc and stop nav rendering issues in ie8
	setTimeout('$(\'body.ie8 div#header ul\').css(\'margin-right\', (parseInt($(\'div#header ul\').css(\'margin-right\')) + 1).toString() + \'px\');', 10);
	setTimeout('$(\'body.ie8 div#header ul\').css(\'margin-right\', (parseInt($(\'div#header ul\').css(\'margin-right\')) - 1).toString() + \'px\');', 500);
	setTimeout('$(\'body#contact.ie8 div#sidenav ul\').css(\'margin-top\', (parseInt($(\'body#contact.ie8 div#sidenav ul\').css(\'margin-top\')) + 1).toString() + \'px\');', 10);
	setTimeout('$(\'body#contact.ie8 div#sidenav ul\').css(\'margin-top\', (parseInt($(\'body#contact.ie8 div#sidenav ul\').css(\'margin-top\')) - 1).toString() + \'px\');', 500);
});

/* jScrollPane config */
var jScrollPaneArgs = new Object({
	hijackInternalLinks: true,
	verticalGutter: 20
});
/* live search confid */
var q_mods = new Array();
var q_tits = new Array();
var q_desc = new Array();
var q_sdes = new Array();
var q_urls = new Array();
var prevQuery = '';
/* contact config */
var region_states = new Object({
	Northern_America: {
		Bermuda: 'Bermuda',
		Greenland: 'Greenland',
		Saint_Pierre_and_Miquelon: 'Saint Pierre and Miquelon'
	},
	United_States: {
		Alabama: 'Alabama',
		Alaska: 'Alaska',
		Arizona: 'Arizona',
		Arkansas: 'Arkansas',
		California: 'California',
		Colorado: 'Colorado',
		Connecticut: 'Connecticut',
		Delaware: 'Delaware',
		Florida: 'Florida',
		Georgia: 'Georgia',
		Hawaii: 'Hawaii',
		Idaho: 'Idaho',
		Illinois: 'Illinois',
		Indiana: 'Indiana',
		Iowa: 'Iowa',
		Kansas: 'Kansas',
		Kentucky: 'Kentucky',
		Louisiana: 'Louisiana',
		Maine: 'Maine',
		Maryland: 'Maryland',
		Massachusetts: 'Massachusetts',
		Michigan: 'Michigan',
		Minnesota: 'Minnesota',
		Mississippi: 'Mississippi',
		Missouri: 'Missouri',
		Montana: 'Montana',
		Nebraska: 'Nebraska',
		Nevada: 'Nevada',
		New_Hampshire: 'New Hampshire',
		New_Jersey: 'New Jersey',
		New_Mexico: 'New Mexico',
		New_York: 'New York',
		North_Carolina: 'North Carolina',
		North_Dakota: 'North Dakota',
		Ohio: 'Ohio',
		Oklahoma: 'Oklahoma',
		Oregon: 'Oregon',
		Pennsylvania: 'Pennsylvania',
		Rhode_Island: 'Rhode Island',
		South_Carolina: 'South Carolina',
		South_Dakota: 'South Dakota',
		Tennessee: 'Tennessee',
		Texas: 'Texas',
		Utah: 'Utah',
		Vermont: 'Vermont',
		Virginia: 'Virginia',
		Washington: 'Washington',
		West_Virginia: 'West Virginia',
		Wisconsin: 'Wisconsin',
		Wyoming: 'Wyoming'
	},
	Canada: {
		Alberta: 'Alberta',
		British_Columbia: 'British Columbia',
		Manitoba: 'Manitoba',
		New_Brunswick: 'New Brunswick',
		Newfoundland_and_Labrador: 'Newfoundland and Labrador',
		Northwest_Territories: 'Northwest Territories',
		Nova_Scotia: 'Nova Scotia',
		Nunavut: 'Nunavut',
		Ontario: 'Ontario',
		Prince_Edward_Island: 'Prince Edward Island',
		Quebec: 'Quebec',
		Saskatchewan: 'Saskatchewan',
		Yukon: 'Yukon'
	},
	Mexico_and_Central_America: {
		Anguilla: 'Anguilla',
		Antigua_and_Barbuda: 'Antigua and Barbuda',
		Aruba: 'Aruba',
		Bahamas: 'Bahamas',
		Barbados: 'Barbados',
		Belize: 'Belize',
		Bonaire: 'Bonaire',
		British_Virgin_Islands: 'British Virgin Islands',
		Cayman_Islands: 'Cayman Islands',
		Costa_Rica: 'Costa Rica',
		Curacao: 'Curacao',
		Dominica: 'Dominica',
		Dominican_Republic: 'Dominican Republic',
		El_Salvador: 'El Salvador',
		Grenada: 'Grenada',
		Guadeloupe: 'Guadeloupe',
		Guatemala: 'Guatemala',
		Haiti: 'Haiti',
		Honduras: 'Honduras',
		Jamaica: 'Jamaica',
		Martinique: 'Martinique',
		Mexico: 'Mexico',
		Montserrat: 'Montserrat',
		Nicaragua: 'Nicaragua',
		Panama: 'Panama',
		Puerto_Rico: 'Puerto Rico',
		Saba: 'Saba',
		Saint_Barthelemy: 'Saint Barthelemy',
		Saint_Kitts_and_Nevis: 'Saint Kitts and Nevis',
		Saint_Lucia: 'Saint Lucia',
		Saint_Martin: 'Saint Martin',
		Saint_Vincent_and_the_Grenadines: 'Saint Vincent and the Grenadines',
		Sint_Eustatius: 'Sint Eustatius',
		Trinidad_and_Tobago: 'Trinidad and Tobago',
		Turks_and_Caicos: 'Turks and Caicos',
		US_Virgin_Islands: 'U.S. Virgin Islands'
	},
	South_America: {
		Argentina: 'Argentina',
		Bolivia: 'Bolivia',
		Brazil: 'Brazil',
		Chile: 'Chile',
		Colombia: 'Colombia',
		Ecuador: 'Ecuador',
		Falkland_Islands: 'Falkland Islands',
		French_Guiana: 'French Guiana',
		Guyana: 'Guyana',
		Paraguay: 'Paraguay',
		Peru: 'Peru',
		South_Georgia: 'South Georgia',
		Suriname: 'Suriname',
		Uruguay: 'Uruguay',
		Venezuela: 'Venezuela'
	},
	European_Union: {
		Austria: 'Austria',
		Belgium: 'Belgium',
		Bulgaria: 'Bulgaria',
		Cyprus: 'Cyprus',
		Czech_Republic: 'Czech Republic',
		Denmark: 'Denmark',
		Estonia: 'Estonia',
		Finland: 'Finland',
		France: 'France',
		Germany: 'Germany',
		Greece: 'Greece',
		Hungary: 'Hungary',
		Ireland: 'Ireland',
		Italy: 'Italy',
		Latvia: 'Latvia',
		Lithuania: 'Lithuania',
		Luxembourg: 'Luxembourg',
		Malta: 'Malta',
		Netherlands: 'Netherlands',
		Poland: 'Poland',
		Portugal: 'Portugal',
		Romania: 'Romania',
		Slovakia: 'Slovakia',
		Slovenia: 'Slovenia',
		Spain: 'Spain',
		Sweden: 'Sweden',
		United_Kingdom: 'United Kingdom'
	},
	Eastern_Europe: {
		Albania: 'Albania',
		Andorra: 'Andorra',
		Belarus: 'Belarus',
		Bosnia: 'Bosnia',
		Croatia: 'Croatia',
		European_Union: 'European Union',
		Faroe_Islands: 'Faroe Islands',
		Gibraltar: 'Gibraltar',
		Guerney_and_Alderney: 'Guerney and Alderney',
		Iceland: 'Iceland',
		Jersey: 'Jersey',
		Kosovo: 'Kosovo',
		Liechtenstein: 'Liechtenstein',
		Macedonia: 'Macedonia',
		Man_Island_of: 'Man, Island of',
		Moldova: 'Moldova',
		Monaco: 'Monaco',
		Montenegro: 'Montenegro',
		Norway: 'Norway',
		Russia: 'Russia',
		San_Marino: 'San Marino',
		Serbia: 'Serbia',
		Svalbard_and_Jan_Mayen_Islands: 'Svalbard and Jan Mayen Islands',
		Switzerland: 'Switzerland',
		Turkey: 'Turkey',
		Ukraine: 'Ukraine',
		Vatican_City_State: 'Vatican City State (Holy See)'
	},
	Africa: {
		Algeria: 'Algeria',
		Angola: 'Angola',
		Benin: 'Benin',
		Botswana: 'Botswana',
		Burkina_Faso: 'Burkina Faso',
		Burundi: 'Burundi',
		Cameroon: 'Cameroon',
		Canary_Islands: 'Canary Islands',
		Cape_Verde: 'Cape Verde',
		Central_African_Republic: 'Central African Republic',
		Ceuta: 'Ceuta',
		Chad: 'Chad',
		Comoros: 'Comoros',
		Congo: 'Congo',
		Cote_dIvoire: 'Cote d\'Ivoire',
		Democratic_Republic_of_Congo: 'Democratic Republic of Congo',
		Djibouti: 'Djibouti',
		Egypt: 'Egypt',
		Equatorial_Guinea: 'Equatorial Guinea',
		Eritrea: 'Eritrea',
		Ethiopia: 'Ethiopia',
		Gabon: 'Gabon',
		Gambia: 'Gambia',
		Ghana: 'Ghana',
		Guinea: 'Guinea',
		Guinea_Bissau: 'Guinea-Bissau',
		Kenya: 'Kenya',
		Lesotho: 'Lesotho',
		Liberia: 'Liberia',
		Libya: 'Libya',
		Madagascar: 'Madagascar',
		Madeira_Islands: 'Madeira Islands',
		Malawi: 'Malawi',
		Mali: 'Mali',
		Mauritania: 'Mauritania',
		Mauritius: 'Mauritius',
		Mayotte: 'Mayotte',
		Melilla: 'Melilla',
		Morocco: 'Morocco',
		Mozambique: 'Mozambique',
		Namibia: 'Namibia',
		Niger: 'Niger',
		Nigeria: 'Nigeria',
		Reunion: 'Reunion',
		Rwanda: 'Rwanda',
		Sahrawi_Arab_Democratic_Republic: 'Sahrawi Arab Democratic Republic',
		Sao_Tome_and_Principe: 'Sao Tome and Principe',
		Senegal: 'Senegal',
		Seychelles: 'Seychelles',
		Sierra_Leone: 'Sierra Leone',
		Somalia: 'Somalia',
		South_Africa: 'South Africa',
		Sudan: 'Sudan',
		Swaziland: 'Swaziland',
		Tanzania: 'Tanzania',
		Togo: 'Togo',
		Tunisia: 'Tunisia',
		Uganda: 'Uganda',
		Zambia: 'Zambia',
		Zimbabwe: 'Zimbabwe'
	},
	Middle_East: {
		Bahrain: 'Bahrain',
		Iraq: 'Iraq',
		Iran: 'Iran',
		Israel: 'Israel',
		Jordan: 'Jordan',
		Kuwait: 'Kuwait',
		Lebanon: 'Lebanon',
		Oman: 'Oman',
		Palestine: 'Palestine',
		Qatar: 'Qatar',
		Saudi_Arabia: 'Saudi Arabia',
		Syria: 'Syria',
		United_Arab_Emirates: 'United Arab Emirates',
		Yemen: 'Yemen'
	},
	Oceania: {
		Australia: 'Australia',
		Fiji: 'Fiji',
		French_Polynesia: 'French Polynesia',
		Guam: 'Guam',
		Kiribati: 'Kiribati',
		Marshall_Islands: 'Marshall Islands',
		Micronesia: 'Micronesia',
		New_Caledonia: 'New Caledonia',
		New_Zealand: 'New Zealand',
		Papua_New_Guinea: 'Papua New Guinea',
		Samoa: 'Samoa',
		Samoa_American: 'Samoa, American',
		Solomon_Islands: 'Solomon, Islands',
		Tonga: 'Tonga',
		Vanuatu: 'Vanuatu'
	},
	Asia: {
		Afganistan: 'Afganistan',
		Armenia: 'Armenia',
		Azerbaijan: 'Azerbaijan',
		Bangladesh: 'Bangladesh',
		Bhutan: 'Bhutan',
		Brunei_Darussalam: 'Brunei Darussalam',
		Cambodia: 'Cambodia',
		China: 'China',
		Georgia: 'Georgia',
		Hong_Kong: 'Hong Kong',
		India: 'India',
		Indonesia: 'Indonesia',
		Japan: 'Japan',
		Kazakhstan: 'Kazakhstan',
		Korea_North: 'Korea, North',
		Korea_South: 'Korea, South',
		Kyrgyzstan: 'Kyrgyzstan',
		Laos: 'Laos',
		Macao: 'Macao',
		Malaysia: 'Malaysia',
		Maldives: 'Maldives',
		Mongolia: 'Mongolia',
		Myanmar: 'Myanmar (ex-Burma)',
		Nepal: 'Nepal',
		Pakistan: 'Pakistan',
		Phillipines: 'Phillipines',
		Singapore: 'Singapore',
		Sri_Lanka: 'Sri Lanka (ex-Ceilan)',
		Taiwan: 'Taiwan',
		Tajikistan: 'Tajikistan',
		Thailand: 'Thailand',
		Timor_Leste: 'Timor Leste (West)',
		Turkmenistan: 'Turkmenistan',
		Uzbekistan: 'Uzbekistan',
		Vietnam: 'Vietnam'
	}
});
