﻿

var nav = {
    item        : Object,
    init        : function(){
        this.item = $('#nav li.more a');
        this.run();
    },
    run         : function(){
        this.item.click(function(e){
            var target = $(this);
                if($('#nav li.on').length > 0){
                    if(target.parent().is('h5')){
                        $('#nav li.on ul').slideUp('normal', 'easeOutExpo', function(){
                            if(!target.parents('li').hasClass('on')){
                                $('#nav li.on').removeClass('on');
                                nav.switchNav(target.parents('li'));
                            }else{
                                $('#nav li.on').removeClass('on');
                            }
                        });
                        e.preventDefault();
                    }
                }else{
                    nav.switchNav(target.parents('li'))
                    e.preventDefault();
                }
        });
    },
    switchNav   : function(target){
        target.addClass('on').find('ul').slideDown('normal', 'easeOutExpo');
    }
}

var form = {
    submit  : Object,
    init    : function(){
        this.submit = $('form input:submit');
        this.run();
    },
    run     : function(){
        this.submit.after('<a href="#" class="jsButton">'+this.submit.val()+'</a>');
        $('.jsButton').live('click', function(e){
            if(form.isValid()){
                $(this).siblings('input:submit').click();
            }
            e.preventDefault();
        });
    },
    isValid : function(){

        var valid = true;

        $('form input.required, form textarea.required').each(function(){
            if($(this).val() == ''){
                $(this).addClass('error')
                $('label[for='+$(this).attr('id')+']').addClass('error');
                valid = false;
            }else{
                $(this).removeClass('error')
                $('label[for='+$(this).attr('id')+']').removeClass('error');
            }
        });

        $('form select.required').each(function(){
            if($(this).attr('selectedIndex') == 0){
                $(this).addClass('error')
                $('label[for='+$(this).attr('id')+']').addClass('error');
                valid = false;
            }else{
                $(this).removeClass('error')
                $('label[for='+$(this).attr('id')+']').removeClass('error');
            }
        });

        if(!valid){
            $('form p.error').remove();
            $('form').prepend('<p class="error">Please correct the following fields before continuing:</p>');
            return false;
        }else{
            return true;
        }
    }
}


var banner = {
	banner		: Object,
	slides		: Object,
	timer		: Object,
	locked		: Boolean,
	init		: function(){
		this.banner = $('#banner');
		this.slides = $('.slide');
        this.locked = false;
	    this.change($('.slide:first-child'))

        if(this.slides.length > 1){
		    this.navInit()
		    this.startTimer();
        }
	},
	clearTimer	: function(){
		clearInterval(banner.timer)
	},
	startTimer	: function(){
		this.timer = setInterval(function(){
			banner.next();
		}, 10000)				
	},
	resetTimer	: function(){
		banner.clearTimer()
		banner.startTimer()
	},
	next		: function(){
		var newSlide = ($('.slide.on').is(':last-child')) ? $('.slide:first-child') : $('.slide.on').next();
		this.change(newSlide);
	},
	prev		: function(){
		var newSlide = ($('.slide.on').is(':first-child')) ? $('.slide:last-child') : $('.slide.on').prev();
		this.change(newSlide);
	},
	change		: function(newSlide){
		if(!banner.locked){
			banner.locked = true;
			if($('.slide.on')){
				$('.slide.on').fadeOut(1000, function(){
					$(this).removeClass('on');
				})
			}
			newSlide.fadeIn(1000, function(){
				$(this).addClass('on');
				banner.locked = false;
			})
		}
	},
	navInit		: function(){
		this.banner.prepend('<a href="#" id="prev">Prev</a><a href="#" id="next">Next</a>')
					
		// Next
		$('#next').hover(function(){
			$(this).stop(true, false).animate({
				right:'0'
			}, 'slow', 'easeOutExpo');
		}, function(){
			$(this).stop(true, false).animate({
				right:'-40px'
			}, 'slow', 'easeOutExpo');
		});				
		$('#next').live('click', function(e){
			if(!banner.locked){
				banner.next();
			}
			e.preventDefault();
		});
		
		// Prev
		$('#prev').hover(function(){
			$(this).stop(true, false).animate({
				left:'0px'
			}, 'slow', 'easeOutExpo');
		}, function(){
			$(this).stop(true, false).animate({
				left:'-40px'
			}, 'slow', 'easeOutExpo');
		});	
		$('#prev').live('click', function(e){
			if(!banner.locked){
				banner.prev();
			}
			e.preventDefault();
		});
		
		// Banner Hover
		this.banner.hover(function(){
			banner.clearTimer();
		}, function(){
			banner.startTimer();
		})
	}
}


var tabs = {
    tabHolder   : Object,
    init        : function(){
        this.tabHolder = $('#tabs');
        this.run();
    },
    run     : function(){
        this.tabHolder.tabs();
    }
}


var fontIncrease = {
    button      : Object,
    resize      : Object,
    count       : Number,
    init        : function(){
        this.button = $('.increaseFont');
        this.resize = $('#content #mainContent p, #content #mainContent ul, #content #mainContent ol, #content #mainContent address')
        this.count = 0;
        this.run();
    },
    run         : function(){
        this.button.click(function(){
            if(fontIncrease.count < 3){
                var currentFontSize = fontIncrease.resize.css('font-size');
                var currentFontSizeNum = parseFloat(currentFontSize, 10);
                var newFontSize = currentFontSizeNum*1.2;
                fontIncrease.resize.css('font-size', newFontSize);

                var currentLineHeight = fontIncrease.resize.css('line-height');
                var currentLineHeightNum = parseFloat(currentLineHeight, 10);
                var newLineHeight = currentLineHeightNum+2;
                fontIncrease.resize.css('line-height', newLineHeight+'px');
                fontIncrease.count ++;
            }else{
                fontIncrease.resize.css('font-size', '12px');
                fontIncrease.resize.css('line-height', '20px');
                fontIncrease.count = 0;
            }
            return false;
        });
    }
}


function initialize(){
    nav.init();
    form.init();
    banner.init();
    tabs.init();
    fontIncrease.init();
}

$(function(){
    initialize();
});
