/**
 * ---------------------------------------
 *
 * @author              Rossella Veronese
 * @site                http://www.coloartes.org/
 * @version             0.1
 * ---------------------------------------
 * 
 * Copyright (c) 2007 Rossella Veronese
 *
 */
 
 function changeLang(l){
   var url = window.location+"";
   if(url.indexOf("?")>0){
	   url = url.substring(0,url.indexOf("?"));
   }
   if(url.indexOf("#")>0){
	   url = url.substring(0,url.indexOf("#"));
   }
   window.location=url+"?lang="+l;
}


	function p_gallery(arg1,type, page){
	    //alert(arg1+type+ page);
		if(true){// condizione galleria richiesta già disponibile?? TODO
		//alert("22"+status.g_flag+status.b_flag);
		    if(status.b_flag){
			coloartes.resize(document.getElementById('b1'), 2, {iter:99,b:100,c:-1}, 
				null);
				status.b_flag=false;
			}
			if(status.g_flag){
				coloartes.scrollbg(document.getElementById('id2'), 2, {iter:95,b:-98,c:1}, function(){updateGallery(arg1,type,page);});
			
			} else {
			//alert("apro");
				updateGallery(arg1,type,page)
			}
		 }
	}
	function showImage(id,type){
	    urchinTracker('/rv/'+type+"_"+id); 
		var url = 'showimage.php';
		t="p";
		if(type=="photos"){
		   url = 'showphoto.php';
		   t="f";
		}
		var params = 'id=' + id +"&t="+t;//$F('zip');
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, 
			onComplete: function(originalRequest){
									$('core').innerHTML = originalRequest.responseText;
						}
		});
	}
	
	function showExhibitionGuestbook(page){
	    urchinTracker('/rv/'+page); 
		var url = './i18n/exhibition1_guestbook_content.php';
		var params = 'page=' + page ;//+"&t="+t;//$F('zip');
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, 
			onComplete: function(originalRequest){
									$('e_g').innerHTML = originalRequest.responseText;
									//$('a_guestbook').focus();
						}
		});
		
	}

	function updateGallery(subsection,section,page){
	    
		var url = 'gallery.php';
		var params = 'gallery=' + subsection.replace("_"," ")+'&type='+section.replace("_"," ");//$F('zip');
		if(page){
			params = params +'&page='+page;
			urchinTracker('/rv/'+section+"_"+subsection+"_"+page); 
		} else {
			urchinTracker('/rv/'+section+"_"+subsection); 
		}
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, onComplete: showGallery });
	}

	function showGallery(originalRequest)
	{
		$('contenitore').innerHTML = originalRequest.responseText;
		$('core').innerHTML = "";
		coloartes.scrollbg(document.getElementById('id2'), 2, {iter:95,b:-2,c:-1}, function(){
	    ;});
		status.g_flag=true;
	}


function home(){
    urchinTracker('/rv/home_main'); 
    var new_status = { b_flag:true, g_flag:false , section:"home", selected:""};
	action(new_status);
}

function painting(){
	urchinTracker('/rv/painting_main'); 
	var new_status = { b_flag:true, g_flag:false , section:"painting", selected:""};
	action(new_status);
}

function photography(){
	urchinTracker('/rv/photography_main'); 
	var new_status = { b_flag:true, g_flag:false , section:"photography", selected:""};
	action(new_status);
}

function about_me(){
	urchinTracker('/rv/about_me_main'); 
	var new_status = { b_flag:true, g_flag:false , section:"about_me", selected:""};
	action(new_status);
}

function resetgallery(){
	$('contenitore').innerHTML = bottombar;
}

function action(new_status){
    //alert("xx"+new_status.section+"_"+status.section+"_"+new_status.selected+"_"+status.selected);
    if(new_status.section == status.section && new_status.selected == status.selected){
		// do nothing 
		return;
	} 
	updateMenu(new_status.section,new_status.selected);
	if(status.b_flag!=new_status.b_flag){ // lo stadio iniziale è diverso da quello finale
		if(!new_status.b_flag){
			coloartes.resize(document.getElementById('b1'), 2, {iter:99,b:100,c:-1}, 
				null);
		} else {
			coloartes.resize(document.getElementById('b1'), 2, {iter:108,b:0,c:1}, 
				resetgallery);
			}
	}
	if(status.g_flag!=new_status.g_flag){
		if(new_status.g_flag){
			coloartes.scrollbg(document.getElementById('id2'), 2, {iter:95,b:-2,c:-1}, 
				null);
		} else {
			coloartes.scrollbg(document.getElementById('id2'), 2, {iter:95,b:-98,c:1}, 
				null);
		}
	}

	status = new_status;
	var url = "i18n/"+status.section.replace(' ','_')+"_"+ rv_lang +".php";
	var params = "";
			//document.location=url;
			//var myAjax = new Ajax.Request( url, {method: 'post', parameters: params, onComplete: null} );
			var myAjax = new Ajax.Updater(
				'core', 
				url, 
				{
					method: 'post', 
					parameters: params
				});
}

function sendcomment(form){
    urchinTracker('/rv/send_comment'); 
	var error = false;
		// pulisco campi di errore
		var campi = new Array("commenterror");
		for(var i= 0; i<campi.length ;i++){
			document.getElementById(campi[i]).innerHTML="";
		}
		if(form.comment.value.length>1000){
		  document.getElementById("commenterror").innerHTML=field_too_long;
		  error=true;
		}
		if(error){
			return;
		}
		var url = 'insertcomment.php';
		var params = "";
		params = Form.serialize(form);
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'comments', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function viewcomments(id,type){
		urchinTracker('/rv/viewcomments_'+id+type); 
        var url = 'viewcomments.php';
		var params = "id="+id+"&t="+type;
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'comments', 
			url, 
			{
				method: 'post', 
				parameters: params
			});

}

function exhibition_photo_update(src){
    urchinTracker('/rv/exhibition_photo_'+src); 
	$('exhibition_photo').innerHTML="<img src='./img/exhibition1/IMG"+src+"_m.jpg'></img>";

}
function sendandvalidateguestbook(form){
		var error = false;
		// pulisco campi di errore
		var campi = new Array("nicknameerror", "spamcode1error","messageerror","emailerror");
		for(var i= 0; i<campi.length ;i++){
			document.getElementById(campi[i]).innerHTML="";
		}
		if(form.nickname.value==""){
		  document.getElementById("nicknameerror").innerHTML=field_required_error_msg;
		  //alert(document.getElementById("nickname").className );
		  error=true;
		}
		if(form.spamcode1.value==""){
		  document.getElementById("spamcode1error").innerHTML=field_required_error_msg;
		  error=true;
		}
		if(form.message.value==""){
		  document.getElementById("messageerror").innerHTML=field_required_error_msg;
		  error=true;
		}
		if(form.subscribe.checked){
			if(form.email.value==""){
				document.getElementById("emailerror").innerHTML=subscription_required_error_msg;
				error=true;
			} else if(!verifyEmailAddress(form.email.value)){
			    document.getElementById("emailerror").innerHTML=invalid_mail_address_error_msg;
				error=true;
			}
		}
		if(error){
			return;
		}
		var url = 'insertMessageOnGuestbook.php';
		var params = "";
		params = Form.serialize(form);
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function guestbook(){
        urchinTracker('/rv/guestbook'); 
		status.selected="guestbook";
        var url = 'guestbook.php';
		var params = "lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function sendandvalidatesubscription(form){
		var error = false;
		// pulisco campi di errore
		var campi = new Array("firstnameerror","spamcode1error", "emailerror");
		for(var i= 0; i<campi.length ;i++){
			document.getElementById(campi[i]).innerHTML="";
		}
		if(form.firstname.value==""){
		  document.getElementById("firstnameerror").innerHTML=field_required_error_msg;
		  //alert(document.getElementById("nickname").className );
		  error=true;
		}
		if(form.spamcode1.value==""){
		  document.getElementById("spamcode1error").innerHTML=field_required_error_msg;
		  error=true;
		}
		if(form.email.value==""){
			document.getElementById("emailerror").innerHTML=field_required_error_msg;
			error=true;
		} else if(!verifyEmailAddress(form.email.value)){
			document.getElementById("emailerror").innerHTML=invalid_mail_address_error_msg;
			error=true;
		}
		if(error){
			return;
		}
		var url = 'innersubscribe.php';
		var params = "";
		params = Form.serialize(form);
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function newsletter(){
		urchinTracker('/rv/newsletter'); // monitoraggio  
		status.selected="newsletter";
        var url = 'subscription.php';
		var params = "lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function sendandvalidatecontact(form){
		var error = false;
		// pulisco campi di errore
		var campi = new Array("firstnameerror","spamcode1error", "emailerror", "messageerror");
		for(var i= 0; i<campi.length ;i++){
			document.getElementById(campi[i]).innerHTML="";
		}
		if(form.firstname.value==""){
		  document.getElementById("firstnameerror").innerHTML=field_required_error_msg;
		  //alert(document.getElementById("nickname").className );
		  error=true;
		}
		if(form.spamcode1.value==""){
		  document.getElementById("spamcode1error").innerHTML=field_required_error_msg;
		  error=true;
		}
		if(form.email.value==""){
			document.getElementById("emailerror").innerHTML=field_required_error_msg;
			error=true;
		} else if(!verifyEmailAddress(form.email.value)){
			document.getElementById("emailerror").innerHTML=invalid_mail_address_error_msg;
			error=true;
		}
		if(form.message.value==""){
			document.getElementById("messageerror").innerHTML=field_required_error_msg;
			error=true;
		}
		if(error){
			return;
		}
		var url = 'innercontact.php';
		var params = "";
		params = Form.serialize(form);
		params=params+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}
function contact(){
		urchinTracker('/rv/contact'); 
		status.selected="contact";
        var url = 'contact.php';
		var params = "lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'core', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
}

function loadCompletePage(section,subsection){
		urchinTracker('/rv/'+section+"/"+subsection); 
		var url = 'innerindex.php';
		var params = "section="+section+"&subsection="+subsection+"&lang="+rv_lang;
		var myAjax = new Ajax.Updater(
			'container', 
			url, 
			{
				method: 'post', 
				parameters: params
			});
//"javascript:window.location='".$host."/index.php?section=about_me&subsection=ic&lang='+rv_lang"
}

function checkMenuItem(selected){
	var i=2;
	var elem = document.getElementById('item'+i);
	while(elem!= undefined){
		elem.getElementsByTagName('img')[0].src="./img/menu/fr1.gif";
		i++;
		elem = document.getElementById('item'+i);
	}
	document.getElementById(selected).getElementsByTagName('img')[0].src="./img/menu/fr3.jpg";
}

function updateMenu(section, selected) {
	if(status.section != section || status.selected != selected) {
		status.selected=selected;
		var url = 'menu.php';
		var params = 'section=' + section + '&lang=' + rv_lang ;//$F('zip');
		if(selected!=undefined){
			params += '&selected=' + selected ;//$F('zip');
		}
		var ajax = new Ajax.Updater({success: 'submenu'}, url,
		  {method: 'post', parameters: params, onFailure: reportError, evalScripts:true /*, onComplete: alert('xdsa')/*coloartes.menu('item', 2, {iter:30,b:180,c:6}, null)*/});
	}
}

function reportError(request) {
alert("report error");

}
 
 function verifyEmailAddress(str){
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true	
}

function verifyString(str){
  var pattern = new RegExp("^[a-zA-Z0-9.,;:!?'èéòç°àù=ì \t\r\n()]*$");
  //alert("messaggio di test"+pattern.test(str));
  return pattern.test(str);
}

 
coloartes = new function(){

	// public methods
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	/**
	 * private method,
         * 	[virtual scope]$setInterval(element:Object, intervalName:String, speed:Number, startValues:Object, endValues:Object, propertiesName:Array, methodName:String[, finalCallback:Function]):Void
	 */
	function $setInterval(element, interval, tmp, parameters,callback){
		clearInterval(element.coloartes[interval]);
		var i = 0;
		element.coloartes[interval] = setInterval(function(){

			coloartes[tmp](element, {a:i,b:parameters.b,c:parameters.c});// chiama la funzione che fa la modifica (tra parentesi i parametri passati alla funzione)
			if( i++>parameters.iter ){
				//coloartes[tmp](element, position);
				$callback(element, interval, callback);
			}
		}, 1);
	};
	
	
	this.menu  = function(idprefix, speed, parameters, callback){
		for( var i = 1;i<=parameters.c;i++){
			var element = document.getElementById(idprefix+i);
			// attenzione la funzione di callback viene chiamata due volte
			$setInterval($element(element), "menu", "menu$", parameters, callback ? function(){callback.call(element)} : null);
		}
	};
	
	this.menu$ = function(element, i){
		var style = element.style;
		style.top = (-i.b-i.a)+"px";
	};
	
	this.resize = function(element, speed, parameters, callback){
		$setInterval($element(element), "resize", "resize$", parameters, callback ? function(){callback.call(element)} : null);
	};
	
	this.resize$ = function(element, i){
		var style = element.style;
		style.height = /*(100-i.a)*/(i.b+((i.c)*i.a))+"px";
	};
	
	this.scrollbg = function(element, speed, parameters, callback){
		$setInterval($element(element), "scrollbg", "scrollbg$", parameters, callback ? function(){callback.call(element)} : null);
	};
	
	this.scrollbg$ = function(element, i){
		var style = element.style;
		//alert(i.b +" "+i.c +" "+i.a +":"+(i.b+((i.c)*i.a)));
		style.backgroundPosition = "0px "+(i.b+((i.c)*i.a))+"px";
	};
	
//  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

	// private methods, used inside other public methods

	/**
	 * private method,
         * 	[virtual scope]$callback(element:Object, intervalName:String[, callback:Function]):Void
         * @param	Object		X/HTML Element to clear interval
         * @param	String		interval name ("move", "fade", ...)
         * @param	Function	callback to call with element as scope on event complete
	 */
	function $callback(element, interval, callback){
		clearInterval(element.coloartes[interval]);
		if(callback)
			callback.call(element);
	};

	/**
	 * private method,
         * 	[virtual scope]$element(element:Object):Object
         * @param	Object		X/HTML Element to verify
         * @param	Object		same element with coloartes object if was not present
	 */
	function $element(element){
		if(!element.coloartes){
			element.coloartes = {color:0, drag:{}, fade:0, move:0, scroll:0, size:0};
			}
		return element;
	};
}