/*
 * @author McLaud
*/
//www.ensemble900.com main js
//copyright Koala Web Solutions
//McLaud AKA Claudio Seccia 2K8
//
//based on prototype.js :-)

/*
//to be used if evalScripts:true in doMenu is not set to true
//eventually called from showResponse
function evalMenuScripts() {	
	var resp = $('scrcontain');
	var scripts = resp.getElementsByTagName("script");
	for (var i=0; i < scripts.length; i++) {
		var dj_global = this; // global scope object
		var code = scripts[i].innerHTML;
		
		if (window.execScript) {
	    	window.execScript(code); // eval in global scope for IE
	    	return null; // execScript doesn’t return anything
	  	}
	  	//return dj_global.eval ? dj_global.eval(code) : eval(code);
		dj_global.eval ? dj_global.eval(code) : eval(code);	  	
	}	
}
*/
//Ajax.Eval utility class -- new Ajax.Eval(some_url, some_parameters);
Ajax.Eval = Class.create();
Object.extend(Object.extend(Ajax.Eval.prototype, Ajax.Request.prototype), {
  initialize: function(url, pars) {
    this.transport = Ajax.getTransport();
    this.setOptions({method:'post', parameters:pars});
    this.options.onComplete = (function(transport) {
      eval(transport.responseText);
    });
    this.request(url);
  }
});

//HOME PAGE STARTUP
function homepageStartup(page,language) {
	loadPage(page,language);
	return false;
}

//Home page autoload
function loadPage(pagetoload, language) {
	//alert(pagetoload+' '+language);
	var params=$H({web2:'on',language:language,page:pagetoload	});
	var hijax = new Ajax.Updater('main', './content.php' , {	
																	method:'get',
																	parameters: params, 
																	onComplete:showResponse, 
																	asynchronous:true, 
																	evalScripts:false
																	});
	return false;
}

function doMenu() {
	//alert(menuId);
	if (!document.getElementsByTagName) return false;
	var menu = $('nav');
	var links = menu.getElementsBySelector("a");
	for (var i=0; i < links.length; i++) {
		links[i].onclick = function() {
		  clearChosenSelector();  
		  var linkd = this.className; //same of: this.getAttribute("class");
		  var language = this.getAttribute("lang");
		  //alert(this.getAttribute("href")+" "+linkd+" "+language);
		  $(linkd).addClassName('active'); //add class attribute "chosen" to the selected section
		  
		  //Hijax call
		  var params=$H({web2:'on',language:language,page:linkd }).toQueryString();
		  //alert(this.getAttribute("href")+ " " + params);
		  if(linkd=='gallery') {	//USE evalScripts ONLY ON SOME SECTIONS
			var hijax = new Ajax.Updater('main', this.getAttribute("href"), {	
																				method:'get',
																				parameters: params, 
																				onComplete:showResponse, 
																				asynchronous:true, 
																				evalScripts:true
																				});
		  }else if(linkd=='contatti') {
		  	var hijax = new Ajax.Updater('main', this.getAttribute("href"), {	
																				method:'get',
																				parameters: params, 
																				onComplete:validationInit, 
																				asynchronous:true, 
																				evalScripts:false
																				});
		  }else {
			var hijax = new Ajax.Updater('main', this.getAttribute("href"), {	
		  																		method:'get',
																				parameters: params, 
																				onComplete:showResponse, 
																				asynchronous:true, 
																				evalScripts:false
																				});
		  }
																			
		  return false;
		};
	}
}

function doFooterMenu() {
	if (!document.getElementsByTagName) return false;
	var menu = $('footernav');
	var links = menu.getElementsBySelector("a");
	for (var i=0; i < links.length; i++) {
		links[i].onclick = function() {
		  clearChosenSelector();  
		  var linkd = this.className; //same of: this.getAttribute("class");
		  var language = this.getAttribute("lang");
		  $(linkd).addClassName('active'); //add class attribute "chosen" to the selected section
		  //Hijax call
		  var params=$H({web2:'on',language:language,page:linkd }).toQueryString();	
		  var hijax = new Ajax.Updater('main', this.getAttribute("href"), {	
																			method:'get',
																			parameters: params, 
																			onComplete:showResponse, 
																			asynchronous:true, 
																			evalScripts:false
																			});															
		  return false;
		};
	}
}

//GALLERY
function doGallery(){
	if (!document.getElementsByTagName) return false;
	var menu = $('imagegallery');
	var links = menu.getElementsBySelector("a");
	for (var i=0; i < links.length; i++) {	
		links[i].onclick = function() {
			
			//Hijax call
			var linkd = 'gallery'; //forced param to gallery;
			var language = this.getAttribute("lang");	
			var params = $H({
				web2: 'on',
				language: language,
				page: linkd
			}).toQueryString();
						
			var hijax = new Ajax.Updater('main', this.getAttribute("href"), {
				method: 'get',
				parameters: params,
				onComplete: showResponse,
				asynchronous: true,
				evalScripts: true
			});
			
			return false;			
		};
	}
}


//UNIVERSAL RESPONSE HANDLING
function showResponse(req) {
	relExternal();
  	new Effect.Highlight('main',{ startcolor: '#ffffff', endcolor: '#eeeeee', restorecolor:'transparent', duration: 1 }); 
	$('main').innerHTML = req.responseText;
}

//CLEAR CLASS ACTIVE SELECTOR FOR MENU
function clearChosenSelector() {
	var menu = $("nav");
	var selectors = menu.getElementsBySelector("li");
	for (var i=0; i < selectors.length; i++) {
		//var classes = links[i].className;
		$(selectors[i]).removeClassName('active');		
	}
}

//CALENDAR PROTOTYPIZED
function cDisplay(id,language) {
	var ran_no=(Math.round((Math.random()*9999))); 
	$('main').innerHTML = '<p>loading...</p>';
	var params=$H({web2:'on', id:id, language:language, ran:ran_no }).toQueryString();
	var hijax = new Ajax.Updater('main', 'getCalEvents.php', {	
																	method:'get',
																	parameters: params, 
																	onComplete:showCalendarResponse, 
																	asynchronous:true, 
																	evalScripts:false
																	});
}

function displayQCalendar(m,y,language) {	
	var ran_no=(Math.round((Math.random()*9999))); 
	//$('schedule').innerHTML = '<p>loading...</p>';
	var params=$H({web2:'on', m:m, y:y, language:language, ran:ran_no }).toQueryString();
	var hijax = new Ajax.Updater('schedule', 'getCalendar.php', {	
																	method:'get',
																	parameters: params, 
																	onComplete:showCalendar, 
																	asynchronous:true, 
																	evalScripts:false
																	}); 
}

function showCalendar(req) {	
	var response = req.responseText;
	if(response) {
		//new Effect.Highlight('schedule'); 
		$('schedule').innerHTML = response; 
	}else {
		$('schedule').innerHTML = '<p>loading...</p>';
	}
}

function showCalendarResponse(req) {
	clearChosenSelector(); //clear active menu state
	var response = req.responseXML;
	var events = response.documentElement.getElementsByTagName("event");
	for (var i = 0; i < events.length; i++) {
  		if(response) {
			//alert('antana '+'<p>'+events[i].getAttribute("description")+'</p>');
  			new Effect.Highlight('main',{startcolor: '#ffffff', endcolor: '#eeeeee', restorecolor:'transparent', duration: 1 }); 
			$('main').innerHTML = '<p>'+events[i].getAttribute("description")+'</p>';  
  		}else {
  			$('main').innerHTML = '<p>loading...</p>';
  		}
  		
	}
	
}

function calendarStartUp(language) {
	var date = new Date();
	var y = date.getFullYear();
	var m = date.getMonth()+1;
	displayQCalendar(m,y,language);
}



/*
function loadExternal(cssid,file,id) {
	var params=$H({web2:'on', id:id	});
	var hijax = new Ajax.Updater(cssid, file , {	
																	method:'get',
																	parameters: params, 
																	onComplete:showResponse, 
																	asynchronous:true, 
																	evalScripts:false
																	});
}

*/


//REL EXTERNAL 
//rel external --- overrides the target="_blank" tag for Xhtml validation:
//Before:<a href="document.html" target="_blank">external link</a>
//After:<a href="document.html" rel="external">external link</a>
function relExternal() {
	var anchors = $$("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank";
		}
	}
	return false;
}
/*
//_BLANK LINKS ASSIGNED TO rel="external"
var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
		   anchor.getAttribute("rel") == "external")
		 anchor.target = "_blank";
 }
 */

//LOAD EVENT OBSERVERS
Event.observe(window,'load',doMenu);
Event.observe(window,'load',doFooterMenu);

/*JS Calendar loading*/
//Event.observe(window,'load',calendarStartUp);

/*Rel External */
Event.observe(window,'load',relExternal);

/*Home page startup */
//Event.observe(window,'load',homepageStartup);

/*Newsletter*/
/*
Event.observe(window,'load',handleNewsletter);
 */
/*
//NEWSLETTER
function handleNewsletter() {
	$('newsletter').onSubmit = function() {
		alert('antana');
	}
}
*/


/*IMAGE GALL */
/*
document.observe('dom:loaded', function() {
	new FancyZoom('main_gall');
});
*/
