// JavaScript Document

/* Essential */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}


/* Blance Right Div - Dosen't Work With FireFox */
function balanceDiv(){
	 if (!document.getElementById) return false;
  if (!document.getElementById("rigthContents")) return false;
		var containsDiv = document.getElementById("contains");
		var rightDiv = document.getElementById("rigthContents");
  //alert(containsDiv.style.height);
		rightDiv.style.height = containsDiv.scrollHeight ;
}


/* Image Gallery */
function showImage(clickedImage){
  if(!document.getElementById('imageHolder')) return true;
		var clickedImageLink = clickedImage.getAttribute('href');
		var clickedImageTitle = clickedImage.getAttribute('title');
		clickedImageLink = clickedImageLink.replace(/thumb/, "grandi")
		var imageHolder = document.getElementById('imageHolder');
		imageHolder.setAttribute('src', clickedImageLink);
		imageHolder.setAttribute('alt', clickedImageTitle);
		imageHolder.setAttribute('title', clickedImageTitle);
		return false;
}

function getImages(){
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("imageGallery")) return false;
		var ulImageGallery = document.getElementById('imageGallery');
		var imageLinks = ulImageGallery.getElementsByTagName('a');
		for(var i = 0; i < imageLinks.length; i++){
		  imageLinks[i].onclick = function(){
				  return showImage(this);	
			 }
		}
}

function preloadImages(){
	 if (!document.getElementsByTagName) return false;
		if (!document.getElementById) return false;
		if (!document.getElementById("imageGallery")) return false;
		var ulImageGallery = document.getElementById('imageGallery');
		var links = ulImageGallery.getElementsByTagName('a');
		
		for(var i = 0; i < links.length; i++){
			 var images = links[i].getAttribute('href');
		  var loadImage = new Image();
				loadImage.src = images;
		}
}

/* Form */
function prepareForm(){
  for(var i = 0; i < document.forms.length; i++){
		  var currentForm = document.forms[i];
				resetFields(currentForm);
				currentForm.onsubmit = function(){
				  return validateForm(this);	
				}
	 }
}

function resetFields(whichForm){
  for(var i = 0; i < whichForm.elements.length; i++){
	   var element = whichForm.elements[i];
				if(element.type == "submit") continue;
				if(!element.defaultValue) continue;
				
				element.onfocus = function(){
				  if(this.value == this.defaultValue){
						  this.value ="";
						}	
				}
				element.onblur = function(){
				  if(this.value == ""){
						  this.value = this.defaultValue;	
						}
				}
	 }	
}

function isFilled(field){
  if(field.value.length < 1 || field.value == field.defaultValue){
			 return false;
		}else{
		  return true;	
		}
}

function isEmail(field){
  if((field.value.indexOf("@") == -1) || (field.value.indexOf(".") == -1)){
		  return false;
		}else{
			 return true;
		}
}

function validateForm(whichForm){
  for(var i = 0; i < whichForm.elements.length; i++){
		  var element = whichForm.elements[i];
				if(element.className.indexOf("required") != -1){
				  if(!isFilled(element)){
						  alert("completare il campo "+element.name);
								return false;
						}
				}
				if(element.className.indexOf("email") != -1){
						if(!isEmail(element)){
						  alert("The "+element.name+" field must be a valid email address");
								return false;
					 }
				}
		}	
		return true;
}

/* Run Script */
addLoadEvent(balanceDiv);
addLoadEvent(preloadImages);
addLoadEvent(getImages);
addLoadEvent(prepareForm);