// JavaScript Document
Object.extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}
var Class = {
    create: function() {
        return function() { this.ini.apply(this, arguments); }
    }
}
$(document).ready(function(){
	        $(".menu").children("li").hover(
	            function(){
	                $(".sub_menu").hide();
		            $(this).find(".sub_menu").show()	
	            },
	            function(){
		            $(this).find(".sub_menu").hide();
	            }
	        );
	        items = $(".title").length;
	        titleWidth = 50;
	        lastBlock = $("#a1");
            maxWidth =  document.documentElement.clientWidth-(titleWidth*items-43);
            minWidth = 50;
	        $(".accordion #a1").css("width",maxWidth+"px");
	        window.onresize=function(){
		        maxWidth = document.documentElement.clientWidth-(titleWidth*items-43);
		        lastBlock.css("width",maxWidth+"px");
		        if(document.documentElement.clientWidth<=1000) lastBlock.css("width",1000-(titleWidth*items-43)+"px");
		        if($.browser.msie==true && $.browser.version==6){
			        var width=document.documentElement.clientWidth<=1000?"1000px":"100%";
			        $("#header, #bannerWrap, #container, #footer, #banner").css("width",width);
		        }
	        }
            $(".accordion ul li span").click(function(){
		        $(".accordion ul li span div").removeClass("show");
		        $(this).find("div").addClass("show");
                $(lastBlock).animate({width: minWidth+"px"}, { queue:false, duration:400 });
		        $(this).animate({width: maxWidth+"px"}, { queue:false, duration:400});
		        lastBlock = $(this);
            });
            nav.init();
            anchorslide.aslide();
		    $(window).scroll(function(){
			    $(document).sidebarfixed();
			    $(document).gotopfixed();
		    });
		    $(window).resize(function(){
			    $(document).sidebarfixed();
			    $(document).gotopfixed();
		    });
		    $(window).load(function(){
			    $(document).sidebarfixed();
			    $(document).gotopfixed();
		    });
        
});


//		锚链接平滑移动
var anchorslide=Class.create();
Object.extend(anchorslide,{
    aslide : function () {
		$("a[href*='#']").click(function() {
		    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
			    var $target = $(this.hash);
			    $target = $target.length && $target || $("[name=" + this.hash.slice(1) + "]");
			    if ($target.length){
			        if(this.hash){
				        var targetOffset = $target.offset().top;
   				        $("html,body").animate({
    				        scrollTop: targetOffset
	    		        },
		    	        10);
			        }
			        else{
   				        $("html,body").animate({
    				        scrollTop: 0
	    		        },
		    	        10);
				        return false;
				    }
			    }
			}
		});	
    }
});


//导航
var nav=Class.create();
Object.extend(nav,{
    //头初始化
    header : function () {

        var url=location.href.toLowerCase();
	        var isnew = url.indexOf("/news/")>0 || url.indexOf("/tech/")>0,isinternal=url.indexOf("/internal")>0,iscase=url.indexOf("/cases/")>0,isserv=url.indexOf("/service/")>0,isabout=url.indexOf("/about/")>0, isclient=url.indexOf("/client/")>0, iscult=url.indexOf("/culture/")>0, isjoin=url.indexOf("/join/")>0;
	        var selObj=0;
	        if (isnew>0 && selObj==0) {
		        $(".news").addClass("newsSelt");
		        $(".sidebar1 li.item1 > a").addClass("current");
		        $(".sidebar1 li.item1 > ul").show();
		        selObj=1;
	        }
	        else if (isinternal>0 && selObj==0) {
		        $(".internal").addClass("newsSelt");
		        $(".sidebar1 li.item1 > a").addClass("current");
		        $(".sidebar1 li.item1 > ul").show();
		        selObj=1;
	        }
	        else if (iscase>0 && selObj==0) {
		        $(".cases").addClass("casesSelt");
		        $(".sidebar1 li.item3 > a").addClass("current");
		        $(".sidebar1 li.item3 > ul").show();
		        selObj=1;
	        }
	        else if (isserv>0 && selObj==0) {
		        $(".service").addClass("serviceSelt");
		        $(".sidebar1 li.item2 > a").addClass("current");
		        $(".sidebar1 li.item2 > ul").show();
		        selObj=1;
	        }
	        else if (isabout>0 && selObj==0) {
		        $(".about").addClass("aboutSelt");
		        $(".sidebar1 li.item4 > a").addClass("current");
		        $(".sidebar1 li.item4 > ul").show();
		        selObj=1;
	        }
	        else if (isclient>0 && selObj==0) {
		        $(".clit").addClass("clitSelt");
		        $(".sidebar1 li.item5 > a").addClass("current");
		        selObj=1;
	        }
	        else if (iscult>0 && selObj==0) {
		        $(".cult").addClass("cultSelt");
		        $(".sidebar1 li.item6 > a").addClass("current");
		        $(".sidebar1 li.item6 > ul").show();
		        selObj=1;
	        }
	        else if (isjoin>0 && selObj==0) {
		        $(".join").addClass("joinSelt");
		        $(".sidebar1 li.item7 > a").addClass("current");
		        $(".sidebar1 li.item7 > ul").show();
		        selObj=1;
	        }
	        else{
		        $(".def").addClass("defSelt");
		        selObj=1;
	        }
    },
    //sidebar1
    sideBar :function () {
        $(".sidebar1 li.item > a").click(
            function () {
                return true;
                if ($(this).parent().find("ul").html()) {
                    $(".sidebar1 li.item > a").removeClass("current");
                    $(this).addClass("current");
                    $(".sidebar1 li.item ul").hide();
                    $(this).parent().find("ul").fadeIn("slow");
                    return(false);
                }
            }
        );
    },
    //sidebar1 subnav 默认选项
    subNav1 :function () {
        var urlname=location.pathname.toLowerCase();
        var filename=urlname.substring(1);
        var pagename=filename.substring(filename.indexOf("/")+1,filename.indexOf("."));
        if (pagename!="") {
            $(".sidebar1 li."+pagename).addClass("current");
            if(filename.substring(0,filename.indexOf("/"))=="cases"){
                $(".sidebar1 li.t"+filename.substring(filename.indexOf("/")+2,filename.indexOf("/")+3)).addClass("current");
            }else if (filename.substring(0,filename.indexOf("/"))=="news") {
                $(".sidebar1 li.news").addClass("current");
            }else if (filename.substring(0,filename.indexOf("/"))=="tech") {
                $(".sidebar1 li.tech").addClass("current");
            }else if (filename.substring(0,filename.indexOf("/"))=="internal") {
                $(".sidebar1 li.internal").addClass("current");
            }else if (filename.substring(0,filename.indexOf("/"))=="culture") {
                $(".sidebar1 li.culture").addClass("current");
            }else if (filename.substring(0,filename.indexOf("/"))=="join") {
                $(".sidebar1 li.join").addClass("current");
            }else if(filename.substring(0,filename.indexOf("/"))=="service"){
                $(".sidebar1 li.s"+filename.substring(filename.indexOf("/")+2,filename.indexOf("/")+3)).addClass("current");
                if (filename.indexOf("s8")>0) {
                    $(".sidebar1 li.artmedia").addClass("current");
                }
            }
        }
    },
    //sidebar1 三级菜单
    servNav :function () {
        $(".sidebar1 li.item li").hover(
            function () {
                $(this).addClass("hover");
                $(this).find("p").show();
            },
            function () {
                $(this).removeClass("hover");
                $(this).find("p").hide();
            }
        );
    },

//initialization
    init : function () {
        this.header();
        this.sideBar();
        this.subNav1();
        this.servNav();
    }
});


//侧边栏固定
$.fn.sidebarfixed=function(){
	if ($("#moving")) {
	    var topdistance = $(window).scrollTop();
	    $("#moving").css("top",topdistance-$("#header").height()-$("#banner").height()-7+'px');
	    if(topdistance > $("#header").height()+$("#banner").height())
	    {
		    $("#steady").hide();
		    $("#moving").show();
	    }
	    else
	    {
		    $("#steady").show();
		    $("#moving").hide();
	    }
	}
}

//回顶部固定
$.fn.gotopfixed=function(){
	if ($("a.gotop")) {
	    var topdistance = $(window).scrollTop();
	    $("a.gotop").css("top",topdistance-$("#header").height()-$("#banner").height()-7+$(window).height()*0.75+'px');
	    if(topdistance>$("#header").height()+$("#banner").height()+7){
	        $("a.gotop").fadeIn(1000);
	    }
	    else{
	        $("a.gotop").fadeOut(1000);
	    }
	}
}



function InitNav() {
    $(".subLeftNavList").css("display","none");
	$(".subLeftNavList").each(function(){
		if($(this).prev().attr("class") == "select"){
				$(this).css("display","block");
			}			   
	});
	$(".subLeftNavList").prev().click(function(){
		$(".subLeftNavList").css("display","none");	
		$(this).next().css("display","block");								
	});
	
	$(".slidedown").css("display","none");
	$(".slidedown:eq(0)").css("display","block");
	$(".bar_serv").each(function(){
		$(this).click(function(){
			$(".slidedown").slideUp("fast");
			$(this).next().slideDown("fast");				   
		});							 
	});
}


(function($) {

    $.fn.lazyload = function(options) {
        var settings = {
            threshold    : 0,
            failurelimit : 0,
            event        : "scroll",
            effect       : "show",
            container    : window
        };
                
        if(options) {
            $.extend(settings, options);
        }

        /* Fire one scroll event per scroll. Not one scroll event per image. */
        var elements = this;
        if ("scroll" == settings.event) {
            $(settings.container).bind("scroll", function(event) {
                
                var counter = 0;
                elements.each(function() {
                    if ($.abovethetop(this, settings) ||
                        $.leftofbegin(this, settings)) {
                            /* Nothing. */
                    } else if (!$.belowthefold(this, settings) &&
                        !$.rightoffold(this, settings)) {
                            $(this).trigger("appear");
                    } else {
                        if (counter++ > settings.failurelimit) {
                            return false;
                        }
                    }
                });
                /* Remove image from array so it is not looped next time. */
                var temp = $.grep(elements, function(element) {
                    return !element.loaded;
                });
                elements = $(temp);
            });
        }
        
        this.each(function() {
            var self = this;
            
            /* Save original only if it is not defined in HTML. */
            if (undefined == $(self).attr("original")) {
                $(self).attr("original", $(self).attr("src"));     
            }

            if ("scroll" != settings.event || 
                    undefined == $(self).attr("src") || 
                    settings.placeholder == $(self).attr("src") || 
                    ($.abovethetop(self, settings) ||
                     $.leftofbegin(self, settings) || 
                     $.belowthefold(self, settings) || 
                     $.rightoffold(self, settings) )) {
                        
                if (settings.placeholder) {
                    $(self).attr("src", settings.placeholder);      
                } else {
                    $(self).removeAttr("src");
                }
                self.loaded = false;
            } else {
                self.loaded = true;
            }
            
            /* When appear is triggered load original image. */
            $(self).one("appear", function() {
                if (!this.loaded) {
                    $("<img />")
                        .bind("load", function() {
                            $(self)
                                .hide()
                                .attr("src", $(self).attr("original"))
                                [settings.effect](settings.effectspeed);
                            self.loaded = true;
                        })
                        .attr("src", $(self).attr("original"));
                };
            });

            /* When wanted event is triggered load original image */
            /* by triggering appear.                              */
            if ("scroll" != settings.event) {
                $(self).bind(settings.event, function(event) {
                    if (!self.loaded) {
                        $(self).trigger("appear");
                    }
                });
            }
        });
        
        /* Force initial check if images should appear. */
        $(settings.container).trigger(settings.event);
        
        return this;

    };

    /* Convenience methods in jQuery namespace.           */
    /* Use as  $.belowthefold(element, {threshold : 100, container : window}) */

    $.belowthefold = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).height() + $(window).scrollTop();
        } else {
            var fold = $(settings.container).offset().top + $(settings.container).height();
        }
        return fold <= $(element).offset().top - settings.threshold;
    };
    
    $.rightoffold = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).width() + $(window).scrollLeft();
        } else {
            var fold = $(settings.container).offset().left + $(settings.container).width();
        }
        return fold <= $(element).offset().left - settings.threshold;
    };
        
    $.abovethetop = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).scrollTop();
        } else {
            var fold = $(settings.container).offset().top;
        }
        return fold >= $(element).offset().top + settings.threshold  + $(element).height();
    };
    
    $.leftofbegin = function(element, settings) {
        if (settings.container === undefined || settings.container === window) {
            var fold = $(window).scrollLeft();
        } else {
            var fold = $(settings.container).offset().left;
        }
        return fold >= $(element).offset().left + settings.threshold + $(element).width();
    };
    /* Custom selectors for your convenience.   */
    /* Use as $("img:below-the-fold").something() */

    $.extend($.expr[':'], {
        "below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
        "above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
        "right-of-fold"  : "$.rightoffold(a, {threshold : 0, container: window})",
        "left-of-fold"   : "!$.rightoffold(a, {threshold : 0, container: window})"
    });
    
})(jQuery);


/* caseszoom */
(function($){
    $.fn.casezoom = function(o){
        var settings = $.extend({}, $.fn.casezoom.defaults, o);
        return this.each(function(){
            var context = $(this);
            var casezooms = $(".casezoom",context);
            var caseshow = $(".caseShow",context);
            casezooms.each(function(){
                var link = $(this);
                if(link.is("a")){
                    link.css({
                        position:"relative",
                        display:"inline-block"
                    });
                    if (settings.isImg) {
                        var casezoomHover = $('<div class="casezoomHover" />').css("opacity","0").appendTo(link);
                    }
                    //if($.browser.version.substr(0,1)!=6){
                        link.hover(function(){
                            if(casezoomHover){casezoomHover.stop().animate({ opacity:0.8 }, 300);}
						    caseshow.find(".loading").css("opacity","0.5").show();
						    loadImg(link,caseshow,function(){
							    caseshow.find(".loading").hide();
						    });
					    }, function(){
						    if(casezoomHover){casezoomHover.stop().animate({ opacity:0 }, 300);}
						    caseshow.find(".loading").hide();
					    });
					//}
					link.bind('click', function(){
//						caseshow.find(".loading").css("opacity","0.5").show();
//						loadImg(link,caseshow,function(){
//							caseshow.find(".loading").hide();
//						});
                        if(settings.lImgAttr=="href")return false;
					});
                }
            });
        });
        function loadImg(link,wrapper,callback){
            var newImg = new Image();
            $(newImg).load(function(){
                wrapper.find("img").remove();
                if (settings.lImgAttr=="href") {
                    wrapper.find("a").append($(this));
                }else if (settings.lImgAttr=="ref") {
                    wrapper.find("a").attr("href",link.attr("href")).append($(this));
                }
                callback.call(this);
            }).attr("src",link.attr(settings.lImgAttr));
        }
    };
    $.fn.casezoom.defaults = {
        lImgAttr:"href",
        isImg:false
    };
})(jQuery);


(function($){
    $.fn.thumbPage = function(o){
        var settings = $.extend({}, $.fn.thumbPage.defaults, o);
        return this.each(function(){
            var wrap = $(this);
            var prevbtn = $(".case_thumb_prev", wrap);
            var nextbtn = $(".case_thumb_next", wrap);
            var pages = $(".case_thumb_wrap", wrap);
            var lens = pages.size();
            
            pages.fadeOut();
            pages.eq(settings.curr).fadeIn();
            
            prevbtn.click(function(){
                if(settings.curr-1<0)return false;
                settings.curr--;
                pages.fadeOut();
                pages.eq(settings.curr).fadeIn();
                return false;
            });
            nextbtn.click(function(){
                if(settings.curr+1>=lens)return false;
                settings.curr++;
                pages.fadeOut();
                pages.eq(settings.curr).fadeIn();
                return false;
            });
        });
    };
    $.fn.thumbPage.defaults = {
        curr: 0
    };   
})(jQuery);

