$(function(){
    $('#logo').click(function(){
        if ( activePage == 'index' ) return false;
        activePage = 'index';
        $(".menu li a").removeClass('active');
        $.scrollTo( { top: 0, left: 0 }, 300, function(){
            $('#body').slideUp("normal", function(){
                $('#loading').show("fast");
                activePage = 'index';
                $.get('loadpage.php', {p: 'index'}, gotPage);
            });
        });
        return false;
    })
	$('.menu li a').click(function(){
        var a = this;
        if ( $(a).hasClass('active') ) return false;
        $('object').hide().siblings('.fake').show();
        $.scrollTo( { top: 0, left: 0 }, 300, function(){
            $('#body').slideUp("normal", function(){
                $('#loading').show("fast");
                activePage = $(a).attr('rel');
                $.get('loadpage.php', {p: $(a).attr('rel')}, gotPage);
            });
        });
        $(".menu li a").removeClass('active');
        $(".menu li a[rel=" + $(a).attr('rel') + "]").addClass('active');
        return false;
	});
    doneLoad();
    
});

var doneLoadHandlers = [];
function doneLoad() {
    for ( var handler in doneLoadHandlers ) {
        doneLoadHandlers[handler]();
    }
}

function scrollToContent() {
    $.scrollTo(".menu:first", 400);
}

function showObjects() {
    $('#body object').show().siblings('.fake').hide();
}
function flashStatus() {
    var oldclr = $('#cover').css('backgroundColor');
    var newclr = ( loggedIn ? '#55EE55' : '#EE5555' );
    $('#cover').css('backgroundColor', newclr).fadeIn(100, function(){
        $(this).fadeOut(100, function(){
            $(this).css('backgroundColor', oldclr);
        })
    });
}

doneLoadHandlers.push(scrollToContent);
doneLoadHandlers.push(showObjects);

function gotPage(data) {
    $('#loading').hide("normal", function(){
        if ( data == '404' ) {
            $('.menu li a').removeClass('active');
            activePage = '404';
            $.get('loadpage.php', {p: '404'}, gotPage);        
        } else {
            $('#body').html(data);
            $('#body object').hide()
                .siblings('.fake').show();
            $('#body').slideDown("normal", doneLoad);
        }
    });
}

/** Form validation **/
$(function(){
    $('form input[type=text], form textarea').focus(function(){
        $(this).addClass('hasFocus').removeClass('invalid');
        if ( $(this).val() == $(this).attr('placeholder') ) {
            $(this).val('').removeClass('default');
        }
    }).blur(function(){
        $(this).removeClass('hasFocus');
        fillInAlt();
        checkElement( this, false );
    });
    fillInAlt();
    setInterval(fillInAlt, 100);
})


function checkForm( form ) {
    var valid = true;
    $('textarea, input[type=text]', form).each(function(){
        valid = checkElement(this, true) && valid;
    })
        return valid;
}

function checkElement( element, defaultInvalid ) {
    var isDefault = $(element).val() == $(element).attr('placeholder');
    var thisValid = true &&
        ( !$(element).hasClass('required') || ( !(/^\s*$/).test($(element).val()) && ( !defaultInvalid || !isDefault ) ) ) &&
        ( !$(element).hasClass('date') || (/^(0?[1-9]|[1-2][0-9]|3[0-1])\/(0?[1-9]|1[0-2])$/).test($(element).val()) ) &&
        ( !$(element).hasClass('email') || ( !defaultInvalid && isDefault ) || (/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/).test($(element).val()) ) &&
        true;
    if ( !thisValid ) {
        $(element).addClass('invalid');
    }
    return thisValid;
}

function fillInAlt() {
    if ( 'placeholder' in document.createElement('input') ) return;
    $('form input[type=text], form textarea').each(function(){
        if ( !$(this).hasClass('hasFocus') && ( $(this).val() == '' || $(this).val() == $(this).attr('placeholder') ) && $(this).attr('placeholder') != '' ) {
            $(this).val($(this).attr('placeholder')).addClass('default');
        }
    });
}

