function showGroup(id) {
    var group = $(id);
    if (group.hasClass('show')) {
        group.removeClass('show');
    }

    else {
        group.addClass('show');
    }

    return false;

}


/////////////////

var oldDropdown = null;
var dropdownTimer = null;
var dropdownDelay = 200;

function dropdown(dd) {

    // Get element
    var menu = $(dd);

    // Remove old
    if (oldDropdown != null) {
        $(oldDropdown).setStyle('display', 'none');
    }

    // Show new
    menu.setStyle('display', 'block');
    
    // Add events to sub items
    var links = menu.getElements("a");
    if (links) {
        links.each(function (link) {
            link.addEvent('mouseover', function() {
                clearTimeout(dropdownTimer);
            });

            link.addEvent('mouseleave', function() {
                hideDropdown();
            });
        });
    }

    oldDropdown = dd;
    clearTimeout(dropdownTimer);
}

function hideDropdown() {
    clearTimeout(dropdownTimer);
    dropdownTimer = setTimeout('removeDropdown()', dropdownDelay);
}

function removeDropdown() {
    if (oldDropdown != null) {
        $(oldDropdown).setStyle('display', 'none');
    }
}


/////////

var tabid = "ref-1";

function tabs(el) {

    // IE fix
    if (Browser.Engine.trident) el = $(el);

    // hide old
    if (tabid != null && $(tabid)) {
        $(tabid).setStyle('display', 'none');
        if (el.getParent().getParent().getElement('li[class*=active]')) {
            el.getParent().getParent().getElement('li[class*=active]').removeClass('active');
        }
    }

    var id = el.href.substr(el.href.indexOf('#')+1);
    $(id).setStyle('display', 'block');

    el.getParent().addClass('active');
    
    tabid = id;
    return false;
}

///////////

var main = null;
var mainEl = null;

var page = "page-0";
var pageEl = null;

function solution(el) {

    // IE fix
    if (Browser.Engine.trident) el = $(el);

    // Get link element
    var link = el.getElement('a');

    // Stop if not valid
    if (!link || link.href.indexOf('#')<0) {alert('no link');return;}

    // Get page id
    var id = link.href.substr(link.href.indexOf('#')+1);

    // Check for page or content
    if (id.indexOf('-', id.indexOf('-')+1)>0) {

        // Skip if the current page is active
        if (main == id) return;

        // Hide previous page
        if (main != null) {
            $(main).setStyle('display', 'none');
            $(mainEl).removeClass('active');
        }

        // Show new page
        $(id).setStyle('display', 'block');
        $(el).addClass('active');

        main = id;
        mainEl = el;
    }

    // Page
    else {

        // Skip if the current page is active
        if (page == id) return;

        // Hide previous page
        if (page != null) {
            if ($(page)) $(page).setStyle('display', 'none');
            if ($(pageEl)) $(pageEl).removeClass('active');
        }

        // Show new page
        $(id).setStyle('display', 'block');
        $(el).addClass('active');

        // Verify that we have one page active
        if (!$(id).getElement('li[class*=active]')) {

            // Find first, and select it
            if ($(id).getElement('li'))
                solution($(id).getElement('li'))
        }


        page = id;
        pageEl = el;
    }

}

/////////////////

window.addEvent('domready', function() {
    ImageView.init();


    // create buttons
    var elementCount = $('slideshow').getElements('div.element').length;
    if (elementCount > 1) {

        for (var i = 0; i < elementCount; i++) {
            $('buttons').grab(new Element('div', {
                'class': 'button' + ((i == 0) ? ' active' : ''),
                'onclick': 'mySlideShow.show(' + (i) + ')'
            }).grab(new Element('span', {
                'html': i+1
            })));
        }

        mySlideShow = new SlideShow('slideshow',{
            delay: 15000,
            transition: 'fadeThroughBackground',
            duration: 1500,
            autoplay: true
        });
    }

    if ($('contactFormExpandedLegend') && $('contactFormCollapsedLegend')) {

        // adding event for expanded contact form
        $('contactFormExpandedLegend').addEvent('click', function(event) {
            $('contactFormExpanded').hide();
            $('contactFormCollapsed').show();
        });

        // adding event for collapsed contact form
        $('contactFormCollapsedLegend').addEvent('click', function(event) {
            $('contactFormCollapsed').hide();
            $('contactFormExpanded').show();
        });
        
        // adding event for contact method selection
        $('targetTypeEmail').addEvent('change', function(event) {
            $('targetTypeText').set('html', 'Min e-post adresse er');
        });

        $('targetTypePhone').addEvent('change', function(event) {
            $('targetTypeText').set('html', 'Mitt telefonnummer er');
        });
    }
});


/////////////////

var preventMultipleSends = 0;

function submitContactForm() {
    var valid = true;

    // prevent multiple submits
    var foo = new Date;
    var unixtimeMS = foo.getTime();
    var unixtime = parseInt(unixtimeMS / 1000);

    if (preventMultipleSends >= unixtime)
        return false;

    // remove feedback
    if ($('feedback').isDisplayed()) $('feedback').hide();

    // verify freetext
    if ($('freetext').value.trim() == '') {
        valid = false;

        $('freetext').set('class', 'error');
        $('freetext').focus();
    }

    // email is selected as target
    if ($('targetTypeEmail').checked) {

        // verify email address
        if (!validateEmail($('target').value)) {
            valid = false;
            
            $('target').set('class', 'error');
            $('target').focus();
        }
    }
    
    // phone is selected as target
    else {
        
        // verify phone number
        if (!validatePhone($('target').value)) {
            valid = false;

            $('target').set('class', 'error');
            $('target').focus();
        }
    }

    // submits the form via ajax
    if (valid) {
        new Request.HTML({onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
            var feedback;

            // check respons
            switch (responseHTML) {

                case 'INVALID_TYPE':
                    feedback = 'Du må velge om du ønsker å bli kontaktet per telefon eller epost.';
                    break;

                case 'INVALID_PHONE':
                    feedback = 'Telefonnummeret du skrev inn er ugyldig.';
                    break;

                case 'INVALID_EMAIL':
                    feedback = 'Epost adressen du skrevet inn er ugyldig.';
                    break;

                case 'INVALID_TEXT':
                    feedback = 'Du må skrive inn noe i henvendelsesfeltet.';
                    break;

                case 'UNKNOWN_ERROR':
                    feedback = 'En ukjent feil oppstod. Meldingen kunne ikke sendes.';
                    break;

                case 'OK':
                    feedback = 'Meldingen er sendt. En av våre medarbeidere vil ta kontakt så snart som mulig.';
                    break;
            }

            // display feedback message
            $('feedback').set('class', 'feedback ' + (responseHTML == 'OK' ? 'success' : 'error'));
            $('feedback').set('html', feedback);
            $('feedback').show('inline-block');

            // clear form data
            $('targetTypeEmail').checked = true;
            $('target').value = '';
            $('freetext').value = '';

        }}).post('/json/contact', $('contactForm').toQueryString());

        preventMultipleSends = unixtime + 5;
    }

    return valid;
}

function verifyContactForm() {
//alert('check');

    // verify freetext
    if ($('freetext').value.trim() != '')
        if ($('freetext').hasClass('error'))
            $('freetext').removeClass('error');

    // email is selected as target
    if ($('targetTypeEmail').checked) {

        // verify email address
        if ($('target').hasClass('error') && validateEmail($('target').value))
            $('target').removeClass('error');
    }

    // phone is selected as target
    else {

        // verify phone number
        if ($('target').hasClass('error') && validatePhone($('target').value))
            $('target').removeClass('error');
    }

    // remove feedback
    if ($('feedback').isDisplayed()) $('feedback').hide();
}

function validateEmail(email) {
    var regexp = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    return regexp.test(email);
}

function validatePhone(phone) {
    var regexp = /^[0-9]{8,16}$/;
    return regexp.test(phone);
}
