var panel = {

    current_left: 0,
    max_scroll: $('.portfolio_column').size()*147,
    client_refine: null,
    service_refine: null,
    panel_copy: null,
    move_val: 0,
    move_interval: 0,
    move_x: 50,
    factor: 100,
    browser_opacity: 0,

    init: function(i) {
        panel.next(1);
        panel.prev(1);
        panel.move_val = panel.max_scroll*2;
        panel.panel_copy = $("#portfolio_list .portfolio_list_container:eq(0)").clone(true).insertAfter("#portfolio_list .portfolio_list_container:eq(0)");
        panel.panel_copy.css('left',panel.max_scroll+'px');
        panel.extract_num();
        panel.setup();
        panel.refine_persistance();
    },

    setup : function() {

        $(".portfolio_list_container").css('width',panel.max_scroll+'px');

		panel.browser_opacity = ($.browser.msie) ? 0.8 : 1;

	$('.portfolio_item p a').mouseover(function() {
		//alert( 'mouseover: '+ $(this).css("opacity") );
		$(this).animate({
			opacity: 0
		},'fast')}).mouseout(function() {
			//alert( 'mouseout: '+ $(this).css("opacity") );
		$(this).animate({
			opacity: panel.browser_opacity
		},'slow');
	});

	if($.browser.msie)
	{
		$('.portfolio_item p a').animate({opacity: 0.8},1);
	}

        $('#refinenav_services .close').click(function() {
            $('#refinenav_services').fadeOut("normal");
        });

        $('#refinenav_clients .close').click(function() {
            $('#refinenav_clients').fadeOut("normal");
        });

    },

    move: function(i) {

        if (i=='previous')
        {
            if ($("#portfolio_list .portfolio_list_container:eq(0)").offset().left > $(window).width())
            {
                var iNum = panel.extract_left($("#portfolio_list .portfolio_list_container:eq(0)"));
                $("#portfolio_list .portfolio_list_container:eq(0)").css('left',(iNum-panel.move_val)+'px');
                // $("#output").append('Original Moved LEFT, Pos: '+ iNum +' - '+(iNum-panel.move_val)+'<br />');
            }
            else if (panel.panel_copy.offset().left > $(window).width())
            {
                var iNum = panel.extract_left(panel.panel_copy);
                panel.panel_copy.css('left',(iNum-panel.move_val)+'px');
                // $("#output").append('Copy Moved LEFT, Pos: '+ iNum +' - '+(iNum-panel.move_val)+'<br />');
            }
        }
        else if (i=='next')
        {
            if ($("#portfolio_list .portfolio_list_container:eq(0)").offset().left <= (panel.max_scroll*-1))
            {
                var iNum = panel.extract_left($("#portfolio_list .portfolio_list_container:eq(0)"));
                $("#portfolio_list .portfolio_list_container:eq(0)").css('left',(iNum+panel.move_val)+'px');
                // $("#output").append('Original Moved LEFT, Pos: '+ iNum +' - '+(iNum+panel.move_val)+'<br />');
            }
            else if (panel.panel_copy.offset().left <= (panel.max_scroll*-1))
            {
                var iNum = panel.extract_left(panel.panel_copy);
                panel.panel_copy.css('left',(iNum+panel.move_val)+'px');
                // $("#output").append('Copy Moved LEFT, Pos: '+ iNum +' - '+(iNum+panel.move_val)+'<br />');
            }
        }
    },

    scroll: function(i) {

        //$('#bubble').fadeOut(1500);

        if (i=='previous')
        {
            panel.move('previous');
            $("#portfolio_list").animate( { "left": (panel.current_left+panel.move_x)+"px" }, { queue:false, duration:1, easing: "linear" } );
            $('#message_container').hide();
            panel.extract_num();
        }
        else if (i=='next')
        {
            panel.move('next');
            $("#portfolio_list").stop().animate( { "left": (panel.current_left-panel.move_x)+"px" }, { queue:false, duration:1, easing: "linear" } );
            $('#message_container').hide();
            panel.extract_num();
        }
    },

    prev: function(i) {

        $("#portfolionav #previous a").mouseover(function (e) {
            clearInterval(panel.move_interval);
            panel.move_interval = setInterval("panel.scroll('previous')",25);
        }).mouseout(function (e) {
            clearInterval(panel.move_interval);
        });
    },

    next: function(i) {

        $("#portfolionav #next a").mouseover(function (e) {
            clearInterval(panel.move_interval);
            panel.move_interval = setInterval("panel.scroll('next')",25);
        }).mouseout(function (e) {
            clearInterval(panel.move_interval);
        });
    },

    extract_left: function(obj) {

        var re = /px/;
        var aNum = obj.css("left").replace(re,'');
        iNum = aNum - 0; // cast to int
        return iNum;
    },

    extract_num: function() {

        var re = /px/;
        var aNum = $("#portfolio_list").css("left").replace(re,'');
        iNum = aNum - 0; // cast to int
        panel.current_left = iNum;
    },

    refine_persistance: function() {

        if ($.cookie('refine'))
        {
            // alert('got refine: '+ $.cookie('refine'));
            var sClass = $.cookie('refine');
            var re = /-/;
            var aClass = sClass.split(re);

            for ( var i in aClass )
            {
                re = /client_/;
                var aMatch = aClass[i].match(re);

                if (aMatch) // Clients
                {
                    var lnk = $('#refinenav_clients a.'+ aClass[i]);
                    panel.refine(aClass[i],lnk,1);
                }
                else
                {
                    var lnk = $('#refinenav_services a.'+ aClass[i]);
                    panel.refine(aClass[i],lnk,1);
                }
            }
        }
    },

    refine: function(el,lnk,no_fade) {

        if (!no_fade) $('#bubble').fadeOut(1500);

        el = el.replace(/\"/g, "");

        if (lnk) panel.link(el,lnk);

        var sClass = sSave = '';
        if (panel.client_refine)
        {
            sClass += "."+panel.client_refine;
            sSave += panel.client_refine;
        }
        if (panel.client_refine && panel.service_refine)
        {
            sClass += " "
            sSave += "-";
        }
        if (panel.service_refine)
        {
            sClass += "."+panel.service_refine;
            sSave += panel.service_refine;
        }
        if (!sClass) el = 'none';

        $.cookie('refine', sSave, { path: '/' });

        $(".portfolio_item").each(function (i) {
            if (!$(this).hasClass(el))
            {
                $('p a',this).animate({
                    opacity: panel.browser_opacity
                },'slow');

		$('.portfolio_detail', this).css('display','none');

                $('p a',this).unbind('mouseout').unbind('mouseover').mouseover(function() {
                    $(this).animate({
                            opacity: 0
                    },'fast')}).mouseout(function() {
                    $(this).animate({
                            opacity: panel.browser_opacity
                    },'slow');
                });
            }
        });

        if (!sClass)
        {
            $('#message_container').hide();
            return false;
        }

        $(sClass).each(function (i) {
            $('p a',this).animate({
                opacity: 0
	    	},'fast').unbind('mouseout').unbind('mouseover');

	    $('.portfolio_detail', this).css('display','block');
	    if ($.browser.msie && $.browser.version=='6.0') $('.portfolio_detail').css('opacity',0.8);

            if (no_fade != 1)
            {
                if ( $('p a',this).parent().offset().left > $(window).width() )
                {
                    // Highlight Scroll Right
                    $('#message_container').show();
                }
                else if ( $('p a',this).parent().offset().left < 0 )
                {
                    // Highlight Scroll Left
                    $('#message_container').show();
                }
            }
        });
    },

    link: function(el,lnk) {

        var re = /client_/;
        var aMatch = el.match(re);

        if (aMatch) // Clients
        {
            panel.client_refine = (panel.client_refine == el) ? null : el;
            $('#refinenav_clients ul li a').removeClass("grey").blur();
            if (panel.client_refine)
            {
                lnk.addClass("grey");
                $('#refine_breadcrumb ul li:last').css('display','block').html('<span>Client: </span><a id="client_refine_a" href=\"javascript: void(0);\">'+ lnk.html() +'</a>');

                $('#refine_breadcrumb ul li:last a').click(function() {
                    $('#refinenav_clients ul li a').removeClass("grey");
                    $('#refine_breadcrumb ul li:last').css('display','none').html('');
                    panel.client_refine = null;
                    panel.refine('"'+ el +'"',null,1);
                });
            }
            else
            {
                lnk.removeClass("grey").blur();
                $('#refine_breadcrumb ul li:last').css('display','none').html('');
            }
        }
        else
        {
            panel.service_refine = (panel.service_refine == el) ? null : el;
            $('#refinenav_services ul li a').removeClass("grey").blur();
            if (panel.service_refine)
            {
                lnk.addClass("grey");
                $('#refine_breadcrumb ul li:first').css('display','block').html('<span>Service: </span><a id="service_refine_a" href=\"javascript: void(0);\">'+ lnk.html() +'</a>' );

                $('#refine_breadcrumb ul li:first a').click(function() {
                    $('#refinenav_services ul li a').removeClass("grey");
                    $('#refine_breadcrumb ul li:first').css('display','none').html('');
                    panel.service_refine = null;
                    panel.refine('"'+ el +'"',null,1);
                });
            }
            else
            {
                lnk.removeClass("grey").blur();
                $('#refine_breadcrumb ul li:first').css('display','none').html('');
            }
        }

        if($('#refinenav_services').is(':visible'))
        {
            $('#refinenav_services').fadeOut("normal");
        }

        if($('#refinenav_clients').is(':visible'))
        {
            $('#refinenav_clients').fadeOut("normal");
        }
    }
};