<!--
/*
 * scripts.js - most of the functions for hotelsperanza.com
 * (c) 2007 Nicola Farina
 */

DBG=0

commonPage = "common.pag"

footPage = "foot.pag"

picts = "picts/"

NOPROMOS = false


function makeSite() {
    site = new Object
    populate(2, site, 'site.db')
}


function imgLoad(name) {
    var img = new Image()
    img.src = picts+name
}


function preload(file) {
    images = new Array
    var text = getFile(file)
    text.replace( /\r\n/g, "\n" )
    var lines = text.split(/\r*\n/)
    
    for (var i=0; i<lines.length; i++) {
        lines[i] = trim(lines[i])
        if (lines[i].charAt(0) == "#") continue
        if (lines[i].length == 0) continue
        if (lines[i] == '') continue
        var name = lines[i]
        //alert("load("+src+")")
        imgLoad(name)
        images[images.length] = name
    }
}


function init() {
    makeSite()

    if (readCookie('lang') == null) {
        lang('it')
    }
    cookie = readCookie('lang')

    IE = IE()

    makeInfos()

}


function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	//document.cookie = name+"="+value+expires+"; path=/";
	document.cookie = name+"="+value+expires
}


function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
    //alert(ca)
	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 pause(millis) {
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); } 
    while(curDate-date < millis)
} 


function noPromos() {
    NOPROMOS = true
}


function populate(n, db, file) {
    var text = getFile(file)

    if (! text) {
        noPromos()
        return
    }

    text.replace( /\r\n/g, "\n" )
    var lines = text.split(/\r*\n/)
    
    var i = 0
    for (i=0; i<lines.length; i++) {
        lines[i] = trim(lines[i])
        if (lines[i].charAt(0) == "#") continue
        if (lines[i].length == 0) continue
        if (lines[i] == '') continue
        var line = lines[i].split('*')
        for (var j=0; j<line.length; j++) {
            line[j] = trim(line[j])
        }
        if (n == 3) {
            var item = line[0]
            var lingua = line[1]
            var words = line[2]
            if (! itIs(db[item]))
                db[item] = new Object
            db[item][lingua] = words
        } else if (n == 2) {
            var item = line[0]
            var words = line[1]
            db[item] = words
        }
    }
    if (i == 0) {
        noPromos()
    }
}


function itIs(obj) {
    var o = typeof obj
    if (o.match('undefined'))
        return false
    else
        return true
}


function trim(sInString) {
  var sInString = sInString.replace( /^\s+/g, "" );
  return sInString.replace( /\s+$/g, "" );
}


function getFile(file) {
    var req = createXHR()

    req.open('GET', file, false); 
    req.setRequestHeader( "If-Modified-Since", "Thu, 1 Jan 1970 00:00:01 GMT" );
    req.send(null);

    if(req.readyState == 4)
        if(req.status == 200) {
            if (DBG) alert(req.responseText)
            return req.responseText
        }
}


function makeHTML(file) {
    document.write(getFile(file))
}


function endPage(func) {
    var e = getFile(footPage)
    document.write(e)
    //alert(func)
    if (func)
        func()
    else
        return true
}


function makePage(page) {
    var p = getFile(commonPage)
    p = p.replace(/PAGE/g, page)
    document.write(p)
}


function lang(lg) {
    createCookie('lang', lg, 999)
    window.location.reload(false)
    //alert(readCookie(site.url))
    //if (DBG) alert(readCookie(site.url))
}


function makeInfos() {
    infos = new Object
    populate(3, infos, 'infos.db')
}


function makeButtons(current) {
    buttons = new Object
    populate(3, buttons, 'buttons.db')
    for (var name in buttons) {
      var res=""
      if (! name.match(/info/)) {
       // alert(name)
        if (name != current) {
            res+=makeButt(name, 1)
        }
        else
            res+=makeButt(name, 0)
        document.write(res)
      }
    }
}


function makeButt(item, active) {
     var b = buttons[item][cookie]
     var m = multi(b)
     var name = m[0]
     var inf = m[1]
     var file = item+'.html'
    if (active) {
        inf = inf.replace(/'/g, "\\'")
        var over = "onmouseover=\"javascript:printInfo(\'banner\', \'"+inf+"\')\""
        var out = "onmouseout=\"javascript:printInfo(\'banner\', \'info\')\""
        return '<a href="'+file+'" class=butt '+over+' '+out+'>'+name+'</a>'
    } else {
        return '<a id="on">'+inf+'</a>'
    }
}


var W3 = !(document.getElementById && document.createElement);

function IE() {
var ie = !window.ActiveX;
    if (document.all) 
        return true
    else
        return false
}


function setInner(elem, inner) {
    getEl(elem).innerHTML = inner
}


function getInner(elem) {
    return getEl(elem).innerHTML
}


function setBgImg(elem, img) {
    var e = getEl(elem)
    e.style.background = "url("+img+") no-repeat;"
}


function getEl(elem) {
    var ret = null
    if (IE)
        ret = window.document.all(elem)
    else
        ret = document.getElementById(elem)
//    if (elem == "thtxt") alert(elem+" = "+ret)
    return ret
}


function getStyle(elem, stylo) {
    return getEl(elem).style[stylo]
}


function paragraph(f) {
        f = f.replace(/\.\./g, ".<p>");
        f = f.replace(/\!\!/g, "!<p>");
        f = f.replace(/\?\?/g, "?<p>");
        // alert(t)
        return f
}


function printInfo(where, what) {
    if (where.match('txt')) {
        var t = infos[what][cookie]
        t = paragraph(t)
        setInner(where, t)
        return
    }
    //alert(where+'_'+what)
    //if ((where.match('info'))  && (! what.match('info'))) {
    if (what.match('^info$')) {
        what = buttons[what][cookie]
        setInner(where, what)
        return
    }
    //if ((where.match('banner'))  && (! what.match('^info$'))) {
    if (where.match('banner')) {
        what = '<b>'+what+'</b>'
        setInner(where, what)
        return
    } 
    /*} else {
        try {
            var w1 = what
            what = buttons[what][cookie]
            alert("1. "+w1+"\n\n2. "+what)
        }
        catch (e) {
            //alert(where+' -=- '+what)
            
            //alert(buttons)
            //alert(buttons[what])
        }
    } */
    //alert(what)
}


function rand(max) {
	return Math.floor(Math.random()*max)
}


function randUp2(up) {
    var r = Math.floor(Math.random() * up)
    if (r < 10)
        r = "0"+r
    return r
}


function makeBanner () {
    maxBanner = 0
    for(var i=0; i<images.length; i++) {
        if (images[i].match(/^left-/)) {
            maxBanner++
        }
    }
}


function showBanner() {
    var tab = "<TABLE BORDER=\"0\"><TR><TD WIDTH=\"200\" HEIGHT=\"457\" BACKGROUND=\"IMAGE\" VALIGN=\"top\"></TD></TR></TABLE>"
    tab = tab.replace ("IMAGE", picts+"left-"+randUp2(maxBanner)+".jpg")
    //tab = tab.replace ("TEXT", infos[what][cookie])
    setInner('desc', tab)
}


function createXHR() {
    var request = false;
        try {
            request = new ActiveXObject('Msxml2.XMLHTTP'); }
        catch (err2) {
            try {
                request = new ActiveXObject('Microsoft.XMLHTTP'); }
            catch (err3) {
		        try {
			        request = new XMLHttpRequest(); }
		        catch (err1) {
			        request = false; }
            }
        }
        return request;
}


function makePrices() {
    prices = new Object
    populate(3, prices, 'listino.db')
}


function makePromos() {
    promos = new Object
    populate(3, promos, 'promos.db')
    if (NOPROMOS) {
        return false
    }
    else
        return true
}


function valOK(val) {
    val = trim(val)
    if (val.charAt(0) == '-')
        return "---"
    else
        return val+" "+infos.vat[cookie]
}


function newPrice(price, hb) {
    var p = prices[price]
    var s = picts+p.pict
    var i = new Image
    i.src = s
    var d = p[cookie]
    var m = p.money
    var periodo = infos.periodo[cookie]
    
    //document.write("<span class=ombra>")
    document.write("<div class=promo>")
    document.write("  <div class=sx>")
    document.write("    <img src="+s+"></img>")
    document.write("  </div>")
    document.write("  <div class=cx>")
    document.write("    <div class=camdesc>")
        var A = valOK(multi(p.A)[hb])
        var B = valOK(multi(p.B)[hb])
        var C = valOK(multi(p.C)[hb])
        var D = valOK(multi(p.D)[hb])
        var E = valOK(multi(p.E)[hb])
        document.write("<li class=prezzi style=\"background-color: rgb(204, 255, 255);\">"+periodo+" A - &euro; "+A+"</li>")
        document.write("<li class=prezzi style=\"background-color: rgb(255, 255, 153);\">"+periodo+" B - &euro; "+B+"</li>")
        document.write("<li class=prezzi style=\"background-color: rgb(255, 204, 255);\">"+periodo+" C - &euro; "+C+"</li>")
        document.write("<li class=prezzi style=\"background-color: rgb(153, 255, 153);\">"+periodo+" D - &euro; "+D+"</li>")
        document.write("<li class=prezzi style=\"background-color: rgb(255, 204, 102);\">"+periodo+" E - &euro; "+E+"</li>")
    document.write("</div>")
    document.write("  </div>")
    document.write("  <div class=dx>")
    document.write("    <div class=scad>"+d+"</div>")
    document.write("  </div>")
    document.write("</div>")
    //document.write("</span>")
}


function newOffer(offer) {
	        var p = promos[offer]
            var s = picts+p.pict
            var i = new Image
            i.src = s
            var c = infos.expir[cookie]+' '+p.scad
            var f = p.flag
            var d = p[cookie]
            
            //document.write("<span class=ombra>")
            document.write("<div class=promo>")
            document.write("  <div class=sx>")
            document.write("    <img src="+s+"></img>")
            document.write("  </div>")
            document.write("  <div class=cx>")
            document.write("    <div class=camdesc>"+d+"</div>")
            document.write("  </div>")
            document.write("  <div class=dx>")
            document.write("    <div class=scad>"+c+"</div>")
            document.write(       printExpl(promos, f) )
            document.write("  </div>")
            document.write("</div>")
            //document.write("</span>")
}


function multi(choice) {
    //alert(choice)
   var line = choice.split('@')
   for (var i=0; i<line.length; i++)
    line[i] = trim(line[i])
    return line
}


function valIN(line, i) {
    //alert(line)
    if (i<line.length)
        return line[i]
    else
        return "&nbsp;"
}
  

function makeTab() {
var periodo = infos.periodo[cookie]
document.write('\
<table style="text-align: left; width: 550px; height: 2em;" border="0" cellpadding="1" cellspacing="1">\
  <tbody>\
    <tr class=titpre >\
      <td style="background-color: rgb(204, 255, 255);">'+periodo+' A</td>\
      <td style="background-color: rgb(255, 255, 153);">'+periodo+' B</td>\
      <td style="background-color: rgb(255, 204, 255);">'+periodo+' C</td>\
      <td style="background-color: rgb(153, 255, 153);">'+periodo+' D</td>\
      <td style="background-color: rgb(255, 204, 102);">'+periodo+' E</td>\
    </tr>\
')

    stagioni = new Object
    populate(2, stagioni, 'stagioni.db')

    lines = new Object
    lines.A = multi(stagioni.A)
    lines.B = multi(stagioni.B)
    lines.C = multi(stagioni.C)
    lines.D = multi(stagioni.D)
    lines.E = multi(stagioni.E)

    var max = 0
    for (var i in lines)
        if (lines[i].length > max)
            max = lines[i].length

    for (var i=0; i<max; i++) {
    document.write('\
    <tr>\
        <td style="background-color: rgb(204, 255, 255);">'+valIN(lines.A, i)+'</td>\
        <td style="background-color: rgb(255, 255, 153);">'+valIN(lines.B, i)+'</td>\
        <td style="background-color: rgb(255, 204, 255);">'+valIN(lines.C, i)+'</td>\
        <td style="background-color: rgb(153, 255, 153);">'+valIN(lines.D, i)+'</td>\
        <td style="background-color: rgb(255, 204, 102);">'+valIN(lines.E, i)+'</td>\
    </tr>')
}

document.write('\
  </tbody>\
</table>')
}


function getPrices() {
    makePrices()
    
    makeTab()

    document.write("<div class=service>"+infos.colazione[cookie]+"</div>")
    //document.write("<center><h2>"+infos.colazione[cookie]+"</h2></center>")
    for (var value in prices)
        newPrice(value, 0)

    document.write("<br>&nbsp;<div class=service>"+infos.mezza[cookie]+"</div></p>")
    //document.write("<br>&nbsp;<br><center><h2>"+infos.mezza[cookie]+"</h2></center>")
    for (var value in prices)
        newPrice(value, 1)
}


function getPromos() {
    if (makePromos()) {
        for (var value in promos) {
            if (value.length > 1) {
                //alert (value) 
                newOffer(value)
            }
        }
    }
    //else {
    //    document.write("<center><h2>"+infos.nopro[cookie]+"</h2></center>")
    //}
}


function printExpl(db, f) {
    var result = ''
    for (var i=0; i<f.length; i++) {
        result += "<div class=item>"
            var theFlag = f.charAt(i)
            if (theFlag == 'N') result +="<img src=\""+picts+"new.jpg\" valign=\"bottom\"></img>"
            result += (db[theFlag][cookie])
        result += "</div>"
    }
    return result
}


function message() {
try
{
  if (infos.message[cookie])
    //alert(infos.message[cookie])
    //document.write("<H2><CENTER>"+infos.message[cookie]+"</CENTER></H2>")
    document.write("<div class=message><a href=\"contatti.html\">"+infos.message[cookie]+"</a></div>")
}
catch (error)
{
  return
}

}


function prenota(txt) {
    mailstr = '<a href="mailto:MAIL">MAIL</a>'
    mailstr = mailstr.replace( /MAIL/g, site.email)
    if (txt)
        document.write('<br><center>'+txt+'&nbsp;'+mailstr+'</center>')
    else
        document.write('<br><center>'+infos.prenota[cookie]+'&nbsp;'+mailstr+'</center>')
        
}


function map() {
    document.write('<br><br><a class=link href="'+site.mapa+'">'+infos.see[cookie]+'<center><br><img src="'+picts+'globe.jpg"></img></center></a>')
}


init()
// -->

