// On document load
function domLoad(i){
    var u = navigator.userAgent;
    var e =/*@cc_on!@*/ false;
    var st = setTimeout;
    if (/webkit/i.test(u)) {
        st(function(){
            var dr = document.readyState;
            if (dr == "loaded" || dr == "complete") {
                i();
            } else {
                st(arguments.callee, 10);
            }
        }, 10);
    } else if (((/mozilla/i.test(u) && !(/(compati)/.test(u)))) || (/opera/i.test(u))) {
        document.addEventListener("DOMContentLoaded", i, false);
    } else if (e) {
        (function(){
            var t = document.createElement('doc:rdy');
            try {
                t.doScroll('left');
                i();
                t = null;
            } catch (e) {
                st(arguments.callee, 0);
            }
        })();
    } else {
        window.onload = i;
    }
}

function loopFade(element,loopTime, fade){
    
    if (!document.getElementById(element)) return false;
    
    var slide = document.getElementById(element);
    var blocks = slide.getElementsByTagName("li");
    
    for (i = 1; i < blocks.length; i++) {
        blocks[i].xOpacity = 0;
    }
    
    blocks[0].style.display = "block";
    blocks[0].xOpacity = 1;
    
    var current = 0;
    
    setTimeout(fader, loopTime);
    
    function fader(){
        cOpacity = blocks[current].xOpacity;
        nIndex = blocks[current + 1] ? current + 1 : 0;
        
        nOpacity = blocks[nIndex].xOpacity;
        
        cOpacity -= 0.05;
        nOpacity += 0.05;
        
        blocks[nIndex].style.display = "block";
        blocks[current].xOpacity = cOpacity;
        blocks[nIndex].xOpacity = nOpacity;
        
        setOpacity(blocks[current]);
        setOpacity(blocks[nIndex]);
        
        if (cOpacity <= 0) {
            blocks[current].style.display = "none";
            current = nIndex;
            setTimeout(fader, loopTime);
        } else {
            setTimeout(fader, fade);
        }
        
        function setOpacity(node){
            if (node.xOpacity < 0) {
                node.xOpacity = 0;
            }
            
            node.style.opacity = node.xOpacity;
            node.style.MozOpacity = node.xOpacity;
            node.style.filter = "alpha(opacity=" + (node.xOpacity * 100) + ")";
            
            if (node.xOpacity > 0.99) {
                node.xOpacity = 1;
                return false;
            }
            
            
        }
    }
}

function animeSlide(element, distance, speed) {
    var object = document.getElementById(element);
    
    if(object.movement) {
        clearTimeout(object.movement);
    }
    
    if(!object.style.left) {
        object.style.left = "0px";
    }
    
    var position = parseInt(object.style.left, 0);
    
    if(position == distance || position == ('-' + distance)) {
        object.className = "run";
        return false;
    } else {
        object.className = "stop";
    }
    
    if(distance > position || distance < position) {
        var move = Math.round((distance + position) / 1.95);
        position = position - move;
    }
    
    object.style.left = position + "px";
    
    var repeat = "animeSlide('" + element + "' ," + distance + " ," + speed + ")";
    object.movement = setTimeout(repeat, speed);
}

function getURLParam(strParamName){
    var strReturn = "";
    var strHref = window.location.href;
    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?"));
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return strReturn;
}

function productsDescription(trigger, block){
    
    if (!document.getElementById(trigger)) return false;
    var trigger = document.getElementById(trigger);
    
    if (!document.getElementById(block)) return false;
    var block = document.getElementById(block);
    
    block.style.overflow = "hidden";
    
    var items = trigger.getElementsByTagName('a');
    var slider = block.getElementsByTagName('ul')[0];
    var lists = slider.getElementsByTagName('li');    
    var distance = lists[0].offsetWidth;
    var totalDistance = lists[0].offsetWidth * lists.length;
    
    slider.setAttribute('id', 'slider');
    slider.style.width = (distance* totalDistance) + "px";
    
    block.parentNode.style.padding = "0 0 80px 0";
    
    for (var i = 0; i < items.length; i++) {
        
        if(i) {
            items[i].style.backgroundPosition = "center -125px";
        }
        
        var get = items[i].getAttribute('rel');
        
        items[i].position = i;
        items[i].slider = slider;
        
        if(get == getURLParam('item')) {
            animeSlide('slider', distance * i, 150);
            items[i].style.backgroundPosition = "center top";
            if (i) {
                items[0].style.backgroundPosition = "center -125px";
            }
        }
        
        items[i].onclick = function(){
            
            for (var i = 0; i < items.length; i++) {
                if (this != items[i]) {
                    items[i].style.backgroundPosition = "center -125px";
                } else {
                    items[i].style.backgroundPosition = "center top";
                }
            }
            
            var nextDistance = distance * this.position;
            animeSlide('slider', nextDistance, 100);
            return false;
        };
    }
}

function listIcon(id){
    if(!document.getElementById(id)) return false;
    var list = document.getElementById(id);
    var items = list.getElementsByTagName('li');
    
    for (var i = 0; i < items.length; i++) {
        var topBorder = document.createElement('img');
        var bottomBorder = document.createElement('img');
        topBorder.setAttribute('src', 'images/list-border-top.png');
        bottomBorder.setAttribute('src', 'images/list-border-bottom.png');
        topBorder.className = "png";
        bottomBorder.className = "png";
        
        items[i].insertBefore(topBorder, items[i].firstChild);
        items[i].appendChild(bottomBorder);
        items[i].style.background = "transparent url(images/list-" + (i + 1) + ".gif) no-repeat left center";
    }
}

function createHiddenInput(id, name){
    var hiddenValue = document.createElement('input');
    hiddenValue.setAttribute('type', 'hidden');
    hiddenValue.setAttribute('id', id);
    hiddenValue.setAttribute('name', name);
    hiddenValue.setAttribute('value', 0);
    
    return hiddenValue;
}

function createLink(href, id, classname){
    var link = document.createElement('a');
    link.setAttribute('href', href);
    if (id) {
        link.setAttribute('id', id);
    }
    if (classname) {
        link.className = classname;
    }
    
    return link;
}

function createElem(tag){
    var node = document.createElement(tag);
    return node;
}

function createText(text){
    var node = document.createTextNode(text);
    return node;
}

function removeForm(form){
    var selects = form.getElementsByTagName('select');
    for (var i = 0; i < selects.length; i++) {
        selects[i].parentNode.removeChild(selects[i--]);
    }
}

function closeLastMenu(){
    var labels = document.getElementsByTagName('label');
    
    for(var i = 0; i < labels.length; i++) {
        if(labels[i].className == "selects") {
            var select = labels[i].getElementsByTagName('ul')[0];
            select.style.display = "none";
        }
    }
}

function createForm(element){
    if(!document.getElementById(element)) return false;
    var form = document.getElementById(element);
    
    if(!form.getElementsByTagName('select')) return false;
    var selects = form.getElementsByTagName('select');
    
    for(var i = 0; i < selects.length; i++) {
        var parent = selects[i].parentNode;
        parent.className = "selects";
        var selectName = selects[i].getAttribute('name');
        var options = selects[i].getElementsByTagName('option');
        
        /* hidden value, sends value */
        var hiddenValue = createHiddenInput(selectName, selectName);
        parent.appendChild(hiddenValue);
        
        /* open dropdown */
        var trigger = createLink('#', 'trigger-' + i, 'trigger');
        parent.appendChild(trigger);
        
        /* cutomized select */
        var dropdown = createElem('ul');
        parent.appendChild(dropdown);
        dropdown.style.display = "none";
        
        for(var j = 0; j < options.length; j++) {
            var optionVal = options[j].getAttribute('value');
            var optionName = options[j].firstChild.nodeValue;
            var triggerText = createText(optionName);
            if(!j) {
                trigger.appendChild(triggerText);
            }
            
            if (options[j].getAttribute('selected')) {
                hiddenValue.value = optionVal;
                trigger.firstChild.nodeValue = optionName;
            }
            
            var list = createElem('li');
            
            var item = createLink(optionVal);
            item.appendChild(createText(optionName));
            
            list.appendChild(item);
            dropdown.appendChild(list);
            
            item.hiddenValue = hiddenValue;
            item.trigger = trigger;
            item.menu = dropdown;
            item.list = list;
            
            item.onclick = function(){
                
                var herf = this.getAttribute('href', 2);
                
                // Set hidden input as selected item
                this.hiddenValue.setAttribute('value', herf);
                
                // Set trigger text as selected item
                this.trigger.firstChild.nodeValue = this.firstChild.nodeValue;
                
                // Close all menu after clicked
                closeLastMenu();
                
                return false;
            };
        }
        
        parent.menu = dropdown;
        parent.onmouseout = function(e){
            if(this.hide) {
                clearTimeout(this.hide);
            }
            
            if (!e) var e = window.event;
            
            var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
            
            while (reltg.tagName != 'BODY'){
                if (reltg == this){
                    return;
                }
                reltg = reltg.parentNode;
            }
            
            var menu = this.menu;
            
            this.hide = setTimeout(function(){
                                       menu.style.display = "none";
                                   }, 750);
        };
        
        trigger.menu = dropdown;
        
        trigger.onclick = function(){
            var state = this.getAttribute('rel');
            
            if (this.menu.style.display != "block") {
                closeLastMenu();
                this.menu.style.display = "block";
            } else {
                this.menu.style.display = "none";
            }
            
            return false;
        };
    }
    
    // Remove form
    removeForm(form);
}

function dateHint(gg, mm, yyyy){
    if(!document.getElementsByName(gg)[0]) return false;
    var day = document.getElementsByName(gg)[0];
    if(!document.getElementsByName(mm)[0]) return false;
    var month = document.getElementsByName(mm)[0];
    if(!document.getElementsByName(yyyy)[0]) return false;
    var year = document.getElementsByName(yyyy)[0];
    
    function on(){
        if (!this.value || this.value == 'gg' || this.value == 'mm' || this.value == 'yyyy') {
            this.style.color = "#000000";
            this.value = "";
        }
    }
    
    function off(){
        if (!this.value || this.value == 'gg' || this.value == 'mm' || this.value == 'yyyy') {
            this.style.color = "#cccccc";
            
            switch(this.getAttribute('name')) {
                case gg : 
                    this.value = 'gg';
                break;
                
                case mm : 
                    this.value = 'mm';
                break;
                
                case yyyy : 
                    this.value = 'yyyy'
            }
        }
    }
    
    if (!day.value || day.value == 'gg') {
        day.value = 'gg';
        day.style.color = "#cccccc";
        day.onclick = on;
        day.onfocus = on;
        day.onblur = off;
    }
    
    if (!month.value || month.value == 'mm') {
        month.value = 'mm';
        month.style.color = "#cccccc";
        month.onclick = on;
        month.onfocus = on;
        month.onblur = off;
    }
    
    if (!year.value || year.value == 'yyyy') {
        year.value = 'yyyy';
        year.style.color = "#cccccc";
        year.onclick = on;
        year.onfocus = on;
        year.onblur = off;
    }
}

function popup(id, width, height){
    if (!document.getElementById(id)) return false;
    var node = document.getElementById(id);
    
    node.onclick = function(){
        var link;
        
        if (this.getElementsByTagName('area')[0]) {
            link = this.getElementsByTagName('area')[0].getAttribute('href');
        } else {
            link = this.getAttribute('href');
        }
        win = window.open(link, id, "top=0, left=0, width=" + width + ", height=" + height +", resizable=no, titlebar=no, location=no, menubar=no, toolbar=no, scrollbars=no, status=no");
        
        
        return false;
    };
}

domLoad(function(){
    loopFade('hostess', 8000, 40);
    listIcon('rules');
    productsDescription('products', 'productsDescription');
    createForm('form');
    dateHint('birthDay', 'birthMonth', 'birthYear');
    dateHint('purDay', 'purMonth', 'purYear');
    popup('couponPromozionale', 400, 400);
    popup('map', 400, 400);
    popup('serial', 431, 316);
});
