var imgLoopView = Class.create();
imgLoopView.prototype = {
    initialize:function(id,direction,pause){
        this.step = 2;
        this.interval = 0.1;
        this.pause = pause;
        this.gap = 10;//图片之间的间隔
        this.direction = direction || "left";
        this.scrollId;
        this.oA = $(id);//遮罩
        this.o1;//滚动内容
        this.o2;//滚动内容克隆
        this.maskW = this.oA.getWidth();//遮罩的宽度，由style里的width获得
        this.maskH = this.oA.getHeight();//遮罩的高度
        this.scrollW = 0; //滚动元素的总宽度
        this.scrollH = 0;
        this.paused = false;
        if(this.direction == "left" || this.direction == "right")
          { this.update_oa_width();}
        this.init();
    },
    update_oa_width:function(){
      if(this.direction == "left" || this.direction == "right"){
        div_width=parseInt(this.oA.style.width);                
      img_width=parseInt(this.oA.down().down().down().down().down().width);
      mod=div_width%img_width
      total_img=parseInt((div_width)/(img_width));
      a=this.getOs()
      if(a[0]==2){
        if(mod<this.gap*(total_img-1))
          total_img-=1
        this.oA.style.width=String(img_width*total_img+this.gap*(total_img-1)-2*total_img)+"px";
        }
      if(a[0]==1){  
        if(a[1]=="1.7"){
          if(mod<this.gap*(total_img-1))
           { total_img-=1;}
          this.oA.style.width=String(img_width*total_img+this.gap*(total_img-1)-2*total_img)+"px";
          }
        else{
          if(mod<this.gap*2*(total_img-1))
           { total_img-=1;}
          this.oA.style.width=String(img_width*total_img+this.gap*2*(total_img-1)-2*total_img)+"px";
          }
          }
      }
      },
   getOs:function(){
         if(navigator.userAgent.indexOf("MSIE")>0)
         {    
          var   version=parseFloat(navigator.appVersion.split("MSIE")[1]);
           return [1,"1."+version];
         
         }
         if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)return [2];
    },
    
   init:function(){
        this.render();
        this.start();
        this.oA.observe("mouseover",this.stop.bind(this));
        this.oA.observe("mouseout",this.start.bind(this));
      //  this.oA.observe("mouseover",this.imgOver);
      //  this.oA.observe("mouseout",this.imgOut);
    },

    render:function(){
        this.oA.insert(new Element("div"));
        this.o1 = this.oA.down();
        this.o2 = this.o1.next();
        this.size = this.o1.childElements().length;
        if(this.o1.childElements().length==0){
          this.scrollW = this.oA.getWidth();
          this.scrollH = this.oA.getHeight();
        }else{
          childs=this.o1;
          if(this.direction == "up" || this.direction == "down"){
            childs.childElements().each(function(o,i){
              oW = o.getWidth();
              oH = o.getHeight();
             o.setStyle({
                left:(this.scrollW)+"px",
                top:this.scrollH+"px",
                position:"absolute"
              })
                this.scrollH += oH;
          }.bind(this));
          
          this.o1.setStyle({height:this.scrollH+"px",width:this.oA.getWidth()+"px"});        
          this.o2.setStyle({height:this.scrollH+"px",width:this.oA.getWidth()+"px"});        
        }else{
            childs.down().childElements().each(function(o,i){
              oW = o.getWidth();
              oH = o.getHeight();
             o.setStyle({
                left:(this.scrollW)+"px",
                top:this.scrollH+"px",
                position:"absolute"
              })
              this.scrollW += this.gap+oW;
          }.bind(this));
          this.o1.setStyle({width:(this.scrollW)+"px",height:this.oA.getHeight()+"px"});
          this.o2.setStyle({width:(this.scrollW)+"px",height:this.oA.getHeight()+"px"});
        }
        }
        
        this.o1.setStyle({
            left:"0px",
            top:"0px",
            position:"absolute"
        });

        this.o2.className = this.o1.className;
        this.o2.innerHTML = this.o1.innerHTML;
        this.o2.setStyle({
            left:this.scrollW+"px",
            top:this.scrollH+"px",
            position:"absolute"
        });
    },
    mstart:function(){
      this.paused = false;
      this.start();
    },
    start:function() {
        if((!this.scrollId) && (!this.paused)){
            iv = this.interval / (this.pause + 1)
            if (this.direction == "left"){
                this.scrollId = new PeriodicalExecuter(this.moveLeft.bind(this,this.step), iv);
            }else if(this.direction == "right"){
                this.scrollId = new PeriodicalExecuter(this.moveRight.bind(this,this.step), iv);
            }else if(this.direction == "up"){
                this.scrollId = new PeriodicalExecuter(this.moveUp.bind(this,this.step), iv);
            }else if(this.direction == "down"){
                this.scrollId = new PeriodicalExecuter(this.moveDown.bind(this,this.step), iv);
            }
        }
    },
    mstop:function(){
      this.paused = true;
      this.stop();
    },
    stop:function() {
        if(this.scrollId){
            this.scrollId.stop();
            this.scrollId = 0;
        }
    },
    
    toggle:function() {
        this.scrollId?this.stop():this.start();
    },

    goLeft:function() {
        this.direction = "left";
        this.stop();
        this.start();
    },

    goRight:function() {
        this.direction = "Right";
        this.stop();
        this.start();
    },

    goUp:function() {
        this.direction = "up";
        this.stop();
        this.start();
    },

    goDown:function() {
        this.direction = "down";
        this.stop();
        this.start();
    },

    toggleDir:function() {
        this.direction=="left"?this.goRight():this.goLeft();
    },

    moveLeft:function(step) {
        var o1Left = parseInt(this.o1.getStyle("left"));
        var o2Left = parseInt(this.o2.getStyle("left"))
        oW = this.oA.down().scrollWidth / this.oA.down().down().childElements().length
        if(this.pause && (Math.abs(o1Left) % oW < this.step)){
          this.mstop();
          setTimeout(this.oA.id + "_scroll.mstart()", this.pause * 1000);
        }
        if (-o1Left>this.scrollW)
        {
            this.o1.setStyle({
                left:o2Left+this.scrollW+"px"
            });
        }
        if (-o2Left>this.scrollW)
        {
            this.o2.setStyle({
                left:o1Left+this.scrollW+"px"
            });
        }

        this.o1.setStyle({
            left: parseInt(this.o1.getStyle("left"))-step+"px"
        });
        this.o2.setStyle({
            left: parseInt(this.o2.getStyle("left"))-step+"px"
        });
    },
    moveRight:function(step) {
        var o1Left = parseInt(this.o1.getStyle("left"));
        var o2Left = parseInt(this.o2.getStyle("left"));
        oW = this.oA.down().scrollWidth / this.oA.down().down().childElements().length
        if(this.pause && (Math.abs(o1Left) % oW < this.step)){
          this.mstop();
          setTimeout(this.oA.id + "_scroll.mstart()", this.pause * 1000);
        }

        if (o1Left>this.scrollW)
        {
            this.o1.setStyle({
                left:o2Left-this.scrollW+"px"
            });
        }
        if (o2Left>this.scrollW)
        {
            this.o2.setStyle({
                left:o1Left-this.scrollW+"px"
            });
        }

        this.o1.setStyle({
            left: parseInt(this.o1.getStyle("left"))+step+"px"
        });
        this.o2.setStyle({
            left: parseInt(this.o2.getStyle("left"))+step+"px"
        });
    },

    moveUp:function(step) {
        var o1Top = parseInt(this.o1.getStyle("top"));
        var o2Top = parseInt(this.o2.getStyle("top"));
        oH = this.scrollH / this.oA.down().childElements().length
        if(this.pause && (Math.abs(o1Top) % oH <= 1 )){
          this.stop();
          setTimeout(this.oA.id + "_scroll.start()", this.pause * 1000);
        }
        if (-o1Top>this.scrollH)
        {
            this.o1.setStyle({
                top:o2Top+this.scrollH+"px"
            });
        }
        if (-o2Top>this.scrollH)
        {
            this.o2.setStyle({
                top:o1Top+this.scrollH+"px"
            });
        }

       /* var height = parseInt(this.oA.style.height);
        oH=height;
        //oH = this.oA.down().scrollHeight / this.oA.down().down().childElements().length
        if(this.pause && (Math.abs(o1Top) % oH < this.step)){
          this.stop();
          setTimeout(this.oA.id + "_scroll.start()", this.pause * 1000);
        }
        if (-o1Top>=height)
        {
            this.o1.setStyle({
                top:height+"px"
            });
        }
       if (-o2Top>height)
        {
            this.o2.setStyle({
                top:height+"px"
            });
        }
*/
        this.o1.setStyle({
            top: parseInt(this.o1.getStyle("top"))-step+"px"
        });
        this.o2.setStyle({
            top: parseInt(this.o2.getStyle("top"))-step+"px"
        });
    },
    moveDown:function(step) {
        var o1Top = parseInt(this.o1.getStyle("top"));
        var o2Top = parseInt(this.o2.getStyle("top"))

        oH = this.oA.down().scrollHeight / this.oA.down().down().childElements().length
        if(this.pause && (Math.abs(o1Top) % oH < this.step)){
          this.stop();
          setTimeout(this.oA.id + "_scroll.start()", this.pause * 1000);
        }
        if (o1Top>this.scrollH)
        {
            this.o1.setStyle({
                top:o2Top-this.scrollH+"px"
            });
        }
        if (o2Top>this.scrollH)
        {
            this.o2.setStyle({
                top:o1Top-this.scrollH+"px"
            });
        }

        this.o1.setStyle({
            top: parseInt(this.o1.getStyle("top"))+step+"px"
        });
        this.o2.setStyle({
            top: parseInt(this.o2.getStyle("top"))+step+"px"
        });
    },
    
    imgOver:function(e) {
        var o = e.element();
        if (o.tagName == "IMG")
        {
            o.setStyle({ border:"1px solid #FFF" });
            new Effect.Opacity(o, { from: 0, to: 1, duration: 0.3 });
        }
    },

    imgOut:function(e) {
        var o = e.element();
        if (o.tagName == "IMG")
        {
            o.setStyle({ border:"1px solid #666" });

        }
    }
};

/******************************
*
* Name: bannerShow
* Author: Aken li
* Date: 2008.07.28
* Blog: www.kxbd.com
*
******************************/
var bannerShow = Class.create();
bannerShow.prototype = {
    initialize:function(id,option){
        this.id = id;
        this.option = Object.extend({event:"click",dur:0.6,interval:5,hasNav:false,type:0}, option || {});
        this.event = this.option.event;//鼠标事件
        this.dur = this.option.dur; //动画变化时间
        this.type = this.option.type; //动画变化类型
        this.interval = this.option.interval;//间隔时间
        this.hasNav = this.option.hasNav;//是否有小图导航
        this.intervarID;
        this.isShowNum = 0;//当前显示图片
        this.obj = $(id);
        this.nav = this.hasNav ? this.obj.down() : this.obj.insert({top:new Element("ul",{'class':"bannerNav"})}).down();//导航
        this.main = this.nav.next();//banner
        this.imgAllNum = this.main.childElements().length;
        this.bannerDims = this.main.getDimensions();//banner尺寸
        this.init();
    },

    init:function() {
        this.render();
        this.start();
        this.obj.observe('mouseover',this.stop.bind(this));
        this.obj.observe('mouseout',this.start.bind(this));
        this.nav.observe('mouseover',this.imgOver);
    },

    render:function() {
        if(!this.hasNav){
            var bannerNavInner="";
            for (var i=1;i<=this.imgAllNum ;i++ ){
                bannerNavInner += "<li>"+i+"</li>";
            }
            this.nav.update(bannerNavInner);
        }
        this.nav.childElements().each(function(o,i){
            this.hideNav(o);
            o.observe(this.event,this.changeBanner.bind(this,i,false,true));
        }.bind(this));
        this.showNav(this.nav.childElements()[0]);
        this.main.childElements().each(function(o,i){
            if(i){
                switch (this.type){
                    case 1:
                        o.down().setStyle({width:"0px",height:"0px"});
                    break;
                    case 2:
                        o.down().setStyle({
                            width:"0px",height:"0px",
                            left:this.bannerDims.width/2+"px",top:this.bannerDims.height/2+"px"
                        });
                    break;
                    case 3:
                        o.setStyle({left:this.bannerDims.width+"px"});
                    break;
                    case 4:
                        o.setStyle({top:this.bannerDims.height+"px"});
                    break;
                    default:
                        o.setStyle({display:"none"});
                }
            }
        }.bind(this));
    },

    start:function() {
        if(!this.intervarID) {
            this.intervarID = new PeriodicalExecuter(this.changeBanner.bind(this,this.isShowNum,true,true), this.interval);
        }
    },

    stop:function() {
        if(this.intervarID){
            this.intervarID.stop();
            this.intervarID = 0;
        }
    },

    toggle:function() {
        this.intervarID?this.stop():this.start();
    },

    next:function() {
        this.stop();
        this.changeBanner(this.isShowNum,true,true);
        this.start();
    },

    prev:function() {
        this.stop();
        this.changeBanner(this.isShowNum,true,false);
        this.start();
    },

    setInterval:function(interval) {
        this.interval = interval;
        this.stop();
        this.start();
    },

    changeBanner:function(i,isAuto,isNext) {
        this.hideNav(this.nav.childElements()[this.isShowNum]);
        this.hideImg(this.main.childElements()[this.isShowNum],this.type,this.dur,this.bannerDims);
        isAuto ? (isNext?this.isShowNum++:this.isShowNum--) : this.isShowNum = i;
        if (this.isShowNum == this.imgAllNum){
            this.isShowNum = 0;
        }
        if (this.isShowNum < 0){
            this.isShowNum = this.imgAllNum-1;
        }
        this.showNav(this.nav.childElements()[this.isShowNum]);
        this.showImg(this.main.childElements()[this.isShowNum],this.type,this.dur,this.bannerDims);
    },

    showImg:function(element,type,dur,dims) {
        switch (type){
            case 1:
                new Effect.Morph(element.down(), { style:"width:"+dims.width+"px;height:"+dims.height+"px;",duration: dur });
            break;
            case 2:
                new Effect.Morph(element.down(), {
                    style:"width:"+dims.width+"px;height:"+dims.height+"px;left:0px;top:0px;",
                    duration: dur
                });
            break;
            case 3:
                new Effect.Morph(element, { style:"left:0px",duration: dur });
            break;
            case 4:
                new Effect.Morph(element, { style:"top:0px",duration: dur });
            break;
            default:
                element.appear({duration: dur});
        }
    },

    hideImg:function(element,type,dur,dims) {
        switch (type){
            case 1:
                new Effect.Morph(element.down(), { style:"width:0px;height:0px;",duration: dur });
            break;
            case 2:
                new Effect.Morph(element.down(), {
                    style:"width:0px;height:0px;left:"+dims.width/2+"px;top:"+dims.height/2+"px;",
                    duration: dur
                });
            break;
            case 3:
                new Effect.Morph(element, {style:"left:-"+dims.width+"px",duration: dur,
                    afterFinish:function(){element.setStyle({left:dims.width+"px"})}
                });
            break;
            case 4:
                new Effect.Morph(element, {style:"top:-"+dims.height+"px",duration: dur,
                    afterFinish:function(){element.setStyle({top:dims.height+"px"})}
                });
            break;
            default:
                element.fade({duration: dur});
        }
    },

    showNav:function(element) {
        if(!this.hasNav) {
            element.setStyle({border:'1px solid #c1f544',background: '#f98100'})
        }else{
            element.setStyle({border:'2px solid #c1f544'});
        }
    },

    hideNav:function(element) {
        if(!this.hasNav) {
            element.setStyle({border:'1px solid #FFFFFF',background: '#333'})
        }else{
            element.setStyle({border:'2px solid #FFFFFF'});
        }
    },

    imgOver:function(e) {
        var o = e.element();
        if (o.tagName == "IMG")
        {
            new Effect.Opacity(o, { from: 0, to: 1, duration: 0.3 });
        }
    }
};

function show_ad(banner_type,data,w,h){
    src="/media/silder.swf"
    var str="<object id='flex' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,5,0,0' height='"+h+"' width='"+w+"'>";
	  str+="<param name='flashvars' value='srcImg="+data+"&width="+w+"&height="+h+"&banner_type="+banner_type+"'/>";
	  str+="<param name='src' value='"+src+"'/>";
	  str+="<embed name='flexApp' pluginspage='http://www.macromedia.com/go/getflashplayer' src='"+src+"' height='"+h+"' width='"+w+"' flashvars='srcImg="+data+"&width="+w+"&height="+h+"&banner_type="+banner_type+"'/>";
	 str+="</object>";

	 return document.write(str);

}
