function openImagePopup(id, name, w, h, list) { 
	w= parseInt(w,10)+20;
	h= parseInt(h,10)+20;
	var l= (screen.width-w)/2;
	var t= (screen.height-h)/2;
	window.open('imagePopup.jsp?nodeid='+id+'&name='+name+'&listname='+list,'','width='+w+', height='+h+', top='+t+', left='+l+', scrollbars=yes,resizable=yes');
}

function gotoPage(s) {
	window.location= s;
}

function changeLanguage(l) {
	alert("Questa funzione non è disponibile per il sito demo");
}

var CatalogSpecifications= {
	KIND_CATALOG: 0,
	KIND_USERS: 1,
	KIND_NEWS: 2
};

function openUsers() {
	var d= $("genericaction");
	if(d) {
		d.action= "users.jsp";
		d.submit();
	}
	return false;
}


function openUser(id) {
	var d= $("genericaction");
	if(d) {
		d.action= "user.jsp";
		d.parameter1.value= id;
		d.submit();
	}
	return false;
}

function createUser() {
	return openUser('new');
}


function basic_openNode(n) {

	var d= $(n.formName);
	if(d) {
		d.catalogName.value= n.catalogName;
		d.nodeKind.value= n.nodeKind; 
		d.listId.value= n.listId;
		if(n.catalogKind != undefined) {
			d.catalogKind.value= n.catalogKind;
		}
		if(n.parentId != undefined) {
			d.parentId.value= n.parentId;
		}
		if(n.nodeId != undefined) {
			d.nodeId.value= n.nodeId;
		}
		if(n.folderId != undefined) {
			d.folder.value= n.folderId;
		}
		d.submit();
	}
	return false;
}

function openNode(catalogName,catalogKind,nodeKind,nodeId,parentId,listId) {
	if(catalogKind==CatalogSpecifications.KIND_USERS) {
		openUsers();
	} else {
		return basic_openNode( {
			formName: 'nodeform',
			catalogName: catalogName,
			nodeKind: nodeKind,
			listId: listId,
			nodeId: nodeId,
			parentId: parentId,
			catalogKind: catalogKind
		});
	}
}
	
function openCatalog(catalogName, catalogKind, folder, listId) {
	if("-1"==folder) {
		gotoMainMenu();
	} else if(catalogKind==CatalogSpecifications.KIND_USERS) {
		openUsers();
	} else {
		openDataCatalog(catalogName, folder, listId, catalogKind);
	}
}

function openDataCatalog(catalogName, folder, listId, catalogKind) {
	return basic_openNode( {
		formName: 'foldersform',
		catalogName: catalogName,
		nodeKind: "1",
		listId: listId,
		folderId: folder,
		catalogKind: catalogKind
	});
}

function openSelector(fieldName, catalogName, kind, folder, listId, maxValuesAllowed, canSelectFolders, canSelectLeaves) {
	var w=550;
	var h=550;
	var t=(screen.height-h)/2;
	var l=(screen.width-w)/2;
	
	var seletedList= $("field_"+fieldName).value;
	var opts=  "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,"
	    	 + "width="+w
	    	 +",height="+h
	    	 +",top="+t
	    	 +",left="+l
			;
			
	var params= 'catalogName='+catalogName
				+'&fieldName='+fieldName
				+'&kind='+kind
				+'&folder='+folder
				+'&listId='+listId
				+'&selectedList='+seletedList
				+'&maxValuesAllowed='+maxValuesAllowed
				+'&canSelectLeaves='+canSelectLeaves
				+'&selectedList='+canSelectFolders
				;			
    var ret=window.open(
	    	'/admin/selector.jsp?'+params,
	    	 "_blank",
	    	 opts
    	);
    ret.focus();
	
	return false;
}

/*
 * TODO attenzione ho rinominato i parametri kind, sono da sistemare
 * 
function editElement(catalogName, catalogKind, nodeKind) {
	var d= $("editform");
	if(d) {
		d.catalogName.value= catalogName;
		d.nodeKind.value= nodeKind;
		d.catalogKind.value= catalogKind;
		if(nodeKind==1) {
			d.folder.value= folder;
		} else {
			d.folder.value= '0';
		}
		d.submit();
	}
	return false;
}
*/
function gotoMainMenu() {
	window.location= getContextPath()+'/admin';
}

function logout() {
	window.location= getContextPath()+'/adminaction/Logout';
}


var currentContextPath="_not_defined_yet_";

function setContextPath(c) {
//alert("setContextPath :"+c+":")
	currentContextPath= c;
	top.window.status='setting contextpath to ' + c + ' @ ' + new Date();
}

function getContextPath() {
	if("_not_defined_yet_" != currentContextPath) {
		return currentContextPath;
	} else {
		//alert("currentContextPath not defined, you probably miss to call setContextPath() from the html/jsp page");
		return "";
	}
}

var currentMousePosition= { x:0, y: 0} ;

function mouseX(evt) {
	try {
		if (!evt) evt = window.event; 
		if (evt.pageX) 
			return evt.pageX; 
		else if (evt.clientX) 
			return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); 
	} catch (e) {
		return 0;
	}
	return 0;
}
	
function mouseY(evt) {

	try {

		if (!evt) evt = window.event; 
		if (evt.pageY) 
			return evt.pageY; 
		else if (evt.clientY)
			return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
			else return 0;
	} catch (e) {
		return 0;
	}
	return 0;
}

function follow(evt) {
	currentMousePosition.x = parseInt(mouseX(evt));
	currentMousePosition.y = parseInt(mouseY(evt));
}

document.onmousemove = follow;
	
function showHelp(helpid) {
	var d= $(helpid);
	if(d) {
		d.style.display= 'block';
		d.style.top= (currentMousePosition.y)+"px";
		d.style.left= (currentMousePosition.x)+"px";
	}
}

function hideHelp(helpid) {
	var d= $(helpid);
	if(d) {
		d.style.display= 'none';
	}
}

function showHint(helpid) {
	$(helpid).show();
}

function hideHint(helpid) {
	$(helpid).hide();
}
	
function changeDisplayStyle(cssname, status) {
	var r= findCSSRule(cssname);
	if(r) {
		r.style.display= status? '': 'none';
	}
}

function showHints(status) {
	if(status) {
		$$('div .fieldHints').each(Element.show);
	} else {
		$$('div .fieldHints').each(Element.hide);
	}
	changeDisplayStyle('.fieldHintsButtonOn', status);
	changeDisplayStyle('.fieldHintsButtonOff', !status);
}

function findCSSRule(name) {
	var ss= document.styleSheets;
	if(ss) {
		for(var i=0; i<ss.length; ++i) {
			var s= document.styleSheets[i];
			
			var rules= s.cssRules? s.cssRules: s.rules;
			
			for(var j=0; s && j<rules.length; ++j) {
				var t= rules[j].selectorText
				if(t && t.indexOf('.')==0) {
					t= t.substr(1);
				}
				if( t == name ) {
					return rules[j];
				}
			}
		}
	}
	return null;
}

/*
function validateFields(fieldsList, suppressAlerts) {
	if(arguments.length<2) {
		var suppressAlerts= false;
	}
	var err= false;
	var alertEverySingleError= true;
	for(var i=0; fieldsList && i<fieldsList.length; ++i) {
		var v= fieldsList[i];
		var w= v.validations? v.validations.split(';'): new Array();
		var fieldErr= false;
	 	for(var j=0; j<w.length; ++j) {
	 		//alert("validate " + v.fieldName + " against " + w[j]);
	 		var rexp=null; // the validating regexp
			var val=null; // the value to validate 
			var errmsg; // the error message
			if(w[j].indexOf("mandatoryupload")==0) {
				val= $("field_"+v.fieldName);
				if(!val) {
					val= $("current_filename_"+v.fieldName);
				}
				rexp=/[^\s]+/;
				errmsg= "Il campo è obbligatorio"; 
			} else if(w[j].indexOf("mandatory")==0) {
				rexp=/[^\s]+/;
				errmsg= "Il campo e' obbligatorio"; 
			} else if(w[j].indexOf("format[")==0) {
				var tmp= w[j].indexOf("]");
				var f= w[j].substring(7,tmp);
				rexp= compileNumberFormatRegexp(f);
				errmsg= "Formato errato, il formato corretto e': " + f + "\n"+compileNumberHelp(f); 
			} else if(w[j].indexOf("checkdate[")==0) {
				var tmp= w[j].indexOf("]");
				var f= w[j].substring(7,tmp);
				rexp= null;
				fieldErr|= checkDate(v.fieldName)
				errmsg= "Data non valida";
			} else if(w[j].indexOf("passwordMatch[")==0) {
				var tmp= getValidationArgs(w[j]);
				if(tmp && tmp.length==2) {
					var x1= $(tmp[0]);
					var x2= $(tmp[1]);
					fieldErr |= (x1.value != x2.value);
				} else {
					alert("Illegal validation required: " + w[j]);
					fieldErr= true;
				}
				rexp= null;
				errmsg= "Le password non coincidono";
			}
		
			var currAlertField= $("alert_"+v.fieldName);
			var currFieldRow= $("row_"+v.fieldName);
			setCSSClass(currAlertField, "alertOff");
			restoreOriginalClassName(currFieldRow);
			
			if(rexp) {
				var fieldName= "field_"+v.fieldName;
				if(!val) {
					val= $F(fieldName);
				}
//				
//				if(!val) {
//					// no value passed, try to get from the current HTLM field 
//					val= $F(fieldName);
//					if(!val && $(fieldName).hasClassName('htmlEditorPlaceholder') ) {
//						var oEditor = FCKeditorAPI.GetInstance('editor_'+v.fieldName);
//						if(oEditor) {
//							val= oEditor.GetHTML();
//							$(fieldName).value= val;
//						}
//					}
//				}
//				
				if(!rexp.test(val)) {
					fieldErr= true;
				}
			}
				
			if(fieldErr) {
				err= true;
				if(alertEverySingleError && !suppressAlerts) {
	 	 			alert("Errore nel campo " + v.fieldName + (errmsg? "\n"+ errmsg: ""));
	 	 		}
	 	 		setCSSClass(currAlertField, "alertOn");
				if(currFieldRow) {
					backupOriginalClassName(currFieldRow);
					setCSSClass(currFieldRow, "badFieldRow");
				}
			}	
		}
	}
	
	if(err && !alertEverySingleError && !suppressAlerts) {
 	 	alert("Ricontrollare i campi evidenziati");
	}
	return !err;
}
*/

function setCSSClass(component, className) {
	if(component) {
			component.className= className;
	}
}

function restoreOriginalClassName(component) {
	if(component && component.originalClassName) {
				component.className=component.originalClassName;
	}
}

function backupOriginalClassName(component) {
	if(component) {
		component.originalClassName=component.className;
	}
}


	 	 
var submitting= false;
function validateAndSave(dontSaveFlag) {
	if(!submitting) {
		var f= $(getDataFormName());
		if(f.beforeSubmit) {
			f.beforeSubmit();
		}
		if(isFormValid(validations)) {
			normalizeFormFields(validations);
			if(!dontSaveFlag) {
				submitting= true;
				f.submit();
			}
		}
	}
	return false;
}


function openHtmlEditor(idx,toolBar,useBR) {
	var w=550;
	var h=450;
	var t=(screen.height-h)/2;
	var l=(screen.width-w)/2;
	
	var opts=  "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,"
	    	 + "width="+w
	    	 +",height="+h
	    	 +",top="+t
	    	 +",left="+l
			;
    var ret=window.open(
	    	"/admin/FCKEditor/editornew.html?formName=itemForm&fieldName="+idx+"&toolBar="+toolBar+"&useBR="+useBR,
	    	 "_blank",
	    	 opts
    	);
    ret.focus();
}



function createCookie(name,value,days, hours, minutes, seconds) {
	var deltaT  = (days? days*86400: 0)
				+ (hours? hours*3600: 0)
				+ (minutes? minutes*60: 0)
				+ (seconds? seconds: 0)
				;
	
	var expires = "";
	if (deltaT>0) {
		var date = new Date();
		date.setTime(date.getTime()+deltaT*1000);
		expires = "; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getSelectedNodesId() {
	var namePrefix= 'select_';
	var tmp=document.getElementsByTagName("input");
	var ids= new Array();
	for(var i=0; tmp && i<tmp.length; ++i) {
		var n= tmp[i].name;
		if(n && n.indexOf(namePrefix)==0 && tmp[i].checked) {
			ids.push(n.substring(namePrefix.length));
		}
	}
	return ids;
}

var NODE_LIST_COOKIE_NAME= 'NODELIST';


function getSelectedNodesAsStringList(separator) {
	var n= getSelectedNodesId();
	var x= "";
	var sep="";
	for(var i=0; n && i<n.length; ++i) {
		x+=sep+n[i];
		sep=separator;
	}
	return x;
}
function markSelectedNodesForCopy() {
	var x= getSelectedNodesAsStringList("_");
	createCookie(NODE_LIST_COOKIE_NAME,x,1, 0, 0, 0);
	var b= $("pasteButton");
	if(b) {
		b.className= x.length>0? "actionbutton": "actionbuttonDisabled";
	}
}

function pasteSelectedNodes(catalogName, folderId, parentId, listId) {
	var n= readCookie(NODE_LIST_COOKIE_NAME);
	if(n && n.length>0 && confirm("Confermi la copia degli elementi selezionati in precedenza in questa cartella?")) {
		var d= $("pastenodesform");
		if(d) {
			d.catalogName.value= catalogName;
			d.destFolderId.value= folderId;
			d.nodeIds.value= n;
			d.parentId.value= parentId;
			d.listId.value= listId;
			
			d.submit();
		}
		return false;
	}
}
	
function deleteSelectedNodes() {
	var n= getSelectedNodesAsStringList("_");
	var msg= "ATTENZIONE: la cancellazione e' DEFINITIVA!!!"
			 + "\ni dati cancellati NON SONO IN ALCUN MODO RECUPERABILI"
			 + "\n\nCancellando una o piu' cartelle, TUTTI gli elementi in esse contenuti"
			 + "verranno DISTRUTTI senza possibilita' di recupero."
			 +"\n\nConscio di tutto questo, confermi la cancellazione degli elementi selezionati?"
			 ;
	if(n && n.length>0 && confirm(msg)) {
		var d= $("deletenodesform");
		if(d) {
			d.nodeIds.value= n;
			d.submit();
		}
		return false;
	}
}


function setSelections(status) {
	var namePrefix= 'select_';
	var tmp=document.getElementsByTagName("input");
	var ids= new Array();
	for(var i=0; tmp && i<tmp.length; ++i) {
		var n= tmp[i].name;
		if(n && n.indexOf(namePrefix)==0) { 
			tmp[i].checked= status;
		}
	}
}

function toggleSelections() {
	var namePrefix= 'select_';
	var tmp=document.getElementsByTagName("input");
	var ids= new Array();
	for(var i=0; tmp && i<tmp.length; ++i) {
		var n= tmp[i].name;
		if(n && n.indexOf(namePrefix)==0) { 
			tmp[i].checked= !tmp[i].checked;
		}
	}
}

function indexOf(a,v) {
	if(a && v && a.length>0) {
		for(var i=0; i<a.length; ++i) {
			if(v==a[i]) {
				return i;
			}
		}
	}
	return -1;
}

function showSelectedNodes() {
	var n= readCookie(NODE_LIST_COOKIE_NAME);
	var namePrefix= 'select_';
	var tmp=document.getElementsByTagName("input");
	if(n && n.length>0) {
		var s= n.split('_');
		for(var i=0; tmp && i<tmp.length; ++i) {
			var n= tmp[i].name;
			if(n && n.indexOf(namePrefix)==0) {
				var id=n.substring(namePrefix.length)
				if(indexOf(s,id)>=0) {
					tmp[i].checked= true;
				}
			}
		}
	}
}


var pageParamRegexp1=(/[?]p=[0-9]+/g);
var pageParamRegexp2=(/[&]p=[0-9]+/g);

function pager(s, isCurrent) {
	if(isCurrent && eval(isCurrent)) {
		return false;
	}
	
	var p= parseInt(s,10);
	var l= window.location.href;
	var connector= "?";
	if(l.indexOf('?') >0) {
		connector= "&";
	} 
	if(p) {
		if(l.match(pageParamRegexp1)) {
			l= l.replace(pageParamRegexp1,"?p="+p);
		} else if(l.match(pageParamRegexp2)) {
			l= l.replace(pageParamRegexp2,"&p="+p);
		} else {
			l= l + connector + "p="+p;
		}
		
		// alert("goto page " + s + " " + l);
		window.location= l
	} else {
		var  tmp= trim(s);
		if(tmp) {
			tmp= tmp.toLowerCase();
		}
		
		if	(
		   'first'==tmp
		   || 'previous'==tmp
		   || 'next'==tmp
		   || 'last'==tmp
		   ) {
			alert("cambio pagina " + s);
		} else {
			alert("errore in pager(), il parametro dovrebbe essere uno tra first ,previous ,next ,last invece di " + s);
		}
	}
}


//=================== CHECK PER FORM CONTATTI
function check(type, target) {
	var t= $(target);
	var invalid= false;
	if('mandatory'==type) {
		invalid= t.value.blank();
	}
	if('email'==type) {
		invalid= t.value.blank() || !checkEMailAddress(t.value);
	}
	
	if(invalid) {
		t.addClassName('invalidField');
	} else {
		t.removeClassName('invalidField');
	}
	return !invalid;	
}

function checkEMailAddress(addr){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(addr);
}

var submitting= false;


function checkForm(formName) {

	if(submitting) {
		return false;
	}
	
	var f= $(formName);
	var mandFields= f.getElementsByClassName('mandatory');
	var error= false;
	
	$A(mandFields).each(
		function (x) {
			error |= !check('mandatory', x);
		} 
	);
	
	
	if( error ) {
		alert("Compilare i campi obbligatori");
		return false;
	}


	var emailFields= f.getElementsByClassName('emailAddressField');
	error= false;
	
	$A(emailFields).each(
		function (x) {
			error |= !check('email', x);
		} 
	);

	
	if(error) {
		alert("Inserire un indirizzo email valido");
		return false;
	}
	
	if ( ! f.privacy.checked ) {
		alert("Per procedere è necessario acconsentire\nal trattamento dei dati personali");
		return false;
	}
	
	submitting= true;
	f.submitbutton.onclick=" return false;"
	f.submit();
	return true;
}

