/* New Window Script */

var newWindow = null;
var targetMapId = new Array('mapArea1','mapArea2','mapArea3','mapArea4','mapArea5','mapArea6','mapArea7','mapArea8','mapArea9','mapArea10');
var allZonesSelected = null;
var allEventsSelected = null;

/*27/jan/2006, mv to replace onload=".."
window.onload = function();
*/

function quoteReplace(psString)
	{
		var lsRegExp = /'/g;
		return String(psString).replace(lsRegExp, "&rsquo;");
	}

	function CharReplace(psString)
	{


		var result = String(psString).replace(/\u0026/g, "&amp;");
		result = result.replace(/\u2026/g, "&hellip;");
		result = result.replace(/\u2019/g, "'");
		result = result.replace(/\u2013/g, "-");
		result = result.replace(/\u20ac/g, "&euro;");
		result = result.replace(/\u0022/g, "&quot;");
		result = result.replace(/\u201a/g, "&sbquo;");
		result = result.replace(/\u0192/g, "&fnof;");
		result = result.replace(/\u201e/g, "&bdquo;");
		result = result.replace(/\u02c6/g, "&circ;");
		result = result.replace(/\u2030/g, "&permil;");
		result = result.replace(/\u0160/g, "&Scaron;");
		result = result.replace(/\u2039/g, "&lsaquo;");
		result = result.replace(/\u0152/g, "&OElig;");

		result = result.replace(/‘/g, "&lsquo;");
		result = result.replace(/“/g, "&lsquo;");
		result = result.replace(/”/g, "&rsquo;");
		result = result.replace(/à/g, "&agrave;");
		result = result.replace(/è/g, "&egrave;");
		result = result.replace(/ù/g, "&ugrave;");
		result = result.replace(/ì/g, "&igrave;");
		result = result.replace(/ò/g, "&ograve;");
		result = result.replace(/é/g, "&eacute;");
		result = result.replace(/ç/g, "&ccedil;");
		result = result.replace(/E'/g, "&Egrave;");
		result = result.replace(/<br>/g, "<br />");
		result = result.replace(/<BR>/g, "<br />");
		result = result.replace(/B>/g, "b>");

		return result;
	}


/* Funtion to open a new window */
function openWindow(contentURL, windowName, windowWidth, windowHeight){
	widthHeight = 'height=' + windowHeight +', width=' + windowWidth;
	newWindow = window.open(contentURL, windowName, widthHeight);
	newWindow.focus()
}

/* encode Email script */
function hideEmail(domain,email,linkText,linkTitle){
   document.write("<a href=\"mailto");
   document.write(":" + email + "@");
   document.write(domain + "\" title=\""+linkTitle+"\">"+linkText+"<\/a>");
}

/* Function to toggle any css class */
function toggleLayer(targetIdArray,cssStyle){
	if (document.getElementById){
		for(i =0;i<targetIdArray.length;i++){
			target = document.getElementById(targetIdArray[i]);
			if (target.className != cssStyle) target.className = cssStyle;
		}
	}
}

/* Function to set the status of the map when the page loads */
function initPage(id){
	if(id == undefined){
		id =0;
	}
	allZonesSelected = id;
	if (allZonesSelected){
		toggleAllZones(1);
	}
}

/* Function to toggle zones
	status 0 = hide, 1 = show */
function toggleZone(id,status){
	var statusCss = new Array ('hide','show');
	var target;
		//if not part of the map, e.g. outside, than use it as id
	if (id == "isOutside")
	{
		target = document.getElementById("mapAreaOutside");
	}
	else
		target = document.getElementById(targetMapId[id]);
	/* If understands W3C DOM */
	if (document.getElementById){
		/* Set the css status of the map */
		target.className = statusCss[status];
		
		/*
		if(status)	showZone(id);
		else hideZone(id);
		*/
	}
}


/* Function to show one map zone */
/*
function showZone(id){
	// If understands W3C DOM 
	if (document.getElementById){
		// Id of map 
		target = document.getElementById(targetMapId[id]);
		target.className = "show";
	}
}

// Function to hide one map zone
function hideZone(id){
	// If understands W3C DOM
	if (document.getElementById){
		// Id of map 
		target = document.getElementById(targetMapId[id]);
		target.className = "hide";
	}
}
*/

/* Function to toggle all map zones */
function toggleAllZones(status){
	status = (status)?1:0;
	for(i =0;i<targetMapId.length;i++) 
		toggleZone(i,status);	
	toggleZone("isOutside", status);
}

/*	fuiro citta - outside city */
function selectOutside(id)
{
	//var elem = document.getElementById(id);
		
	toggleAllZones(0);
	allZonesSelected = 0;
}

/* Function to check form checkboxes */
function selectAllZones(formName,fieldName,selectAllName) {
	
	
	if(!selectAllName.checked)
	{
		selectAllName.checked = 1;
		return;
	}
	
	allZonesSelected = selectAllName.checked;

	/* Set fields to name of form */
	fields = document.forms[formName];
	/* Loop through all elements form and set checked status */
	for(i = 0; i < fields.length; i++){
		if(fields[i].name == fieldName){
			fields[i].checked = false;
		}
	}

	//selectAllName.disabled = true;
	toggleAllZones(selectAllName.checked);
	if(fieldName=='zones[]') 
		document.forms[formName].isCentre.checked = false;

}


function selectCentre(formName,checkAll,oneField){

	//target = document.formName[checkAll];
	if(allZonesSelected){
		toggleAllZones(0);
		allZonesSelected = 0;
	}

	var status = (oneField.checked)?1:0;
	toggleZone(9,status); 
	
	checkSelectedZones(formName,checkAll);
}

/* Function to uncheck form checkboxes */
function selectZone(formName,checkAll,oneField,mapId){
	
	if(allZonesSelected){
		toggleAllZones(0);
		allZonesSelected = 0;
	}
		
	fields = document.forms[formName];
	
	/* Toggle the css of the map */	
	var status = (oneField.checked)?1:0;
	toggleZone(mapId,status); 
	
	/* Toggle the checked status of the checkAll checkbox */	
	/*
	if(oneField.checked && document.forms[formName][checkAll].checked){
		//document.forms[formName][checkAll].disabled = false;
		document.forms[formName][checkAll].checked = false;
	}
	*/
	checkSelectedZones(formName,checkAll);
}



function unCheckBox(checkBoxId)
{
	document.getElementById(checkBoxId).checked = false;
}

function checkBox(checkBoxId)
{
	document.getElementById(checkBoxId).checked = true;
}

function togglebox(checkBoxId)
{
	
	if (document.getElementById(checkBoxId).checked)
		unCheckBox(checkBoxId);
	else
		checkBox(checkBoxId);
}

function checkSelectedZones(formName,checkBox){
	var numFields = 0;
	var numUnChecked = 0;
	fields = document.forms[formName]['zones[]'];
		/* Loop through all fields and set checked status */
	for(i = 0; i < fields.length; i++){
		//if(fields[i].name == oneField.name){
			numFields++;
			if(!fields[i].checked) 
				numUnChecked++;
		//}
	}
	numFields++;
	if(document.forms[formName]['isCentre'].checked){
		//numChecked--;
	}
	else {
		numUnChecked++;
	}
	
	if(numUnChecked == numFields) {
		
		document.forms[formName][checkBox].checked = true;
		//document.forms[formName][checkBox].disabled = true;
		allZonesSelected = 1;
		toggleAllZones(1);
		
	}	else {
		allZonesSelected = 0;
		document.forms[formName][checkBox].checked = false;	
	}
}

/*
	05/jan/2006, mv: selection function(s) for paths
	selectAllName provided with 'this' is redundant
*/
function selectAllKeyAreas(formName,fieldName,selectAllName) {
	
		//cannot uncheck "All" box
	if(!selectAllName.checked) {
		selectAllName.checked = true;
		return;
	}
		//same details as selectAll{Events,Places...}()
	switch(fieldName)
	{
		case 'eventType[]':
			allEventsSelected = 1;
			break;
		case 'placeType[]':
			allPlacesSelected = 1;	
			break;
		case 'pathType[]':
			allPathsSelected = 1;
			break;
		default:
			alert("i dont know which things are to be re-selected...");
	}
		/* Set fields to name of form */
	fields = document.forms[formName];
		/* Loop through all elements form and set checked status */
	for(i = 0; i < fields.length; i++) {
			if(fields[i].name == fieldName) {
				fields[i].checked = false;
			}
	}
}

/*	function unslelects that 'tutto' box
	
	to check: if numEventFields are used somewhere outside
*/

function selectSingleArea(formName,checkAll,oneField){
	var numKeyAreaFields = 0;
	var numKeyAreaUnChecked = 0;
	var numKeyAreaChecked = 0;
	
	//document.forms[formName][checkAll].checked = true;
	
	fields = document.forms[formName];
	
		/* Toggle the checked status of the checkAll-totti checkbox */	
	if(oneField.checked && document.forms[formName][checkAll].checked) 	{
		document.forms[formName][checkAll].checked = false;
	}
	
	/* Loop through all fields and set checked status */
	for(i =0; i < fields.length; i++) {
				/*	if the name is of the current element, (a set of checkboxes are!)
						increase the checkbox count...
						if the item is checked, increase checked count!
				*/
		if(fields[i].name == oneField.name){
					
			numKeyAreaFields++;
			if(!fields[i].checked)
				numKeyAreaUnChecked++;
			else
				numKeyAreaChecked++;
		}
	}
	
	
	
	if(numKeyAreaChecked == numKeyAreaFields){
		document.forms[formName][checkAll].checked = true;
		/* 05/01/2005, mv: also uncheck the other boxes, of the items with the same name
		*/
		for(i =0;i<fields.length;i++)
		{
			if(fields[i].name == oneField.name)
			{					
				fields[i].checked = false;
			}
		}
	}
	
	if (numKeyAreaChecked == 0)
	{
		document.forms[formName][checkAll].checked = true;
	}
}


/*
	05/jan/2006, mv:
	retired functions, no need for them any more. :(

function selectAllPlaces(formName,fieldName,selectAllName){
	
	allPlacesSelected = 1;
	fields = document.forms[formName];
	for(i =0;i<fields.length;i++){
		if(fields[i].name == fieldName){
			fields[i].checked = false;
		}
	}
}

function selectAllEvents(formName,fieldName,selectAllName){
	

	fields = document.forms[formName];
	
	for(i =0;i<fields.length;i++){
		if(fields[i].name == fieldName){
			fields[i].checked = false;
		}
	}
}
		...those replaced by selectAllKeyAreas
-------------------------------------
		this function is reduntant too...
		one function is now used, numEventsFields replaced by  numKeyAreaFields
function selectPlace(formName,checkAll,oneField){
	var numEventsFields = 0;
	var numEventsUnChecked = 0;
	
	fields = document.forms[formName];
	

	if(oneField.checked && document.forms[formName][checkAll].checked){
		//document.forms[formName][checkAll].disabled = false;
		document.forms[formName][checkAll].checked = false;
	}

	for(i =0;i<fields.length;i++){
		if(fields[i].name == oneField.name){
			numEventsFields++;
			if(!fields[i].checked) numEventsUnChecked++;
		}
	}
	if(numEventsUnChecked == numEventsFields){
		document.forms[formName][checkAll].checked = true;
		//document.forms[formName][checkAll].disabled = true;
	}
}
*/

function switchPage(offset,searchString) {
	location.href='?offset=' + offset + "&" + searchString;
	/*
	
	switch(action){
		case 'search':
			//alert("search action");
			alert("search action, formName is " + formName + ". offset is " + offset + ". id is not needed but it is " + id + ".");
			document.forms[formName].offset.value=offset;
			document.forms[formName].submit();
			break;
		case 'place':
			location.href='?offset='+offset;
			break;
		case 'features':
			location.href='?action=features&featureId='+id+'&offset='+offset;
			break;
	}
	*/
}

function switchEvent(id) {
	if (id)
		location.href = '?id=' + id;
	else 
		//alert("selezionare un opzione per favore")
		;
}

	/*	manual submit for javascript */
function submitForm()
{
		//submit the first form
	document.forms[0].submit();
}


function toggleDiv(id, id2)
{
	var elm, emlLink;
	
	elm = document.getElementById(id);
	if (elm.className == "hidden")
	{
			//open the article
		elm.className = "";
			//give close options
		elmLink = document.getElementById("topLink");
		elmLink.className = "closeLink";
		elmLink.innerHTML = "Chiudi";
	} else {
		elm.className = "hidden";
		elmLink = document.getElementById("topLink");
		elmLink.className = "showLink";
		elmLink.innerHTML = "Leggi";
	}
}
