// fixIE6flicker
try {
document.execCommand("BackgroundImageCache", false, true);
} catch(e) {}


var maileg = {
	
	category: {
		
		// Click on a category. Redirect to the links href
		click: function(id) {
			var link = document.getElementById("link-category-"+id);
			document.location = link.href;
			return false; // Cancel further event handling
		},
		
		mouseOver: function(id) {
			var imageContainer = document.getElementById("image-container-"+id);
			var enderLeft = document.getElementById("ender-left-"+id);
			var enderRight = document.getElementById("ender-right-"+id);
			
			// imageContainer.addClassName("image-container-hover");
			maileg.dom.addClassName(imageContainer, "image-container-hover");
			
			if (enderLeft && enderRight) {
				// enderLeft.addClassName("image-container-hover");
				// enderRight.addClassName("image-container-hover");
				maileg.dom.addClassName(enderLeft, "image-container-hover");
				maileg.dom.addClassName(enderRight, "image-container-hover");
				
			}
		},
		
		mouseOut: function(id) {
			var imageContainer = document.getElementById("image-container-"+id);
			var enderLeft = document.getElementById("ender-left-"+id);
			var enderRight = document.getElementById("ender-right-"+id);
			
			// imageContainer.removeClassName("image-container-hover");
			maileg.dom.removeClassName(imageContainer, "image-container-hover");
			if (enderLeft && enderRight) {
				// enderLeft.removeClassName("image-container-hover");
				// enderRight.removeClassName("image-container-hover");
				
				maileg.dom.removeClassName(enderLeft, "image-container-hover");
				maileg.dom.removeClassName(enderRight, "image-container-hover");
				
			}
		}
		
		
	},
	
	product: {
		
		// Click on a product. Redirect to the links href
		click: function(id) {
			var link = document.getElementById("link-product-"+id);
			document.location = link.href;
			return false; // Cancel further event handling
		},

		
		mouseOver: function(id) {
			var imageContainer = document.getElementById("image-container-"+id);
			var textContainer = document.getElementById("text-container-"+id);
			
			// imageContainer.addClassName("image-container-hover");
			// textContainer.addClassName("text-container-hover");
			maileg.dom.addClassName(imageContainer, "image-container-hover");
			maileg.dom.addClassName(textContainer, "text-container-hover");
		},
		
		mouseOut: function(id) {
			var imageContainer = document.getElementById("image-container-"+id);
			var textContainer = document.getElementById("text-container-"+id);
			
			// imageContainer.removeClassName("image-container-hover");
			// textContainer.removeClassName("text-container-hover");
			maileg.dom.removeClassName(imageContainer, "image-container-hover");
			maileg.dom.removeClassName(textContainer, "text-container-hover");
		}
		
	},
	
	link: {
		
		openBlank: function(ele) {
			window.open(ele.href);
			return false;
		}
		
	},
	
	form: {
		
		focusField: function(field, defaultValue) {
			if (field.value == defaultValue) {
				field.value = "";
			}
		},
		
		blurField: function(field, defaultValue) {
			if (field.value == "") {
				field.value = defaultValue;
			}
		}
		
	},
	
	findDealer: {

		// Disable/enable region dropdown and singular regions
		handleRegion: function() {
			var countryCode = document.getElementById("form-country").value;
			var region = document.getElementById("form-region");
			var regionTemplate = document.getElementById("form-region-template");
			
			// Remove from select box, and remember the selected one
			var selectedValue;
			
			while (region.length > 1) { // Keep the empty one
				if (region[1].selected) {
					selectedValue = region[1].value;
				}
				
				region.removeChild(region[1]);
			}
			
			// Insert into select box, from template select box
			for (var i=0; i<regionTemplate.length; i++) {
				if (regionTemplate[i].className == "form-region-"+countryCode) { // Correct one, copy
					var option = document.createElement("OPTION");

					option.value = regionTemplate[i].value;
					option.innerHTML = regionTemplate[i].innerHTML;
					
					if (option.value == selectedValue) {
						option.selected = true;
					}
					
					region.appendChild(option);
				}
			}
			
			// Enable if any fields (other than the empty one)
			if (region.length > 1) {
				region.disabled = false;
			}
			else {
				region.disabled = true;
			}
			
			// Enable correct text (region/state)
			if (countryCode == 'US') {
				document.getElementById("form-txt-region").style.display = "none";
				document.getElementById("form-txt-province").style.display = "none";
				document.getElementById("form-txt-state").style.display = "inline";
			}
			else if (countryCode == 'CA') {
				document.getElementById("form-txt-region").style.display = "none";
				document.getElementById("form-txt-province").style.display = "inline";
				document.getElementById("form-txt-state").style.display = "none";
			}
			else {
				document.getElementById("form-txt-region").style.display = "inline";
				document.getElementById("form-txt-province").style.display = "none";
				document.getElementById("form-txt-state").style.display = "none";
			}
			
		}
		
	},
	
	newsletter: {
		
		// Check and submit newsletter form
		submit: function() {
		
			var ok = true;
			
			maileg.dom.removeClassName(document.getElementById("newsletter-nm"), "input-text-error");
			maileg.dom.removeClassName(document.getElementById("newsletter-em"), "input-text-error");
			
			// Check name
			if ((document.getElementById("newsletter-nm").value == document.getElementById("newsletter-nm-default").value) || document.getElementById("newsletter-nm").value == "") {
				// document.getElementById("newsletter-nm").addClassName("input-text-error");
				maileg.dom.addClassName(document.getElementById("newsletter-nm"), "input-text-error");
				document.getElementById("newsletter-nm").focus();
				ok = false;
			}
			
			// Check email
			if ((document.getElementById("newsletter-em").value == document.getElementById("newsletter-em-default").value) || document.getElementById("newsletter-em").value == "") {
				maileg.dom.addClassName(document.getElementById("newsletter-em"), "input-text-error");
				
				if (ok) {
					document.getElementById("newsletter-em").focus();
					ok = false;
				}
				
			}
			
			if (ok) {
				document.getElementById("newsletter-form").submit();
			}
			
			return false;
		},
		
		// Insert locale info in newsletter form
		insertLocale: function() {
			
			// Country
			document.getElementById("newsletter-country").value = geofy.country.name;
		}
		
		
		
	},
	
	login: {
		
		submit: function() {
		
			var ok = true;
		
			maileg.dom.removeClassName(document.getElementById("login-username"), "input-text-error");
			maileg.dom.removeClassName(document.getElementById("login-password"), "input-text-error");
			
			// Check username filled in
			if ((document.getElementById("login-username").value == document.getElementById("login-username-default").value) || document.getElementById("login-username").value == "") {
				maileg.dom.addClassName(document.getElementById("login-username"), "input-text-error");
				document.getElementById("login-username").focus();
				ok = false;
			}
			
			// Check password filled in
			if ((document.getElementById("login-password").value == document.getElementById("login-password-default").value) || document.getElementById("login-password").value == "") {
				maileg.dom.addClassName(document.getElementById("login-password"), "input-text-error");
				
				if (ok) {
					document.getElementById("login-password").focus();
					ok = false;
				}
			}
			
			
			if (ok) {
				
				new Ajax.Request("/shop/ajax_login", {
					method: "post",
					parameters: {username: $F("login-username"), password: $F("login-password")},
					onSuccess: function(transport) {
						var ret = transport.responseText.evalJSON();
						
						if (ret.status) { // Login ok, go to shop
							document.location = "/shop";
						}
						else {
							
							if (ret.error_password) {
								$("login-password").addClassName("input-text-error");
								$("login-password").focus();
							}
							
							if (ret.error_username) {
								$("login-username").addClassName("input-text-error");
								$("login-username").focus();
							}
							
						}
						
					},
					onFailure: function(transport) {
						alert("An error occured and login could not be performed.");
					}
					
				});
				
			}
			
			return false;
			
		
		}
		
		/*
		submit: function() {
		
			var ok = true;
			
			maileg.dom.removeClassName(document.getElementById("login-username"), "input-text-error");
			maileg.dom.removeClassName(document.getElementById("login-password"), "input-text-error");
			
			// Check username
			if ((document.getElementById("login-username").value == document.getElementById("login-username-default").value) || document.getElementById("login-username").value == "") {
				maileg.dom.addClassName(document.getElementById("login-username"), "input-text-error");
				document.getElementById("login-username").focus();
				ok = false;
			}
			
			// Check password
			if ((document.getElementById("login-password").value == document.getElementById("login-password-default").value) || document.getElementById("login-password").value == "") {
				maileg.dom.addClassName(document.getElementById("login-password"), "input-text-error");
				
				if (ok) {
					document.getElementById("login-password").focus();
					ok = false;
				}
				
			}
			
			if (ok) {
				document.getElementById("login-form").submit();
			}
			
			return false;
			
		}
		*/

	},
	
	dom: {
	
		removeClassName: function(ele, className) {
			var classNames = ele.className.split(" ");
			var newClassNames = [];
			for (var i=0; i<classNames.length; i++) {
				if (classNames[i] != className) {
					newClassNames.push(classNames[i]);
				}
			}
			
			ele.className = newClassNames.join(" ");
		},
		
		addClassName: function(ele, className) {
			
			if (!ele.className.match(className)) {
				
				if (ele.className == '') {
					ele.className = className;
				}
				else {
					ele.className += ' ' + className;
				}
				
			}
			
		}
		
	}
	
	
};

/**
* Perform some function on enter press
* onkeypress="return onEnter(event, function() {alert(1)})"
**/
function onEnter(e, func) {
	var event = e || window.event;
	
	if (event.keyCode == 13) {
		func();
		return false;
	}
	else {
		return true;
	}
	
}

function addOnload(func) {
	if (window.addEventListener) {
		window.addEventListener("load", func, false);
	}
	else if (window.attachEvent) {
		window.attachEvent("onload", func);
	}
}
