var transitionEffectDuration = 2000;
var transitionInterval = 5000;

$(document).ready(function(){
    $(".menuItem").hover(
        function(){$(this).addClass("menuItemSelected")},
        function(){$(this).removeClass("menuItemSelected")}
    );
    
    $(".footerItem").hover(
        function(){$(this).addClass("footerItemSelectedSignUP")},
        function(){$(this).removeClass("footerItemSelectedSignUP")}
    );
	$(".newsletterItem").hover(
        function(){$(this).addClass("newsletterItemSelected")},
        function(){$(this).removeClass("newsletterItemSelected")}
    );
	
	$(".footerActivecolor").hover(
        function(){$(this).addClass("footerActivecolorSelected")},
        function(){$(this).removeClass("footerActivecolorSelected")}
    );
    
    $(".signupItem").hover(
        function(){$(this).addClass("signupItemSelected")},
        function(){$(this).removeClass("signupItemSelected")}
    );
    
    setHorizontalPosition();
    $(window).resize(setHorizontalPosition);
    
    showNextImage();
    if ($(".slideShowImage").length > 0)
        setTimeout(slideShow,transitionInterval+transitionEffectDuration);

    $("#homeRightArrow").click(function(){
        slideShowEnabled = false; 
        showNextImage()
    });
    $("#homeLeftArrow").click(function(){
        slideShowEnabled = false; 
        showPrevImage()
    });
    
    
    var projects = new Array();
    $("a.portfolioImage[project]").each(function(){
        var project = $(this).attr("project"), i =0;
        for (;i < projects.length ; i++) if (projects[i] == project) break;
        if (i==projects.length) projects.push(project);
    });

    var activeTab = 1;
    if (document.location.hash=="#formal") activeTab = 1;
    if (document.location.hash=="#casual") activeTab = 2;
    if (document.location.hash=="#eclectic") activeTab = 3;
    if (document.location.hash=="#individual") activeTab = 4;
    if (document.location.hash=="#beforeafter") activeTab = 5;
    
    
    $("a.tabLink[tabid]").click(function(e){
        activeTab = $(this).attr("tabid");
        $("div.sectionHolder[tabid!="+activeTab+"]").fadeOut();
        $("div.sectionHolder[tabid="+activeTab+"]").fadeIn();
        $(".subLinkHolder[tabid!="+activeTab+"]").removeClass("subLinkHolderSelected")
        $(".subLinkHolder[tabid="+activeTab+"]").addClass("subLinkHolderSelected")
    });

    $(".subLinkOuterHolder").hover(
        function(){
            $(this).children(".subLinkHolder").addClass("subLinkHolderSelected")
        },
        function(){
            $(this).children(".subLinkHolder[tabid!="+activeTab+"]").removeClass("subLinkHolderSelected")
        }
    );
        
    $("div.sectionHolder[tabid="+activeTab+"]").show();
    $(".subLinkHolder[tabid="+activeTab+"]").addClass("subLinkHolderSelected")



    
    for(var i = 0 ; i< projects.length; i++)
        $("a.portfolioImage[project="+projects[i]+"]").lightBox();
        
    
    
    scrollInit();  
});



$(window).load(function(){
    scrollInit();  
})

var scrollStart;
var scrollEnd;
var scrollPosition = 0;
var scrollLastPosition = 0;
var scrollInnerHeight;
var scrollOuterHeight;
//var scrollerHieght = $("#scroller").height()
var scrollerHieght = 27;

function scrollInit(){
    scrollInnerHeight = $("#innerScrollHolder").height();
    scrollOuterHeight = $("#outerScrollHolder").height();
    if (scrollInnerHeight>scrollOuterHeight)
    {
        //bind events and show scroll
        $(".innerContent").unbind("mousewheel",wheelHandler).mousewheel(wheelHandler,true);
        $("#scroller").show().unbind("mousedown",beginScroll).bind("mousedown",beginScroll);
        $(document).unbind("mouseup",endScroll).bind("mouseup",endScroll);
        if (document.getElementById("scroller")) document.getElementById("scroller").onmousedown = preventer;
        if (document.getElementById("scrollerHolder")) document.getElementById("scrollerHolder").onmousedown = preventer;
        scrollStart = parseInt($("#scroller").css("top"));
        scrollEnd = $("#outerScrollHolder").height() - scrollerHieght;
        $("#scrollerHolder").unbind("mousedown",scrollClickHandler).bind("mousedown",scrollClickHandler);
    }
    else
    {
        //scroll not needed, unbind and hide
        $(".innerContent").unbind("mousewheel",wheelHandler);
        $("#scroller").hide().unbind("mousedown",beginScroll);
        $(document).unbind("mouseup",endScroll).bind("mouseup",endScroll);
        $("#scrollerHolder").unbind("mousedown",scrollClickHandler);
    }
}

var preventer = function(event){
    if (event && event.preventDefault) 
        event.preventDefault(); 
    return false;
}

function beginScroll(e){
    e.stopImmediatePropagation();
    e.stopPropagation();
    $("#scroller").blur();
    scrollLastPosition = e.pageY;
    scrollInnerHeight = $("#innerScrollHolder").height();
    scrollOuterHeight = $("#outerScrollHolder").height();
    if (scrollInnerHeight>scrollOuterHeight){
        $(document).bind("mousemove",scrollHandler);
        $("*").disableTextSelect();
    }
}

function endScroll(e){
    $(document).unbind("mousemove",scrollHandler);
    $("*").enableTextSelect();
    $("#scroller").disableTextSelect();
}

function wheelHandler(eve,delta){
    scrollInnerHeight = $("#innerScrollHolder").height();
    scrollOuterHeight = $("#outerScrollHolder").height();
    if (scrollInnerHeight<=scrollOuterHeight) return;

    var currentTop = parseInt($("#innerScrollHolder").css("top"));
    var newTop = currentTop + delta * 30;
    if (newTop>0) newTop = 0;
    if (newTop< scrollOuterHeight - scrollInnerHeight) newTop = scrollOuterHeight - scrollInnerHeight;
    scrollPosition = parseInt(newTop * scrollEnd / (scrollOuterHeight - scrollInnerHeight));

    $("#innerScrollHolder").css("top", newTop + "px");
    $("#scroller").css("top",(scrollPosition+ scrollStart)+"px");
//    $("#innerScrollHolder").trigger('scroll');

    return false;
}

function scrollHandler(eve){
    eve.stopImmediatePropagation();
    eve.stopPropagation();
    var offset = eve.pageY - scrollLastPosition;
    scrollPosition = scrollPosition + offset;
    scrollLastPosition = eve.pageY;
    if (scrollPosition<0){
        $("#innerScrollHolder").css("top","0px");
        $("#scroller").css("top",(scrollStart)+"px");
    }
    else if ((scrollPosition + offset)>(scrollEnd)){
        $("#scroller").css("top",(scrollEnd+scrollStart)+"px");
        $("#innerScrollHolder").css("top",parseInt(scrollOuterHeight - scrollInnerHeight)+"px");
    }
    else{
        $("#innerScrollHolder").css("top",parseInt((scrollOuterHeight - scrollInnerHeight) * (scrollPosition/(scrollOuterHeight - scrollerHieght)))+"px");
        $("#scroller").css("top",((scrollPosition) + scrollStart)+"px");
    }
    $("#innerScrollHolder").trigger('scroll');

    return false;
}

function stopPropagation(e){
    e.stopImmediatePropagation();
    e.stopPropagation();    
}

function scrollClickHandler(e){
    e.stopImmediatePropagation();
    e.stopPropagation();    
    if (e.pageY - $(this).offset().top - scrollStart<0) return;
    scrollPosition = e.pageY - $(this).offset().top - scrollStart-8;
    if (scrollPosition<0){
        $("#innerScrollHolder").css("top","0px");
        $("#scroller").css("top",(scrollStart)+"px");
    }
    else if ((scrollPosition)>(scrollEnd)){
        $("#scroller").css("top",(scrollEnd+scrollStart)+"px");
        $("#innerScrollHolder").css("top",parseInt(scrollOuterHeight - scrollInnerHeight)+"px");
    }
    else{
        $("#innerScrollHolder").css("top",parseInt((scrollOuterHeight - scrollInnerHeight) * (scrollPosition/(scrollOuterHeight - scrollerHieght)))+"px");
        $("#scroller").css("top",((scrollPosition) + scrollStart)+"px");
    }
}

function showNextImage(){
    if (!inTransition){
        inTransition = true;
        var nextImage = $(".slideShowImage:visible").next(".slideShowImage");
        if (nextImage.length==0) nextImage = $(".slideShowImage:first");
        $(".slideShowImage:visible").fadeOut(transitionEffectDuration);
        nextImage.fadeIn(transitionEffectDuration);
        setTimeout(resetInTransition,transitionEffectDuration)
    }
}

function showPrevImage(){
    if (!inTransition){
        inTransition = true;
        var nextImage = $(".slideShowImage:visible").prev(".slideShowImage");
        if (nextImage.length==0) nextImage = $(".slideShowImage:last");
        $(".slideShowImage:visible").fadeOut(transitionEffectDuration);
        nextImage.fadeIn(transitionEffectDuration);
        setTimeout(resetInTransition,transitionEffectDuration)
    }
}

function resetInTransition(){
    inTransition = false;
}

var inTransition = false;
var slideShowEnabled = true;
function slideShow(){
    if (slideShowEnabled){
        showNextImage();
        setTimeout(slideShow, transitionInterval + transitionEffectDuration);      
    }
}

function ___getPageSize() {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
};

function setHorizontalPosition(){
    var offset = ___getPageSize()[3]/2 - 354;
    document.getElementById("outerHolder").style.paddingTop = (offset < 0 ? 0 : offset) + "px"
}




