﻿


//png (IE6)
function setPng24(obj) {
    obj.width=obj.height=1;
    obj.className=obj.className.replace(/\bpng24\b/i,'');
    obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+obj.src+"',sizingMethod='image');"
    obj.src='';
    return '';
}


// visual slide

function rotatecontents(objectid){

  this.titleobject=null;
  this.titlesetbyrule=null;
  this.pagingobject=null;
  this.pagingstart='';
   this.pagingdelimiter='/';
   this.pagingend='';
   this.rotatemethod=null;
   this.maxzindex=1;
   this.speed=1;
   this.autoplay=true;
   this.autoplaytime=4;

   this.buttonobject=null;
   this.buttontype='text';
   this.buttononclassname='on';
   this.buttononimagename='';

   this.addtitle=function(title){
       titles.push(title);
   };

   var object=document.getElementById(objectid);
   var items=new Array(),itemsnum,titles=new Array();
   var btns=new Array(),btnsmover=new Array(),btnsmout=new Array();
   var speed,timer,nowno=0,canimove=true;
   var isie=(navigator.userAgent.toLowerCase().indexOf('msie')!=-1)? true : false;

   this.initialize=function(){
       var isfirst=true,removeobjs=new Array(),childs=object.childNodes;
       for(var i=0,j=-1,max=childs.length; i<max; i++){
           if(childs[i].nodeType==1){
               j++;
               if(this.titleobject){
                   if(this.titlesetbyrule=='alt'){
                       titles.push((childs[i].nodeName.toLowerCase()=='img')? childs[i].alt : childs[i].getElementsByTagName('img')[0].alt);
                   }else if(this.titlesetbyrule=='nextobject' && j%2){
                       titles.push(childs[i].innerHTML);
                       removeobjs.push(childs[i]);
                       continue;
                   }else if(this.titlesetbyrule=='prevobject' && j%2==0){
                       titles.push(childs[i].innerHTML);
                       removeobjs.push(childs[i]);
                       continue;
                   }
               }
               if(!isfirst) childs[i].style.display='none';
               items.push(childs[i]);
               if(this.rotatemethod=='overlap' || this.rotatemethod=='slide' || this.rotatemethod=='fadein'){
                   speed=this.speed;
                   object.style.position='relative';
                   with(childs[i].style){
                       position='absolute';
                       left='0px';
                       top='0px';
                       width=object.offsetWidth+'px';
                   }
                   if(this.rotatemethod=='fadein'){
                       setopacity(childs[i],(isfirst)? 100 : 0);
                   }
               }
               if(isfirst) isfirst=false;
           }
       }
       itemsnum=items.length;
       if(removeobjs[0]){
           for(var i=0,max=removeobjs.length; i<max; i++) object.removeChild(removeobjs[i]);
       }
       if(this.titleobject) this.titleobject=(titles[0])? document.getElementById(this.titleobject) : null;
       if(this.pagingobject) this.pagingobject=document.getElementById(this.pagingobject);
       this.settitlenpaging(nowno);
       object.style.width=object.offsetWidth+'px';
       object.style.height=object.offsetHeight+'px';
       object.style.overflow='hidden';
       object.onmouseover=function(){
           clearTimeout(eval(objectid).autoplaytimer);
       };
       object.onmouseout=function(){
           eval(objectid).autoplayaction();
       };
       if(this.buttonobject){
           this.buttonobject=document.getElementById(this.buttonobject);
           var childs=this.buttonobject.childNodes;
           for(var i=0,j=0,max=childs.length; i<max; i++){
               if(childs[i].nodeType==1){
                   childs[i].myno=j;
                   if(childs[i].onmouseover) btnsmover.push(childs[i].onmouseover);
                   if(childs[i].onmouseout) btnsmout.push(childs[i].onmouseout);
                   btns.push(childs[i]);
                   j++;
               }
           }
           if(items.length!=btns.length) this.buttonobject=null;
           else this.setbtns();
       }
        this.autoplayaction();
    };

    this.settitlenpaging=function(no){
        if(this.titleobject) this.titleobject.innerHTML=titles[no];
        if(this.pagingobject) this.pagingobject.innerHTML=this.pagingstart+(no+1)+this.pagingdelimiter+itemsnum+this.pagingend;
    };

    this.setzindex=function(no){
        for(var i=0; i<itemsnum; i++){
            if(i==no){
                items[i].style.zIndex=this.maxzindex+3;
                items[i].style.display='';
            }else if(i==nowno){
                items[i].style.zIndex=this.maxzindex+2;
            }else{
                items[i].style.zIndex=this.maxzindex+1;
                items[i].style.display='none';
            }
        }
    };

    this.setbtns=function(no){
        if(!no && no!==0) no=nowno;
        for(var i=0; i<itemsnum; i++){
            if(i==no){
                this.setbtnon(btns[i]);
                btns[i].onmouseover=null;
                btns[i].onmouseout=null;
            }else{
                this.setbtnoff(btns[i]);
                btns[i].onmouseover=function(){
                    eval(objectid).setbtnon(this);
                    if(btnsmover[this.myno]) btnsmover[this.myno]();
                }
                btns[i].onmouseout=function(){
                    eval(objectid).setbtnoff(this);
                    if(btnsmout[this.myno]) btnsmout[this.myno]();
                }
            }
        }
    };

    this.setbtnon=function(target){
        var classes,exist=false;
        if(this.buttontype=='image'){
            var btnimg=target.getElementsByTagName('img')[0];
            var btnimgexp=btnimg.src.substring(btnimg.src.lastIndexOf('.'));
            if(btnimg.src.indexOf(this.buttononimagename+btnimgexp)==-1) btnimg.src=btnimg.src.replace(btnimgexp,this.buttononimagename+btnimgexp);
        }
        classes=target.className.split(' ');
        for(var i=0; i<classes.length; i++) if(classes[i]==this.buttononclassname) exist=true;
        if(!exist) target.className=target.className+' '+this.buttononclassname;
    };

    this.setbtnoff=function(target){
        var classes;
        if(this.buttontype=='image'){
            var btnimg=target.getElementsByTagName('img')[0];
            var btnimgexp=btnimg.src.substring(btnimg.src.lastIndexOf('.'));
            if(btnimg.src.indexOf(this.buttononimagename+btnimgexp)!=-1) btnimg.src=btnimg.src.replace(this.buttononimagename+btnimgexp,btnimgexp);
        }
        if(target.className.indexOf(this.buttononclassname)!=-1){
            if(target.className.indexOf(' ')==-1) target.className=target.className.replace(this.buttononclassname,'');
            else{
                classes=target.className.split(' ');
                for(var i=0; i<classes.length; i++) if(classes[i]==this.buttononclassname) classes[i]='';
                target.className=classes.join(' ');
            }
        }
    };

    this.change=function(no){
        no=no-1;
        if(no!=nowno){
            if(this.rotatemethod=='overlap') this.moveaction('overlap',no,(no<nowno)? 'prev' : 'next');
            else if(this.rotatemethod=='slide') this.moveaction('slide',no,(no<nowno)? 'prev' : 'next');
            else if(this.rotatemethod=='fadein') this.fadeinaction(no);
            else this.hideitem(no);
            this.settitlenpaging(no);
            if(this.buttonobject) this.setbtns(no);
        }
    };
	this.stop = function() {

		clearTimeout(eval(objectid).autoplaytimer);
		this.hideitem;
	};
	this.play = function() {
		if(!this.autoplay) return;
        this.autoplaytimer=setTimeout(objectid+'.next()',this.autoplaytime*1000);
	};


    this.prev=function(){
        var prevno=(nowno==0)? itemsnum-1 : nowno-1;
        if(this.rotatemethod=='overlap') this.moveaction('overlap',prevno,'prev');
        else if(this.rotatemethod=='slide') this.moveaction('slide',prevno,'prev');
        else if(this.rotatemethod=='fadein') this.fadeinaction(prevno);
        else this.hideitem(prevno);
        this.settitlenpaging(prevno);
    };

    this.next=function(){
        var nextno=(nowno==(itemsnum-1))? 0 : nowno+1;
        if(this.rotatemethod=='overlap') this.moveaction('overlap',nextno,'next');
        else if(this.rotatemethod=='slide') this.moveaction('slide',nextno,'next');
        else if(this.rotatemethod=='fadein') this.fadeinaction(nextno);
        else this.hideitem(nextno);
        this.settitlenpaging(nextno);
        if(this.buttonobject) this.setbtns(nextno);
    };

    this.autoplaytimer=null;
    this.autoplayaction=function(){
        if(!this.autoplay) return;
        this.autoplaytimer=setTimeout(objectid+'.next()',this.autoplaytime*1000);
    };

    this.hideitem=function(no){
        clearTimeout(this.autoplaytimer);
        for(var i=0; i<itemsnum; i++) items[i].style.display=(i==no)? '' : 'none';
        this.autoplayaction();
        nowno=no;
    };

    var getleft=function(no){
        return parseInt(items[no].style.left);
    };

    var setleft=function(no,value){
        items[no].style.left=value+'px';
    };

    this.moveaction=function(method,no,direction){
        clearTimeout(this.autoplaytimer);
        if(canimove){
            canimove=false;
            setleft(no,(direction=='prev')? -(object.offsetWidth) : object.offsetWidth);
            this.setzindex(no);
            var now,snow,to=0,mv=0;
            var action=function(){
                clearTimeout(timer);
                now=getleft(no);
                if(method=='slide') snow=getleft(nowno);
                if(now!=to){
                    mv=(now-to)/speed;
                    setleft(no,(direction=='prev')? Math.ceil(now-mv) : Math.floor(now-mv));
                    if(method=='slide') setleft(nowno,(direction=='prev')? Math.ceil(snow-mv) : Math.floor(snow-mv));
                    setTimeout(action,10);
                }else{
                    eval(objectid+'.autoplayaction()');
                    clearTimeout(timer);
                    canimove=true;
                    nowno=no;
                }
            };
            action();
        }
    };

    var getopacity=function(target){
        return (isie)? parseInt(target.style.filter.match(/alpha\(opacity=([0-9]+)\)/)[1]) : target.style.opacity*100;
    };

    var setopacity=function(target,value){
        if(isie) target.style.filter='alpha(opacity='+value+')';
        else target.style.opacity=value/100;
    };

    this.fadeinaction=function(no){
        clearTimeout(this.autoplaytimer);
        if(canimove){
            canimove=false;
            setopacity(items[no],0);
            this.setzindex(no);
            var nowo,to=0;
            var action=function(){
                clearTimeout(timer);
                nowo=getopacity(items[no]);
                if(nowo!=100){
                    setopacity(items[no],Math.ceil(nowo+(100-nowo)/speed));
                    setTimeout(action,10);
                }else{
                    eval(objectid+'.autoplayaction()');
                    clearTimeout(timer);
                    canimove=true;
                    nowno=no;
                }
            };
            action();
        }
    };

}
