// JavaScript Document

Event.observe(window, 'load', function() {
  $$('a[href^=#]:not([href=#])').each(function(element) {
	element.observe('click', function(event) {
	  new Effect.ScrollTo(this.hash.substr(1), {transition:Effect.Transitions.EaseFromTo, duration:1.5});
	  Event.stop(event);
	}.bindAsEventListener(element))
  })
})

function onMyTextKeypress(event) {
	if (Event.KEY_RETURN == event.keyCode) {
		sendContact($('mailField').value);
	}
	return;
}

Event.observe('mailField', 'keypress', onMyTextKeypress);

var imgArray=[];
var scrollOn = false;
		
function move(id,reset) {
	var target=document.getElementById(id);
	var debug=document.getElementById('debug');
	var h=target.offsetHeight;
	var pos=target.style.top;
	if (reset) {y=0;}
	if (h>556) { // Scorrimento ON
//		debug.innerHTML=y;
		if ((h+parseInt(pos))<556) {
			var add=document.createElement('img');
			add.src='foto/'+imgArray[y];
			add.style.position = 'relative';
			target.appendChild(add);
			if (y==imgArray.length-1) {y=0;} else {y++;}
			
		}
		target.style.top=(parseInt(target.style.top)-1)+'px';
		setTimeout(function(){move(id)},30);
	}
}

function moveHor(id,reset) { // Elementi TOP
	var target=document.getElementById(id);
	var w=target.offsetWidth;
	var posx=target.style.left;
	if (reset) {x=0;}
	if (w>770) { // Scorrimento ON
		if ((w+parseInt(posx))<770) {
			var addanc=document.createElement('a');
			addanc.href="#panelLink"+imgTopFather[x];
			addanc.onclick=function(){new Effect.ScrollTo(this.hash.substr(1), {transition:Effect.Transitions.EaseFromTo, duration:1.5}); return false};
			var add=document.createElement('img');
			add.src='foto/'+imgTopArray[x];
			add.onclick=function(){openPanel('panel'+this.alt,this.title); closeAllPanels(this.alt);};
			add.alt=imgTopFather[x];
			add.title=imgTopId[x];
			add.style.position = 'relative';
			add.className='topImg';
			target.style.width=(parseInt(target.style.width)+355)+'px';
			addanc.appendChild(add);
			target.appendChild(addanc);
			
			if (x==imgTopArray.length-1) {x=0;} else {x++;}
		}
		target.style.left=(parseInt(target.style.left)-1)+'px';
		setTimeout(function(){moveHor(id)},30);
	}
}

function openPanel(panel,prod) {
	new Effect.Morph(panel, { style:'width:676px ', duration: 0.15, afterFinish: function(){
		var target = document.getElementById('box'+panel);
		var targetLink = document.getElementById('product'+prod);
		target.innerHTML="";
		targetLink.className="textover";
		getImages(prod,panel); // Carica immagini
		return false;
	} });
}

function closePanel(panel) {
	var target = document.getElementById('box'+panel);
	var targetLink = document.getElementsByClassName('textover');
	if (targetLink[0]) targetLink[0].className="";
	new Effect.Morph(panel, { style:'width:676px ', duration: 0.15, afterFinish: function() { target.innerHTML=""; } });
}

function closeAllPanels(except) {
	var targetLink = document.getElementsByClassName('textover');
	if (targetLink[0]) targetLink[0].className="";
	for (i=1; i<=4; i++) { 
		if (i!=except) new Effect.Morph('panel'+i, { style:'width:676px ', duration: 0.15 });
	}
}

function loadImage(imgURL,where,last) {
	var target = document.getElementById('box'+where);
	var img = new Image();
	img.onload = function () {
		target.appendChild(img);
		if (last) {
				setTimeout(function(){
					new Effect.Morph(where, { style:'width:265px ', duration: 0.15 }); // Apri pannello
					var targetLoader = document.getElementById('loader'+where);
					targetLoader.style.display='none';
					target.style.top='0px'; // Reset
					move('box'+where,true); 
				},200);
		}
	}
	img.src="foto/"+imgURL;
}

var ajax = new sack();

function getImages(sel,panel) {
		var targetLoader = document.getElementById('loader'+panel);
		targetLoader.style.display='block';
		ajax.requestFile = 'getimages.php?id='+sel+'&panel='+panel;	// Specifying which files to get
		ajax.onCompletion = function(){showImages(panel);}	// Specify function that will be executed after file has been found
		ajax.runAJAX();		// Execute AJAX function

}

function showImages(panel) {
	var obj = document.getElementById('box'+panel);
	eval(ajax.response);	// Executing the response from Ajax as Javascript code
}

function moveMenu(who,how) {
	if (how=='open') { new Effect.Morph(who, { style:'height:42px ', duration: 0.1 }); }
	else { new Effect.Morph(who, { style:'height:38px ', duration: 0.1 });}
}

   
/* A little bit of AJAX (for contact form) */

function getHTTPObject() {
	var xhr = false;
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				xhr = false;
			}
		}
	}
	return xhr;
}

var sent=false;

function sendContact(mail) {
	var request = getHTTPObject();
	if (request) {
		request.onreadystatechange = function() {
			displayResponse(request);
		}
		if ((mail!="") && (validate(mail))) {
			document.getElementById('sendStatus').innerHTML='Invio in corso...';
			document.getElementById('invia').className='v-off';
			sent=true;
			var query='send=true&email='+mail;
			request.open('POST', 'send.php', true);
			request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			request.setRequestHeader("Content-length", query.length);
			request.setRequestHeader("Connection", "close");
			request.send(query);
		} else document.getElementById('sendStatus').innerHTML='Inserire un\'e-mail valida.';
	}
}

function displayResponse(request) {
	if (request.readyState == 4) {
		if (request.status == 200 || request.status == 304) {
			document.getElementById('sendStatus').innerHTML='E-mail aggiunta, grazie.';
			document.getElementById('invia').onclick="";
		} else {
			document.getElementById('sendStatus').innerHTML='Si &egrave; verificato un errore.';
			document.getElementById('invia').className='v';
			sent=false;
		}
	}
}

function validate(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   var address = email;
   if(reg.test(address) == false) {
      return false;
   } else return true;
}


/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
