function Bookmark(fileName){
    var airportsIata = new Array();
    var airportsName = new Array();
    var mode = 'buy';
    document.write("<div id=\"book_title\"></div><div id=\"book_form\"></div>");
    var divMark = document.getElementById("book_title");
    var divContent = document.getElementById("book_form");
    divContent.style.width = "477px";
    divContent.style.height = "181px";
    divContent.style.backgroundColor = "#e5e5e5";
    divContent.style.backgroundImage = "url('images/form-ground.gif')";
    divContent.style.backgroundRepeat = "repeat-x";
    divContent.style.backgroundPosition = "bottom";
    divContent.style.paddingLeft = "10px";

    load();

    function load(){
        var loader;
        if(window.ActiveXObject) loader = new ActiveXObject("Microsoft.XMLHTTP");
        else loader = new XMLHttpRequest();
        loader.onreadystatechange = function(){
            if(loader.readyState == 4 && loader.status == 200) build(loader.responseText);
        }
        loader.open("get", fileName, true);
        loader.send(null);
    }
    function build(xml){
        var xmlDom;
        try{
            var parser;
            if(window.ActiveXObject){
                parser = new ActiveXObject("Microsoft.XMLDOM");
                parser.async = false;
                parser.loadXML(xml);
                xmlDom = parser.documentElement;
            }else if(window.DOMParser){
                parser = new DOMParser();
                parser.strictErrorChecking=true;
                xmlDom = parser.parseFromString(xml, 'text/xml').documentElement;
            }
        }catch (e){}

        var itemsList = xmlDom;
        for(var itemsIndex = 0; itemsIndex < itemsList.childNodes.length; itemsIndex++){
            var item = itemsList.childNodes.item(itemsIndex);
            if(item.nodeType == 1){
                for(var valuesIndex = 0; valuesIndex < item.childNodes.length; valuesIndex++){
                    var values = item.childNodes.item(valuesIndex);
                    if(values.nodeType == 1){
                        if(values.tagName == "iata") airportsIata[itemsIndex] = values.childNodes.item(0).nodeValue;
                        else if(values.tagName == "name") airportsName[itemsIndex] = values.childNodes.item(0).nodeValue;
                    }
                }
            }
        }

        buildMarks();

        divContent.innerHTML = "";
        divContent.appendChild(buildBuyForm());
    }

    function buildMarks(){
        divMark.style.width = "487px";
        divMark.style.height = "27px";
        divMark.style.backgroundColor = "#e5e5e5";

        var tableMark = document.createElement("table");
        var tbodyMark = document.createElement("tbody");
        var trMark = document.createElement("tr");
        var tdLeftMark = document.createElement("td");
        var tdRightMark = document.createElement("td");

        var tableBuy = document.createElement("table");
        tableBuy.style.width = "187px";
        tableBuy.style.height = "27px";
        var tbodyBuy = document.createElement("tbody");
        var trBuy = document.createElement("tr");

        var tdLeftBuy = document.createElement("td");
        tdLeftBuy.style.width = "5px";

        var tdCenterBuy = document.createElement("td");
        tdCenterBuy.style.backgroundRepeat = "repeat-x";
        tdCenterBuy.style.textAlign = "center";

        var tdRightBuy = document.createElement("td");
        tdRightBuy.style.width = "5px";

        var contentBuy = document.createElement("span");
        contentBuy.style.textTransform = "uppercase";
        contentBuy.style.fontSize = "18px";

        if(mode == 'buy'){
            tdLeftBuy.style.backgroundImage = "url('images/left-select-bookmark.gif')";
            tdCenterBuy.style.backgroundImage = "url('images/ground-select-bookmark.gif')";
            tdRightBuy.style.backgroundImage = "url('images/right-select-bookmark.gif')";
            contentBuy.style.color = "#f6a600";
        }else if(mode == 'booking'){
            tdLeftBuy.style.backgroundImage = "url('images/left-bookmark.gif')";
            tdCenterBuy.style.backgroundImage = "url('images/ground-bookmark.gif')";
            tdRightBuy.style.backgroundImage = "url('images/right-bookmark.gif')";
            contentBuy.style.color = "#003d90";
            contentBuy.onclick = switchMode;
            contentBuy.style.cursor = "pointer";
        }

        var textBuy = document.createTextNode("Comprare");

        contentBuy.appendChild(textBuy);
        tdCenterBuy.appendChild(contentBuy);

        trBuy.appendChild(tdLeftBuy);
        trBuy.appendChild(tdCenterBuy);
        trBuy.appendChild(tdRightBuy);

        tbodyBuy.appendChild(trBuy);

        tableBuy.appendChild(tbodyBuy);

        var tableBooking = document.createElement("table");
        tableBooking.style.width = "300px";
        tableBooking.style.height = "27px";
        var tbodyBooking = document.createElement("tbody");
        var trBooking = document.createElement("tr");

        var tdLeftBooking = document.createElement("td");
        tdLeftBooking.style.width = "5px";

        var tdCenterBooking = document.createElement("td");
        tdCenterBooking.style.backgroundRepeat = "repeat-x";
        tdCenterBooking.style.textAlign = "center";

        var tdRightBooking = document.createElement("td");
        tdRightBooking.style.width = "5px";

        var contentBooking = document.createElement("span");
        contentBooking.style.textTransform = "uppercase";
        contentBooking.style.fontSize = "18px";

        if(mode == 'booking'){
            tdLeftBooking.style.backgroundImage = "url('images/left-select-bookmark.gif')";
            tdCenterBooking.style.backgroundImage = "url('images/ground-select-bookmark.gif')";
            tdRightBooking.style.backgroundImage = "url('images/right-select-bookmark.gif')";
            contentBooking.style.color = "#f6a600";
        }else if(mode == 'buy'){
            tdLeftBooking.style.backgroundImage = "url('images/left-bookmark.gif')";
            tdCenterBooking.style.backgroundImage = "url('images/ground-bookmark.gif')";
            tdRightBooking.style.backgroundImage = "url('images/right-bookmark.gif')";
            contentBooking.style.color = "#003d90";
            contentBooking.onclick = switchMode;
            contentBooking.style.cursor = "pointer";
        }

        var textBooking = document.createTextNode("Prenotazione");

        contentBooking.appendChild(textBooking);
        tdCenterBooking.appendChild(contentBooking);

        trBooking.appendChild(tdLeftBooking);
        trBooking.appendChild(tdCenterBooking);
        trBooking.appendChild(tdRightBooking);

        tbodyBooking.appendChild(trBooking);

        tableBooking.appendChild(tbodyBooking);

        tdLeftMark.appendChild(tableBuy);
        tdRightMark.appendChild(tableBooking);

        trMark.appendChild(tdLeftMark);
        trMark.appendChild(tdRightMark);
        tbodyMark.appendChild(trMark);
        tableMark.appendChild(tbodyMark);
        divMark.innerHTML = "";
        divMark.appendChild(tableMark);
    }
    function buildBuyForm(){
        var date = new Date();
        var form = document.createElement("form");
        form.action = "buy";
        form.method = "post";
        form.name = "buy";
        form.id = "buy";
        form.style.backgroundImage = "url('images/bag-for-buyform.gif')";
        form.style.backgroundRepeat = "no-repeat";
        form.style.backgroundPosition = "right 20px";
        form.style.height = "181px";

        var table, tbody, tr, td, br, text, radio, img, calendar, select;

        table = document.createElement("table");
        table.style.fontWeight = "bold";
        table.style.fontSize = "11px";
        tbody = document.createElement("tbody");

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Da");
        select = new Select("departure_city", airportsName, airportsIata, 0, 50);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(select.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Data Partenza");
        td.style.color = "#1e599f";
        td.appendChild(text);
        td.appendChild(br);
        calendar = new Calendar("depart_date", date.getFullYear(), date.getFullYear() + 1);
        td.appendChild(calendar.create());
        tr.appendChild(td);

        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("A");
        select = new Select("arrival_city", airportsName, airportsIata, 0, 50);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(select.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Data di ritorno");
        td.appendChild(text);
        td.appendChild(br);
        calendar = new Calendar("return_date", date.getFullYear(), date.getFullYear() + 1);
        td.appendChild(calendar.create());
        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        td.colSpan = 2;
        td.innerHTML = "<input type=\"radio\" name=\"direction\" value=\"single\">Solo Andata</input>&nbsp" +
        "<input type=\"radio\" name=\"direction\" value=\"return\" checked=\"checked\">Andata e ritorno</input>";
        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.colSpan = 2;

        var buttonTable = document.createElement("table");
        var buttonTbody = document.createElement("tbody");
        var buttonTr = document.createElement("tr");
        var buttonTd = document.createElement("td");
        buttonTd.style.padding = "2px";
        var submit = new Submit("Trovare", "buy");
        buttonTd.appendChild(submit.create());
        buttonTr.appendChild(buttonTd);
        buttonTd = document.createElement("td");
        buttonTd.style.padding = "2px";
        var button = new Button("Orario", "timetable/");
        buttonTd.appendChild(button.create());
        buttonTr.appendChild(buttonTd);
        buttonTbody.appendChild(buttonTr);
        buttonTable.appendChild(buttonTbody);

        td.appendChild(buttonTable);
        tr.appendChild(td);
        tbody.appendChild(tr);

        table.appendChild(tbody);
        form.appendChild(table);

        img = document.createElement("img");
        img.src = "images/buyform-bottom.gif";
        form.appendChild(img);

        return form;
    }
    function buildBookingForm(){
        var date = new Date();
        var form = document.createElement("form");
        form.action = "booking";
        form.method = "post";
        form.name = "booking";
        form.id = "booking";
        form.style.height = "181px";

        var table, tbody, tr, td, br, text, radio, img, calendar, submit, select;

        table = document.createElement("table");
        table.style.fontWeight = "bold";
        table.style.fontSize = "11px";
        tbody = document.createElement("tbody");

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Nome");
        input = new Input("name", "", 140);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(input.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Cognome");
        input = new Input("surname", "", 140);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(input.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Giorno di nascita");
        td.style.color = "#1e599f";
        td.appendChild(text);
        td.appendChild(br);
        calendar = new Calendar("birthday_date", date.getFullYear() - 100, date.getFullYear());
        td.appendChild(calendar.create());
        tr.appendChild(td);

        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Telefono");
        input = new Input("phone", "", 140);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(input.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("E-Mail");
        input = new Input("email", "", 140);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(input.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Voyage+ numero");
        input = new Input("voyage", "", 115);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(input.create());
        tr.appendChild(td);

        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Da");
        select = new Select("departure_city", airportsName, airportsIata, 0, 50);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(select.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Data Partenza");
        td.style.color = "#1e599f";
        td.appendChild(text);
        td.appendChild(br);
        calendar = new Calendar("depart_date", date.getFullYear(), date.getFullYear() + 1);
        td.appendChild(calendar.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        td.style.verticalAlign = "top";
        td.rowSpan = 2;
        td.innerHTML = "<br /><input type=\"radio\" name=\"direction\" value=\"single\">Solo Andata</input>" +
        "<br /><input type=\"radio\" name=\"direction\" value=\"return\" checked=\"checked\">Andata e ritorno</input>";

        var buttonTable = document.createElement("table");
        var buttonTbody = document.createElement("tbody");
        var buttonTr = document.createElement("tr");
        var buttonTd = document.createElement("td");
        buttonTd.style.padding = "2px";
        submit = new Submit("Inviare", "booking");
        buttonTd.appendChild(submit.create());
        buttonTr.appendChild(buttonTd);
        buttonTd = document.createElement("td");
        buttonTd.style.padding = "2px";
        var button = new Button("Orario", "timetable/");
        buttonTd.appendChild(button.create());
        buttonTr.appendChild(buttonTd);
        buttonTbody.appendChild(buttonTr);
        buttonTable.appendChild(buttonTbody);

        td.appendChild(buttonTable);
        tr.appendChild(td);

        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("A");
        select = new Select("arrival_city", airportsName, airportsIata, 0, 50);
        td.appendChild(text);
        td.appendChild(br);
        td.appendChild(select.create());
        tr.appendChild(td);

        td = document.createElement("td");
        td.style.padding = "2px";
        td.style.color = "#1e599f";
        br = document.createElement("br");
        text = document.createTextNode("Data di ritorno");
        td.appendChild(text);
        td.appendChild(br);
        calendar = new Calendar("return_date", date.getFullYear(), date.getFullYear() + 1);
        td.appendChild(calendar.create());
        tr.appendChild(td);
        tbody.appendChild(tr);

        tr = document.createElement("tr");
        td = document.createElement("td");
        td.colSpan = 3;
        td.style.paddingTop = "5px";
        td.style.paddingLeft = "3px";
        var link = document.createElement("a");
        link.href = "article/29";
        link.style.fontWeight = "bold";
        text = document.createTextNode("Prenotazione descrizione");
        link.appendChild(text);
        td.appendChild(link);
        tr.appendChild(td);
        tbody.appendChild(tr);

        table.appendChild(tbody);
        form.appendChild(table);

        return form;
    }

    function switchMode() {
        mode = (mode == "buy" ? "booking" : "buy");
        buildMarks();
        divContent.innerHTML = "";
        divContent.appendChild(mode == "buy" ? buildBuyForm() : buildBookingForm());
    }
}