function openWindowScroll(url, width, height) {
	var left = (screen.width/2) - width/2;
	var top = (screen.height/2) - height/2;
	var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;
	var msgWindow = window.open(url,'openWindowScroll', styleStr);
}

function openWindowNoScroll(url, width, height) {
	if (width == '100%') {
		var left = 0;
		var width = screen.width;
	} else {
		var left = (screen.width/2) - width/2;
	}
	if (height == '100%') {
		var top = 0;
		var height = screen.height;
	} else {
		var top = (screen.height/2) - height/2;
	}
	var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;
	var msgWindow = window.open(url,'openWindowNoScroll', styleStr);
}

function emailCheck(emailStr) {
	var checkTLD = 1;
	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + specialChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) {
		// alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];
	for (i=0; i < user.length; i++) {
		if (user.charCodeAt(i) > 127) {
			// alert("Ths username contains invalid characters.");
			return false;
   		}
	}
	for (i=0; i < domain.length; i++) {
		if (domain.charCodeAt(i) > 127) {
			// alert("Ths domain name contains invalid characters.");
			return false;
		}
	}
	if (user.match(userPat) == null) {
		// alert("The username doesn't seem to be valid.");
		return false;
	}
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {
		for (var i=1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				// alert("Destination IP address is invalid!");
				return false;
		   }
		}
		return true;
	}
	var atomPat = new RegExp("^" + atom + "$");
	var domArr = domain.split(".");
	var len = domArr.length;
	for (i = 0; i < len; i++) {
		if (domArr[i].search(atomPat) == -1) {
			// alert("The domain name does not seem to be valid.");
			return false;
	   }
	}
	/*
	if (checkTLD && domArr[domArr.length-1].length != 2 && domArr[domArr.length-1].search(knownDomsPat) == -1) {
		// alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}
	*/
	if (len < 2) {
		// alert("This address is missing a hostname!");
		return false;
	}
	return true;
}

function getProvincie() {
	var provincie = new Array();
	provincie["AG"] = "Sicilia";
	provincie["AL"] = "Piemonte";
	provincie["AN"] = "Marche";
	provincie["AO"] = "Valle d&#039;Aosta";
	provincie["AR"] = "Toscana";
	provincie["AP"] = "Marche";
	provincie["AT"] = "Piemonte";
	provincie["AV"] = "Campania";
	provincie["BA"] = "Puglia";
	provincie["BL"] = "Veneto";
	provincie["BN"] = "Campania";
	provincie["BG"] = "Lombardia";
	provincie["BI"] = "Piemonte";
	provincie["BO"] = "Emilia Romagna";
	provincie["BZ"] = "Trentino Alto Adige";
	provincie["BS"] = "Lombardia";
	provincie["BR"] = "Puglia";
	provincie["CA"] = "Sardegna";
	provincie["CL"] = "Sicilia";
	provincie["CB"] = "Molise";
	provincie["CE"] = "Campania";
	provincie["CT"] = "Sicilia";
	provincie["CZ"] = "Calabria";
	provincie["CH"] = "Abruzzo";
	provincie["CO"] = "Lombardia";
	provincie["CS"] = "Calabria";
	provincie["CR"] = "Lombardia";
	provincie["KR"] = "Calabria";
	provincie["CN"] = "Piemonte";
	provincie["EN"] = "Sicilia";
	provincie["FE"] = "Emilia Romagna";
	provincie["FI"] = "Toscana";
	provincie["FG"] = "Puglia";
	provincie["FO"] = "Emilia Romagna";
	provincie["FR"] = "Lazio";
	provincie["GE"] = "Liguria";
	provincie["GO"] = "Friuli Venezia Giulia";
	provincie["GR"] = "Toscana";
	provincie["IM"] = "Liguria";
	provincie["IS"] = "Molise";
	provincie["AQ"] = "Abruzzo";
	provincie["SP"] = "Liguria";
	provincie["LT"] = "Lazio";
	provincie["LE"] = "Puglia";
	provincie["LC"] = "Lombardia";
	provincie["LI"] = "Toscana";
	provincie["LO"] = "Lombardia";
	provincie["LU"] = "Toscana";
	provincie["MC"] = "Marche";
	provincie["MN"] = "Lombardia";
	provincie["MS"] = "Toscana";
	provincie["MT"] = "Basilicata";
	provincie["ME"] = "Sicilia";
	provincie["MI"] = "Lombardia";
	provincie["MO"] = "Emilia Romagna";
	provincie["NA"] = "Campania";
	provincie["NO"] = "Piemonte";
	provincie["NU"] = "Sardegna";
	provincie["OR"] = "Sardegna";
	provincie["PD"] = "Veneto";
	provincie["PA"] = "Sicilia";
	provincie["PR"] = "Emilia Romagna";
	provincie["PV"] = "Lombardia";
	provincie["PG"] = "Umbria";
	provincie["PS"] = "Marche";
	provincie["PE"] = "Abruzzo";
	provincie["PC"] = "Emilia Romagna";
	provincie["PI"] = "Toscana";
	provincie["PT"] = "Toscana";
	provincie["PN"] = "Friuli Venezia Giulia";
	provincie["PZ"] = "Basilicata";
	provincie["PO"] = "Toscana";
	provincie["RG"] = "Sicilia";
	provincie["RA"] = "Emilia Romagna";
	provincie["RC"] = "Calabria";
	provincie["RE"] = "Emilia Romagna";
	provincie["RI"] = "Lazio";
	provincie["RN"] = "Emilia Romagna";
	provincie["RM"] = "Lazio";
	provincie["RO"] = "Veneto";
	provincie["SA"] = "Campania";
	provincie["SS"] = "Sardegna";
	provincie["SV"] = "Liguria";
	provincie["SI"] = "Toscana";
	provincie["SR"] = "Sicilia";
	provincie["SO"] = "Lombardia";
	provincie["TA"] = "Puglia";
	provincie["TE"] = "Abruzzo";
	provincie["TR"] = "Umbria";
	provincie["TO"] = "Piemonte";
	provincie["TP"] = "Sicilia";
	provincie["TN"] = "Trentino Alto Adige";
	provincie["TV"] = "Veneto";
	provincie["TS"] = "Friuli Venezia Giulia";
	provincie["UD"] = "Friuli Venezia Giulia";
	provincie["VA"] = "Lombardia";
	provincie["VE"] = "Veneto";
	provincie["VB"] = "Piemonte";
	provincie["VC"] = "Piemonte";
	provincie["VR"] = "Veneto";
	provincie["VV"] = "Calabria";
	provincie["VI"] = "Veneto";
	provincie["VT"] = "Lazio";
	return provincie;
}

function getRegioneByProvincia(provincia) {
	switch(provincia) {
		case "AG": return "Sicilia"; break;
		case "AL": return "Piemonte"; break;
		case "AN": return "Marche"; break;
		case "AO": return "Valle d&#039;Aosta"; break;
		case "AR": return "Toscana"; break;
		case "AP": return "Marche"; break;
		case "AT": return "Piemonte"; break;
		case "AV": return "Campania"; break;
		case "BA": return "Puglia"; break;
		case "BL": return "Veneto"; break;
		case "BN": return "Campania"; break;
		case "BG": return "Lombardia"; break;
		case "BI": return "Piemonte"; break;
		case "BO": return "Emilia Romagna"; break;
		case "BZ": return "Trentino Alto Adige"; break;
		case "BS": return "Lombardia"; break;
		case "BR": return "Puglia"; break;
		case "CA": return "Sardegna"; break;
		case "CL": return "Sicilia"; break;
		case "CB": return "Molise"; break;
		case "CE": return "Campania"; break;
		case "CT": return "Sicilia"; break;
		case "CZ": return "Calabria"; break;
		case "CH": return "Abruzzo"; break;
		case "CO": return "Lombardia"; break;
		case "CS": return "Calabria"; break;
		case "CR": return "Lombardia"; break;
		case "KR": return "Calabria"; break;
		case "CN": return "Piemonte"; break;
		case "EN": return "Sicilia"; break;
		case "FE": return "Emilia Romagna"; break;
		case "FI": return "Toscana"; break;
		case "FG": return "Puglia"; break;
		case "FO": return "Emilia Romagna"; break;
		case "FR": return "Lazio"; break;
		case "GE": return "Liguria"; break;
		case "GO": return "Friuli Venezia Giulia"; break;
		case "GR": return "Toscana"; break;
		case "IM": return "Liguria"; break;
		case "IS": return "Molise"; break;
		case "AQ": return "Abruzzo"; break;
		case "SP": return "Liguria"; break;
		case "LT": return "Lazio"; break;
		case "LE": return "Puglia"; break;
		case "LC": return "Lombardia"; break;
		case "LI": return "Toscana"; break;
		case "LO": return "Lombardia"; break;
		case "LU": return "Toscana"; break;
		case "MC": return "Marche"; break;
		case "MN": return "Lombardia"; break;
		case "MS": return "Toscana"; break;
		case "MT": return "Basilicata"; break;
		case "ME": return "Sicilia"; break;
		case "MI": return "Lombardia"; break;
		case "MO": return "Emilia Romagna"; break;
		case "NA": return "Campania"; break;
		case "NO": return "Piemonte"; break;
		case "NU": return "Sardegna"; break;
		case "OR": return "Sardegna"; break;
		case "PD": return "Veneto"; break;
		case "PA": return "Sicilia"; break;
		case "PR": return "Emilia Romagna"; break;
		case "PV": return "Lombardia"; break;
		case "PG": return "Umbria"; break;
		case "PS": return "Marche"; break;
		case "PE": return "Abruzzo"; break;
		case "PC": return "Emilia Romagna"; break;
		case "PI": return "Toscana"; break;
		case "PT": return "Toscana"; break;
		case "PN": return "Friuli Venezia Giulia"; break;
		case "PZ": return "Basilicata"; break;
		case "PO": return "Toscana"; break;
		case "RG": return "Sicilia"; break;
		case "RA": return "Emilia Romagna"; break;
		case "RC": return "Calabria"; break;
		case "RE": return "Emilia Romagna"; break;
		case "RI": return "Lazio"; break;
		case "RN": return "Emilia Romagna"; break;
		case "RM": return "Lazio"; break;
		case "RO": return "Veneto"; break;
		case "SA": return "Campania"; break;
		case "SS": return "Sardegna"; break;
		case "SV": return "Liguria"; break;
		case "SI": return "Toscana"; break;
		case "SR": return "Sicilia"; break;
		case "SO": return "Lombardia"; break;
		case "TA": return "Puglia"; break;
		case "TE": return "Abruzzo"; break;
		case "TR": return "Umbria"; break;
		case "TO": return "Piemonte"; break;
		case "TP": return "Sicilia"; break;
		case "TN": return "Trentino Alto Adige"; break;
		case "TV": return "Veneto"; break;
		case "TS": return "Friuli Venezia Giulia"; break;
		case "UD": return "Friuli Venezia Giulia"; break;
		case "VA": return "Lombardia"; break;
		case "VE": return "Veneto"; break;
		case "VB": return "Piemonte"; break;
		case "VC": return "Piemonte"; break;
		case "VR": return "Veneto"; break;
		case "VV": return "Calabria"; break;
		case "VI": return "Veneto"; break;
		case "VT": return "Lazio"; break;
	}
}

function resetDate(text, view) {
	document.getElementById(text).value = '0000-00-00';
	document.getElementById(view).value = '00-00-0000';
}

function ConfirmDelete(CancelURL) {
	var string = 'ATTENZIONE: Sei sicuro di voler eliminare la voce selezionata?';
	if (confirm(string)) {
		document.location.href = CancelURL;
	}
}

function printBox(content) {
	var width="600", height="400";
	var left = (screen.width/2) - width/2;
	var top = (screen.height/2) - height/2;
	var header = '<html><head><title>printBox</title></head><body style="margin: 0px"><textarea style="width: 100%; height: 100%; font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666666; line-height: 14px; text-decoration: none;">';
	var footer = '</textarea></body></html>';
	var data = header + content + footer;
	var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;
	var ident_window = window.open('', 'ident_window', styleStr);
	//ident_window.resizeBy(-100,-100);
	ident_window.status = "";
	ident_window.blur();
	window.focus();
	ident_window.document.open();
	ident_window.document.write(data);
	ident_window.document.close();
}

function resetImage(field) {
	document.getElementById(field).value = '';
	if (document.getElementById('placeholder_'+field)) {
		document.getElementById('placeholder_'+field).src = '/modules/image.php?url=&width=30&height=30';
	}
}

function treeView(id, imagepath) {
	if (document.getElementById('icon_'+id).src == imagepath+'status_green_plus.gif') {
		document.getElementById('icon_'+id).src = imagepath+'status_green_minus.gif';
		document.getElementById('item_'+id).style.display = 'block';
	} else if (document.getElementById('icon_'+id).src == imagepath+'status_red_plus.gif') {
		document.getElementById('icon_'+id).src = imagepath+'status_red_minus.gif';
		document.getElementById('item_'+id).style.display = 'block';
	} else if (document.getElementById('icon_'+id).src == imagepath+'status_green_minus.gif') {
		document.getElementById('icon_'+id).src = imagepath+'status_green_plus.gif';
		document.getElementById('item_'+id).style.display = 'none';
	} else if (document.getElementById('icon_'+id).src == imagepath+'status_red_minus.gif') {
		document.getElementById('icon_'+id).src = imagepath+'status_red_plus.gif';
		document.getElementById('item_'+id).style.display = 'none';
	} 
}

function treeOpen(id, tree, imagepath) {
	var currentTree = new Array();
	var selectedTree = new Array();
	currentTree = tree.split('-');
	for (var treeCounter = 0; treeCounter < currentTree.length; treeCounter++) {
		selectedTree[treeCounter] = '';
		for (var currentCycle = 0; currentCycle < (currentTree.length-treeCounter); currentCycle++) {
			if (currentCycle > 0) {
				selectedTree[treeCounter] += '-';
			}
			selectedTree[treeCounter] += currentTree[currentCycle];
		}
		if (selectedTree[treeCounter] != 0) {
			treeView(selectedTree[treeCounter], imagepath);
		}
	}
	setBold(id);
}

function treeExpand(imagepath, action) {
	var articleContainer = document.getElementById('cell_articles');
	var totalItems = articleContainer.getElementsByTagName('div');
	var selectedItems = new Array();
	var itemRealCounter = 0;
	for (var itemCounter = 0; itemCounter < totalItems.length; itemCounter++) {
		var currentName = totalItems[itemCounter].name;
		if (currentName) {
			if (currentName.search("item_counter") != -1) {
				selectedItems[itemRealCounter] = totalItems[itemCounter].id;
				currentTree = selectedItems[itemRealCounter].split('_');
				if (currentTree[1] != 0) {
					var id = currentTree[1];
					if (action == 'explode') {
						if (document.getElementById('icon_'+id).src == imagepath+'status_green_plus.gif') {
							document.getElementById('icon_'+id).src = imagepath+'status_green_minus.gif';
							document.getElementById('item_'+id).style.display = 'block';
						} else if (document.getElementById('icon_'+id).src == imagepath+'status_red_plus.gif') {
							document.getElementById('icon_'+id).src = imagepath+'status_red_minus.gif';
							document.getElementById('item_'+id).style.display = 'block';
						}
					} else if (action == 'implode') {
						if (document.getElementById('icon_'+id).src == imagepath+'status_green_minus.gif') {
							document.getElementById('icon_'+id).src = imagepath+'status_green_plus.gif';
							document.getElementById('item_'+id).style.display = 'none';
						} else if (document.getElementById('icon_'+id).src == imagepath+'status_red_minus.gif') {
							document.getElementById('icon_'+id).src = imagepath+'status_red_plus.gif';
							document.getElementById('item_'+id).style.display = 'none';
						}
					}
				}
				itemRealCounter++;
			}
		}
	}
	if (action == 'explode') {
		document.getElementById('explode').style.display = 'none';
		document.getElementById('implode').style.display = 'block';
	} else if (action == 'implode') {
		document.getElementById('explode').style.display = 'block';
		document.getElementById('implode').style.display = 'none';
	}
	//dump(selectedItems);
}

function setBold(obj) {
	var allDiv = document.getElementsByTagName('div');
	for (var divCounter = 0; divCounter < allDiv.length; divCounter++) {
		if (allDiv[divCounter].name) {
			if (allDiv[divCounter].id.match('article_')) {
				document.getElementById(allDiv[divCounter].id).style.fontWeight = 'normal';
			}
		}
	}
	document.getElementById('article_'+obj).style.fontWeight = 'bold';
	store_article(obj);
}

function dump(arr, level) {
	var dumped_text = "";
	if (!level) level = 0;
	var level_padding = "";
	for (var j=0; j<level+1; j++) level_padding += "    ";
	if (typeof(arr) == 'object') {
		for(var item in arr) {
			var value = arr[item];
			if(typeof(value) == 'object') {
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else {
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	//return dumped_text;
	alert(dumped_text);
	return true;
}

function showPage(page_number) {
	//for (var pageCounter = 1; document.getElementById('page_'+pageCounter); pageCounter++) {
	for (var pageCounter = 1; pageCounter <= 100; pageCounter++) {
		if (document.getElementById('page_'+pageCounter)) {
			document.getElementById('page_'+pageCounter).style.display = 'none';
		}
	}
	document.getElementById('page_'+page_number).style.display = 'block';
}

function parseURL(buffer) {
  var result = { };
  result.protocol = "";
  result.user = "";
  result.password = "";
  result.host = "";
  result.port = "";
  result.path = "";
  result.query = "";

  var section = "PROTOCOL";
  var start = 0;
  var wasSlash = false;

  while(start < buffer.length) {
    if(section == "PROTOCOL") {
      if(buffer.charAt(start) == ':') {
        section = "AFTER_PROTOCOL";
        start++;
      } else if(buffer.charAt(start) == '/' && result.protocol.length() == 0) { 
        section = PATH;
      } else {
        result.protocol += buffer.charAt(start++);
      }
    } else if(section == "AFTER_PROTOCOL") {
      if(buffer.charAt(start) == '/') {
    if(!wasSlash) {
          wasSlash = true;
    } else {
          wasSlash = false;
          section = "USER";
    }
        start ++;
      } else {
        throw new ParseException("Protocol shell be separated with 2 slashes");
      }       
    } else if(section == "USER") {
      if(buffer.charAt(start) == '/') {
        result.host = result.user;
        result.user = "";
        section = "PATH";
      } else if(buffer.charAt(start) == '?') {
        result.host = result.user;
        result.user = "";
        section = "QUERY";
        start++;
      } else if(buffer.charAt(start) == ':') {
        section = "PASSWORD";
        start++;
      } else if(buffer.charAt(start) == '@') {
        section = "HOST";
        start++;
      } else {
        result.user += buffer.charAt(start++);
      }
    } else if(section == "PASSWORD") {
      if(buffer.charAt(start) == '/') {
        result.host = result.user;
        result.port = result.password;
        result.user = "";
        result.password = "";
        section = "PATH";
      } else if(buffer.charAt(start) == '?') {
        result.host = result.user;
        result.port = result.password;
        result.user = "";
        result.password = "";
        section = "QUERY";
        start ++;
      } else if(buffer.charAt(start) == '@') {
        section = "HOST";
        start++;
      } else {
        result.password += buffer.charAt(start++);
      }
    } else if(section == "HOST") {
      if(buffer.charAt(start) == '/') {
        section = "PATH";
      } else if(buffer.charAt(start) == ':') {
        section = "PORT";
        start++;
      } else if(buffer.charAt(start) == '?') {
        section = "QUERY";
        start++;
      } else {
        result.host += buffer.charAt(start++);
      }
    } else if(section == "PORT") {
      if(buffer.charAt(start) = '/') {
        section = "PATH";
      } else if(buffer.charAt(start) == '?') {
        section = "QUERY";
        start++;
      } else {
        result.port += buffer.charAt(start++);
      }
    } else if(section == "PATH") {
      if(buffer.charAt(start) == '?') {
    section = "QUERY";
    start ++;
      } else {
    result.path += buffer.charAt(start++);
      }
    } else if(section == "QUERY") {
      result.query += buffer.charAt(start++);
    }
  }

  if(section == "PROTOCOL") {
    result.host = result.protocol;
    result.protocol = "http";
  } else if(section == "AFTER_PROTOCOL") {
    throw new ParseException("Invalid url");
  } else if(section == "USER") {
    result.host = result.user;
    result.user = "";
  } else if(section == "PASSWORD") {
    result.host = result.user;
    result.port = result.password;
    result.user = "";
    result.password = "";
  }

  return result;
}

function ParseException(description) {
    this.description = description;
}
