/* scroller foto in pagina contenuto */
var PhotoScroller;
/* scroller hotel in div preferiti */
var HotelScroller;

/* link per cancellazione struttura in box preferiti di dx */
function DeleteHotels(id) {
    if (id == 0) {
        Cookie.write('wishlist', "", { path: '/', duration: 10 });
        //Cookie.dispose('wishlist', { path: '/', duration: 10 });
        var table1 = $('prefer_table');
        var table2 = table1.getFirst('div').getFirst('table');
        var tbody = table2.getFirst('tbody');
        var rows = tbody.getChildren('tr');
        rows.dispose();
    }
    else {
        if ($('favorite' + id))
            $('favorite' + id).dispose();
        var cookies = "";
        if (Cookie.read('wishlist'))
            cookies = Cookie.read('wishlist');

        if (cookies.indexOf('|') >= 0) {
            var oldcooks = new Array();
            var newcooks = "";
            oldcooks = cookies.split("|");
            for (var x = 0; x < oldcooks.length; x++) {
                if (oldcooks[x] != id) {
                    if (newcooks != "")
                        newcooks += "|";
                    newcooks += oldcooks[x];
                }
            }
            Cookie.write('wishlist', newcooks, { path: '/', duration: 10 });
        }
        else
            if (cookies == id) {
            Cookie.write('wishlist', "", { path: '/', duration: 10 });
        }
    }
}

/* dopo il drag&drop della struttura verso il div dei preferiti, viene aggiunta una riga alla tabella (in alto) ed effettuato il dispose sul div trascinato */
function EndMoving(sender, hotelid) {

    var NomeHotel = sender.getFirst('h3').getFirst('a');
    var LuogoHotel = sender.getFirst('h3').getFirst('span');
    var RatingHotel = sender.getFirst('h3').getLast('span');
    var table1 = $('prefer_table');
    var table2 = table1.getFirst('div').getFirst('table');
    var first_row = table2.getFirst('tbody');
    var row = new Element('tr', { 'id': 'favorite' + hotelid });

    var cell1 = new Element('td', { 'html': ShowStars(RatingHotel.get('text')) });
    var cell2 = new Element('td', { 'class': 'name_td', 'html': NomeHotel.get('text') });
    var cell3 = new Element('td', { 'html': '<a class="prefer_link" href="javascript:DeleteHotels(' + hotelid + ');">' + LuogoHotel.get('text') + '</a>' });
    cell1.inject(row);
    cell2.inject(row);
    cell3.inject(row);

    if ((table1.getSize().y - table2.getSize().y) < 120) {
        var t = table1.getLast('table');
        var tt = t.getFirst('tbody');
        var t2 = tt.getFirst('tr');
        var t3 = t2.getFirst('td');
        //t3.getFirst('div').setStyle('display', 'block');
        //t3.setStyle('display', 'block');
    }

    row.inject(first_row, 'top');
    sender.dispose();
}

/* visualizza stelle nella riga dei preferiti */
function ShowStars(stars) {
    var html = "";
    if (!isNaN(stars)) {
        for (var i = 0; i < stars; i++)
            html += '<img class="search_stars" alt="" src="/images/stars.png" />';
    }
    return html;
}

/* crea una copia del div dell'hotel e visualizza lo spostamento verso il div dei preferiti (a dx) */
function MoveToWishList(sender, hotelID) {
    var cookies = "";
    if (Cookie.read('wishlist')) {
        cookies = Cookie.read('wishlist');
        if (cookies.indexOf('|') >= 0) {
            var cooks = new Array();
            cooks = cookies.split("|");
            if (cooks.indexOf(String(hotelID)) >= 0) {
                alert('Struttura gia\' nei preferiti');
                return false;
            }
        }
        else
            if (cookies == hotelID) {
            alert('Struttura gia\' nei preferiti');
            return false;
        }
    }

    if (cookies.length > 0)
        cookies += "|" + hotelID;
    else
        cookies = hotelID;

    Cookie.write('wishlist', cookies, { path: '/', duration: 10 });

    var div = $(sender).getParent().getParent().getParent();
    var div2 = div.clone();

    var new_div = new Element('div');
    var span = div2.getFirst('span');
    var h3 = div2.getFirst('h3');
    span.inject(new_div);
    h3.inject(new_div);
    
    var table1 = $('prefer_table');
    var pos = div.getPosition(document.body);
    var final_pos = table1.getPosition(document.body);

    if (new_div.getFirst('h3')) {
        new_div.getFirst('h3').setStyle('width', table1.getSize().x - 105);
    }
    new_div.setStyles({ 'left': pos.x, 'top': pos.y, 'position': 'absolute', 'opacity': '1', 'width': table1.getSize().x });
    new_div.inject(document.body);

    var duration = Math.floor(pos.y * 1000 / 12000) + 500;
    var myEffects = new Fx.Morph(new_div, { duration: duration, transition: Fx.Transitions.Cubic.easeIn, onComplete: function() { EndMoving(new_div, hotelID); } });

    myEffects.start({
        'left': final_pos.x,
        'top': final_pos.y + 30,
        'opacity': 0.5
    });
}

/* spostamento della mappa di google verso il basso con posizionamento sulla località desiderata */
var MoveMap = function(value, latitudine, longitudine, zoom) {
    map.setCenter(new GLatLng(latitudine, longitudine), zoom);
    //map.setMapType(G_SATELLITE_MAP);
    //map.setMapType(G_HYBRID_MAP);
    map.addMapType(G_PHYSICAL_MAP);
    map.setMapType(G_NORMAL_MAP);
    map.removeMapType(G_HYBRID_MAP);
    var mapControl = new GMapTypeControl();
    map.addControl(mapControl);
    $('mapBox').tween('top', value);
}

/* spostamento verso il basso per l'hotel desiderato */
var MoveMapDown = function(value, latitudine, longitudine, zoom) {
    map.setCenter(new GLatLng(latitudine, longitudine), zoom);
    //map.setMapType(G_SATELLITE_MAP);
    //map.setMapType(G_HYBRID_MAP);
    map.addMapType(G_PHYSICAL_MAP);
    map.setMapType(G_NORMAL_MAP);
    map.removeMapType(G_HYBRID_MAP);
    var mapControl = new GMapTypeControl();
    map.addControl(mapControl);
    $('mapBox').removeEvents('mouseenter');
    $('mapBox').removeEvents('mouseleave');
    $('mapBox').tween('top', value);
}

/* scroll foto nella pagina di contenuto (verso destra) */
function MoveForwardPhoto() {
    CloseZoomPhoto();
    PhotoScroller.start($('multibox1').getScroll().x + 70, 0);
}

/* scroll foto nella pagina di contenuto (verso sinistra) */
function MoveBackPhoto() {
    CloseZoomPhoto();
    PhotoScroller.start($('multibox1').getScroll().x - 70, 0);
}

/* scroll hotel nel div dei preferiti (verso l'alto) */
function MoveUpHotels() {
    var table1 = $('prefer_table');
    var div = table1.getFirst('div')
    HotelScroller.start(0, div.getScroll().y - 40);
}

/* scroll hotel nel div dei preferiti (verso il basso) */
function MoveDownHotels() {
    var table1 = $('prefer_table');
    var div = table1.getFirst('div')
    HotelScroller.start(0, div.getScroll().y + 40);
}

/* ingrandimento immagine nel div delle foto nella pagina contenuto */
function OpenZoomPhoto(event, link) {
    event = new Event(event);
    event.stopPropagation();
    event.stop();
    var photo = $(link).getFirst('img');
    var pos = $(link).getPosition();
    var div = $('divzoomphoto');
    var img = $('imgzoomphoto');
    var tools = $('toolszoomphoto');
    img.src = photo.src;
    div.setStyles({ 'opacity': '0', 'top': Number(pos.y) + 'px', 'left': Number(pos.x - 164 + $(photo).getSize().x) + 'px', 'display': 'block' });
    tools.getLast('a').href = link.href;
    div.tween('opacity', '1');
    return false;
}

/* chiusura ingrandimento immagine nel div delle foto nella pagina contenuto */
function CloseZoomPhoto() {
    if ($('divzoomphoto')) {
        var div = $('divzoomphoto');
        div.tween('opacity', '0');
    }
    return false;
}

/* prepara lo scroller delle foto, lo scroller degli hotel, il movimento della google-map, ecc ecc */
window.addEvent('domready', function() {

    if ($('nav_main') && $('tags') && $('booking')) {
        
        var isHomepage = $('nav_main').getStyle('top').toInt() > 400;
        if (!isHomepage) {
            $('booking').setStyle('opacity', 0.8);
            $('tags').setStyle('opacity', 0.8);
            $('nav_main').setStyle('opacity', 0.8);
        }
        else {
            var fadeDuration = 400;
            $('booking').setStyle('opacity', 0).set('tween', {duration: fadeDuration});
            $('tags').setStyle('opacity', 0).set('tween', {duration: fadeDuration});
            $('nav_main').setStyle('opacity', 0).set('tween', {duration: fadeDuration});
            $(document.body).addEvent('mousemove', function(){
                $(document.body).removeEvents('mousemove');
                $('booking').tween('opacity', 0.8);
                $('tags').tween('opacity', 0.8);
                $('nav_main').tween('opacity', 0.8);
            });
        }
    }

    if ($('multibox1'))
        PhotoScroller = new Fx.Scroll($('multibox1'));

    if ($('prefer_table')) {
        var table1 = $('prefer_table');
        var div = table1.getFirst('div')
        HotelScroller = new Fx.Scroll(div);
    }

    var closeBoxMenu = function(child, el) {
        if (child.retrieve('enter') == 0) {
            child.setStyle('display', 'none');
            el.setStyles({ 'right': '0px', 'padding': '1px 15px 1px 1px', 'border': '0' });
        }
    }

    var menu = $$('.nav_top');

    menu.each(function(el) {

        var childs = el.getParent().getLast('div');

        if (childs) {
            el.addEvent('mouseenter', function() {
                $$('.subbox').setStyle('display', 'none').store('enter', 0);
                childs.store('enter', 1);
                childs.setStyle('display', 'block');

                el.setStyles({ 'right': '-1px', 'padding': '0 16px 0 0', 'border': '1px solid #333', 'border-right': '0' });
            });

            el.addEvent('mouseleave', function() {
                childs.store('enter', 0);
                closeBoxMenu.delay(100, null, [childs, el]);
            });

            childs.addEvent('mouseenter', function() {
                childs.store('enter', 1);
            });

            childs.addEvent('mouseleave', function() {
                childs.store('enter', 0);
                closeBoxMenu.delay(100, null, [childs, el]);
            });

        }

    });


    // Chiusura del DOMREADY
});

/* Scambio foto in dettaglio hotel */
function ChangeHotelPic(sender) {
    var newpic = $(sender).getFirst('img');
    $$('.photothumb').setStyle('border-color', '#FFFFFF');
    var mainpic = $('ctl00_ctl00_MasterContent_MasterContent_mainpic');
    newpic.setStyle('border-color', '#eb8114');
    var myTween = new Fx.Tween(mainpic, { onComplete: function() { mainpic.src = newpic.src; mainpic.set('tween', { duration: 500 }); mainpic.tween('opacity', '1'); } });
    myTween.start('opacity', '0');
}

/* Controllo form di aggiunta struttura */
function CheckAddSubmit() {

    if ($('name')) {
        if (!isValidString($('name').value)) {
            alert('Inserisci il nome della struttura');
            return false;
            $('name').focus();
        }
    }
    if ($('ctl00_MasterContent_category')) {
        if (!($('ctl00_MasterContent_category').get('value')>0)) {
            alert('Scegli il tipo di struttura');
            return false;
        }
    }

    if ($('ctl00_MasterContent_city')) {
        if (!($('ctl00_MasterContent_city').get('value') > 0)) {
            alert('Scegli la citta\'');
            return false;
        }
    }
    return false;
}

/* Apre o chiude il div "luoghi" */
function ShowHidePlaces(label, label2) {

    if ($('box_open_places')) {
        $('box_open_places').dispose();
        $('box_places').setStyles({ display: 'block' });
    }
    else {
        var div = new Element('div', { id: 'box_open_places', 'class': 'box', html: '<h3 style="cursor: pointer;" onclick="ShowHidePlaces(\'' + label + '\')">' + label + '</h3><a href="#" onclick="ShowHidePlaces(\'' + label + '\'); return false">' + label2 + '</a>' });
        div.inject($('box_places'), 'after');
        $('box_places').setStyles({ display: 'none' });
    }
}