var caution = false
function setCookie(name, value, expires, path, domain, secure) {
        var curCookie = name + "=" + escape(value) +
                ((expires) ? "; expires=" + expires.toGMTString() : "") +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                ((secure) ? "; secure" : "")
        if (!caution || (name + "=" + escape(value)).length <= 4000)
                document.cookie = curCookie
        else
                if (confirm("Cookie exceeds 4KB and will be cut!"))
                        document.cookie = curCookie
}
function getCookie(name) {
        var prefix = name + "="
        var cookieStartIndex = document.cookie.indexOf(prefix)
        if (cookieStartIndex == -1)
                return null
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
        if (cookieEndIndex == -1)
                cookieEndIndex = document.cookie.length
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
function deleteCookie(name, path, domain) {
        if (getCookie(name)) {
                document.cookie = name + "=" + 
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT"
        }
}
function GetParameter(name){
	param= unescape(document.location.search.substring(1))
	var param = param.split("&")
	var ParamName= new Array()
	var ParamValue= new Array()
	for(i=0;i<param.length;i++){
		ParamName[i]=param[i].substring(0,param[i].indexOf("="))
		ParamValue[i]=param[i].substring(param[i].indexOf("=")+1)
	}
	var result=false
	for(i=0;i<ParamName.length;i++){
		if(ParamName[i]==name){
			result=true
			return ParamValue[i]
		}
	}
	if(!result)
		return null
}
function fixDate(date) {
        var base = new Date(0)
        var skew = base.getTime()
        if (skew > 0)
                date.setTime(date.getTime() - skew)
}
function item(parent, text, id, link, depth) {
        this.parent = parent 
        this.text = text 
        this.link = link
		this.id = id
        this.depth = depth 
}
function makeArray(length) {
        this.length = length 
}

function makeDatabase() {

acat1 = new makeArray(71)
acat1[0] = new item(false, 'Tutte le categorie', '', 'index.asp?view=ico&cat=', 0)
acat1[1] = new item(false, 'Da Classificare', '65', 'index.asp?view=ico&cat=65', 0)
acat1[2] = new item(true, 'Vegetali', '1', 'index.asp?view=ico&cat=1', 0)
acat1[3] = new item(true, 'Alghe', '2', 'index.asp?view=ico&cat=2', 1)
acat1[4] = new item(false, 'Alghe verdi', '4', 'index.asp?view=ico&cat=4', 2)
acat1[5] = new item(false, 'Alghe brune', '5', 'index.asp?view=ico&cat=5', 2)
acat1[6] = new item(false, 'Alghe rosse', '3', 'index.asp?view=ico&cat=3', 2)
acat1[7] = new item(false, 'Piante', '6', 'index.asp?view=ico&cat=6', 1)
acat1[8] = new item(false, 'Spugne', '7', 'index.asp?view=ico&cat=7', 0)
acat1[9] = new item(true, 'Celenterati', '8', 'index.asp?view=ico&cat=8', 0)
acat1[10] = new item(false, 'Idrozoi', '9', 'index.asp?view=ico&cat=9', 1)
acat1[11] = new item(false, 'Meduse', '10', 'index.asp?view=ico&cat=10', 1)
acat1[12] = new item(false, 'Alcionari', '11', 'index.asp?view=ico&cat=11', 1)
acat1[13] = new item(false, 'Gorgonie e Coralli', '12', 'index.asp?view=ico&cat=12', 1)
acat1[14] = new item(false, 'Attinie', '13', 'index.asp?view=ico&cat=13', 1)
acat1[15] = new item(false, 'Madrepore', '14', 'index.asp?view=ico&cat=14', 1)
acat1[16] = new item(false, 'Cerianti', '15', 'index.asp?view=ico&cat=15', 1)
acat1[17] = new item(false, 'Ctenofori', '62', 'index.asp?view=ico&cat=62', 0)
acat1[18] = new item(true, 'Vermi', '16', 'index.asp?view=ico&cat=16', 0)
acat1[19] = new item(false, 'Vermi erranti', '17', 'index.asp?view=ico&cat=17', 1)
acat1[20] = new item(false, 'Vermi sedentari', '18', 'index.asp?view=ico&cat=18', 1)
acat1[21] = new item(true, 'Molluschi', '19', 'index.asp?view=ico&cat=19', 0)
acat1[22] = new item(false, 'Poliplacofori', '20', 'index.asp?view=ico&cat=20', 1)
acat1[23] = new item(false, 'Bivalvi', '21', 'index.asp?view=ico&cat=21', 1)
acat1[24] = new item(true, 'Gasteropodi', '22', 'index.asp?view=ico&cat=22', 1)
acat1[25] = new item(true, 'Opistobranchi', '69', 'index.asp?view=ico&cat=69', 2)
acat1[26] = new item(false, 'Sacoglossi', '71', 'index.asp?view=ico&cat=71', 3)
acat1[27] = new item(false, 'Nudibranchi', '23', 'index.asp?view=ico&cat=23', 3)
acat1[28] = new item(true, 'Cefalopodi', '24', 'index.asp?view=ico&cat=24', 1)
acat1[29] = new item(false, 'Polpi', '25', 'index.asp?view=ico&cat=25', 2)
acat1[30] = new item(false, 'Seppie', '26', 'index.asp?view=ico&cat=26', 2)
acat1[31] = new item(false, 'Calamari', '27', 'index.asp?view=ico&cat=27', 2)
acat1[32] = new item(true, 'Crostacei', '28', 'index.asp?view=ico&cat=28', 0)
acat1[33] = new item(false, 'Granchi', '29', 'index.asp?view=ico&cat=29', 1)
acat1[34] = new item(false, 'Cicale', '30', 'index.asp?view=ico&cat=30', 1)
acat1[35] = new item(false, 'Paguri', '31', 'index.asp?view=ico&cat=31', 1)
acat1[36] = new item(false, 'Ragni di mare', '73', 'index.asp?view=ico&cat=73', 1)
acat1[37] = new item(false, 'Aragoste e Astici', '32', 'index.asp?view=ico&cat=32', 1)
acat1[38] = new item(false, 'Gamberi', '33', 'index.asp?view=ico&cat=33', 1)
acat1[39] = new item(false, 'Cirripedi e Balani', '34', 'index.asp?view=ico&cat=34', 1)
acat1[40] = new item(false, 'Isopodi', '70', 'index.asp?view=ico&cat=70', 1)
acat1[41] = new item(false, 'Anfipodi', '72', 'index.asp?view=ico&cat=72', 1)
acat1[42] = new item(false, 'Misidiacei', '74', 'index.asp?view=ico&cat=74', 1)
acat1[43] = new item(false, 'Briozoi', '35', 'index.asp?view=ico&cat=35', 0)
acat1[44] = new item(false, 'Foronidei', '61', 'index.asp?view=ico&cat=61', 0)
acat1[45] = new item(true, 'Echinodermi', '36', 'index.asp?view=ico&cat=36', 0)
acat1[46] = new item(false, 'Crinoidi', '37', 'index.asp?view=ico&cat=37', 1)
acat1[47] = new item(false, 'Stelle marine', '38', 'index.asp?view=ico&cat=38', 1)
acat1[48] = new item(false, 'Ofiure', '39', 'index.asp?view=ico&cat=39', 1)
acat1[49] = new item(false, 'Ricci', '40', 'index.asp?view=ico&cat=40', 1)
acat1[50] = new item(false, 'Oloturie', '41', 'index.asp?view=ico&cat=41', 1)
acat1[51] = new item(true, 'Tunicati', '42', 'index.asp?view=ico&cat=42', 0)
acat1[52] = new item(false, 'Ascidie', '43', 'index.asp?view=ico&cat=43', 1)
acat1[53] = new item(false, 'Taliacei', '44', 'index.asp?view=ico&cat=44', 1)
acat1[54] = new item(true, 'Pesci', '45', 'index.asp?view=ico&cat=45', 0)
acat1[55] = new item(true, 'Pesci cartilaginei', '46', 'index.asp?view=ico&cat=46', 1)
acat1[56] = new item(false, 'Razze e Trigoni', '47', 'index.asp?view=ico&cat=47', 2)
acat1[57] = new item(false, 'Mante', '48', 'index.asp?view=ico&cat=48', 2)
acat1[58] = new item(false, 'Squali', '49', 'index.asp?view=ico&cat=49', 2)
acat1[59] = new item(false, 'Pesci ossei', '50', 'index.asp?view=ico&cat=50', 1)
acat1[60] = new item(true, 'Rettili', '51', 'index.asp?view=ico&cat=51', 0)
acat1[61] = new item(false, 'Serpenti', '52', 'index.asp?view=ico&cat=52', 1)
acat1[62] = new item(false, 'Tartarughe', '53', 'index.asp?view=ico&cat=53', 1)
acat1[63] = new item(true, 'Mammiferi', '54', 'index.asp?view=ico&cat=54', 0)
acat1[64] = new item(false, 'Sirenidi', '55', 'index.asp?view=ico&cat=55', 1)
acat1[65] = new item(true, 'Cetacei', '56', 'index.asp?view=ico&cat=56', 1)
acat1[66] = new item(true, 'Odontoceti', '57', 'index.asp?view=ico&cat=57', 2)
acat1[67] = new item(false, 'Delfini', '58', 'index.asp?view=ico&cat=58', 3)
acat1[68] = new item(false, 'Capodogli', '59', 'index.asp?view=ico&cat=59', 3)
acat1[69] = new item(false, 'Misticeti', '67', 'index.asp?view=ico&cat=67', 2)
acat1[70] = new item(false, 'Pinnipedi', '60', 'index.asp?view=ico&cat=60', 1)

CreaMenu("acat1")

asea1 = new makeArray(21)
asea1[0] = new item(false, 'Tutti i mari', '', 'index.asp?view=ico&sea=', 0)
asea1[1] = new item(true, 'Mar Mediterraneo', '1', 'index.asp?view=ico&sea=1', 0)
asea1[2] = new item(false, 'Mar Adriatico', '7', 'index.asp?view=ico&sea=7', 1)
asea1[3] = new item(false, 'Mar Ligure', '6', 'index.asp?view=ico&sea=6', 1)
asea1[4] = new item(false, 'Mar Tirreno', '8', 'index.asp?view=ico&sea=8', 1)
asea1[5] = new item(false, 'Mar Ionio', '12', 'index.asp?view=ico&sea=12', 1)
asea1[6] = new item(false, 'Mar Rosso', '2', 'index.asp?view=ico&sea=2', 0)
asea1[7] = new item(true, 'Oceano Atlantico', '4', 'index.asp?view=ico&sea=4', 0)
asea1[8] = new item(false, 'Mar Caraibico', '9', 'index.asp?view=ico&sea=9', 1)
asea1[9] = new item(true, 'Oceano Pacifico', '5', 'index.asp?view=ico&sea=5', 0)
asea1[10] = new item(false, 'Mar di Cortez', '14', 'index.asp?view=ico&sea=14', 1)
asea1[11] = new item(true, 'Indo-Pacifico', '10', 'index.asp?view=ico&sea=10', 0)
asea1[12] = new item(false, 'Mare delle Andamane', '13', 'index.asp?view=ico&sea=13', 1)
asea1[13] = new item(false, 'Mare di Celebes', '11', 'index.asp?view=ico&sea=11', 1)
asea1[14] = new item(false, 'Mare di Bismark', '15', 'index.asp?view=ico&sea=15', 1)
asea1[15] = new item(false, 'Mar di Sulawesi', '16', 'index.asp?view=ico&sea=16', 1)
asea1[16] = new item(false, 'Mar delle Molucche', '19', 'index.asp?view=ico&sea=19', 1)
asea1[17] = new item(false, 'Mar Cinese Merid.', '20', 'index.asp?view=ico&sea=20', 1)
asea1[18] = new item(false, 'Oceano Indiano', '3', 'index.asp?view=ico&sea=3', 0)
asea1[19] = new item(false, 'Mar Baltico', '17', 'index.asp?view=ico&sea=17', 0)
asea1[20] = new item(false, 'Mare del Nord', '18', 'index.asp?view=ico&sea=18', 0)

CreaMenu("asea1")

acat2 = new makeArray(5)
acat2[0] = new item(false, 'Tutte le categorie', '', 'index.asp?view=ico&cat=', 0)
acat2[1] = new item(true, 'Ambienti', '66', 'index.asp?view=ico&cat=66', 0)
acat2[2] = new item(false, 'Ambienti Mediterranei', '64', 'index.asp?view=ico&cat=64', 1)
acat2[3] = new item(false, 'Ambienti Tropicali', '63', 'index.asp?view=ico&cat=63', 1)
acat2[4] = new item(false, 'Relitti', '68', 'index.asp?view=ico&cat=68', 0)

CreaMenu("acat2")



}

makeDatabase()

function CreaMenu(menu) {
	setStates(menu)
	setImages(menu)
}

function setMenu(menu,exe) {
	setStates(menu)
	setImages(menu)
	writeMenu(menu,exe)
}
function setStates(menu) {
        var storedValue = getCookie(menu)
	var objMenu = eval(menu)
        if (!storedValue) {
                for (var i = 0; i < objMenu.length; ++i) {
                        if (objMenu[i].depth == 0)
                                objMenu[i].state = true
                        else
                                objMenu[i].state = false
                }
        } else {
                // extract current states from cookie (0 => false, 1 => true)
                for (var i = 0; i < objMenu.length; ++i) {
                        if (storedValue.charAt(i) == '1')
                                objMenu[i].state = true
                        else
                                objMenu[i].state = false
                }
        }
}
function setImages(menu) {
	var objMenu = eval(menu)
        for (var i = 0; i < objMenu.length; ++i) {
                if (objMenu[i].state)
                        if (objMenu[i].parent) 
                                if (objMenu[i + 1].state) // objMenu[i] is exploded
                                        objMenu[i].pic = '<A HREF="javascript:toggle(\'' + menu + '\',' + i + ',true)"><IMG SRC="/images/menu_aperto.gif" ALIGN=absmiddle BORDER=0 WIDTH="16" HEIGHT="16"></A>'
                                else 
                                        objMenu[i].pic = '<A HREF="javascript:toggle(\'' + menu + '\',' + i + ',true)"><IMG SRC="/images/menu_chiuso.gif" ALIGN=absmiddle BORDER=0 WIDTH="16" HEIGHT="16"></A>'
                        else // objMenu[i] is only a child (not a parent)
                                objMenu[i].pic = '<IMG SRC="/images/menu_vuoto.gif" ALIGN=absmiddle BORDER=0 WIDTH="16" HEIGHT="16">'
		else
			objMenu[i].pic = '<IMG SRC="/images/menu_vuoto.gif" ALIGN=absmiddle BORDER=0 WIDTH="16" HEIGHT="16">'
        }
}
function toggle(menu,num,refresh) {
	var objMenu = eval(menu)
        for (var i = 0; i < num; ++i) {
                if (objMenu[i].depth > objMenu[num].depth)
                        objMenu[i].state = false
        }
        for (var i = num + 1; i < objMenu.length && objMenu[i].depth >= objMenu[num].depth + 1; ++i) {
                if (objMenu[i].depth == objMenu[num].depth + 1)
                        objMenu[i].state = !objMenu[i].state // toggle state
        }
        var ultimo = i;
        for (var i = ultimo; i < objMenu.length; ++i) {
                if (objMenu[i].depth > objMenu[num].depth)
                        objMenu[i].state = false
        }
        setStorage(menu)
        if (refresh)
        	setMenu(menu,"toggle")
        else
        	CreaMenu(menu)
}
function setStorage(menu) {
	var objMenu = eval(menu)
        var text = ""
        for (var i = 0; i < objMenu.length; ++i) {
                text += (objMenu[i].state) ? "1" : "0"
        }
        setCookie(menu, text)
}
function writeMenu(menu,exe) {
	var objMenu = eval(menu)
	menu = menu.substr(1)
	var menusel = GetParameter(menu.substr(0,menu.toString().length-1).toString())
	if (exe != "toggle") {
		for (var i = 0; i < objMenu.length; ++i) {
			if (menusel == objMenu[i].id) {
				if (objMenu[i].parent == true && objMenu[i+1].state == false)
					toggle("a" + menu, i, false)
				var downdepth = objMenu[i].depth
				var toggleok = false
				for (var j = i-1; j >= 0 && toggleok == false; --j) {
					if (objMenu[j].parent == true) {
						if (objMenu[j].depth < downdepth) {
							if (objMenu[j+1].state == false)
								toggle("a" + menu, j, false)
							--downdepth
						}
						else
							if (objMenu[j+1].state == true)
								toggle("a" + menu, j, false)
					}
					if (objMenu[j].depth == 0)
						toggleok = true
				}
			}
		}
	}
	var text = ""
	text = text + "<span class=menu>"
	
	for (var i = 0; i < objMenu.length; ++i) {
		if (objMenu[i].depth == 0)
			if (menusel == objMenu[i].id)
				mstyle = "clsMenuSelL0"
			else
				mstyle = "clsMenuL0"
		else
			if (menusel == objMenu[i].id)
				mstyle = "clsMenuSel"
			else
				mstyle = "clsMenu"
		if (objMenu[i].state) {
			for (var j = 0; j < objMenu[i].depth * 4; ++j) {
				text = text + "&nbsp;"
			}
			text = text + objMenu[i].pic + "<a href=" + GeneraLink(objMenu[i].link) + " class=" + mstyle + ">" + objMenu[i].text + "</a><BR>"
		} else {
			var previous = i
			for (var k = i + 1; k < objMenu.length && objMenu[k].depth >= objMenu[previous].depth; ++k) {
				++i
			}
		}
	}
	text = text + "</span>"
	
	if (document.all) {
		document.all(menu).innerHTML = text
	}
	else if (document.layers) {
		document.layers[menu].document["n"+menu].document.write(text)
		document.layers[menu].document["n"+menu].document.close()
		document.layers[menu].document["n"+menu].left=0
	}
	else if (document.getElementById) { //else if it supports the new DOM
		document.getElementById(menu).innerHTML = text
	}
}
function GeneraLink(link) {
	
	varGet = document.location.search.replace("?","&")
	varGet = varGet.replace("view=" + GetParameter("view"),"")
	
	if(link.search("&cat=") > 0) {
		varGet = varGet.replace("cat=" + GetParameter("cat"),"")
	}
	else {
		varGet = varGet.replace("sea=" + GetParameter("sea"),"")
	}
	
	// imposto il parametro di pagina = 1
	varGet = varGet.replace("p=" + GetParameter("p"),"p=1")
	
	// elimino eventuali doppie &&
	while (varGet.indexOf("&&") > -1) {
		varGet = varGet.replace("&&","&")
	}
		
	link += varGet
	
	return link

}

if (document.layers) {
	var hm1 = "height=" + (22 * 20)
	var hm2 = "height=" + (10 * 20)
	var hm3 = "height=" + (5 * 20)
}
else {
	var hm1 = ""
	var hm2 = ""
	var hm3 = ""
}