// JavaScript Document
function slidePics(){
	this.previousLiNum=0
	this.fadeFlag=0;
	this.toNum=null;
	this.movement=null;
	this.pause=null;
	this.picNum=1;
	}
slidePics.prototype={
	getSlidePic : function(){
		var slidePic=this.container.getElementsByTagName('img');
		if(slidePic.length!==1){
			alert('Ensure your contianer just have one slide Picture')
			return false
			}
		return slidePic[0]
		},
	
	getSelfObject : function(){
		var selfObject=this;
		return selfObject
		},
	
	getPicNameArray : function(){
		var slidePicLink=this.slidePic.src;
		var patt=new RegExp('(.*)/(\\w*)(\\d+)\.(jpg|gif|png)');
		var picLinkStrings=patt.exec(slidePicLink)
		return picLinkStrings;
		},
	
	defaultValueDefining : function(contianerId,totalPicNum){
		this.container=DOS.$(contianerId);
		this.slidePic=this.getSlidePic()
		this.picContainer=this.slidePic.parentNode;
		if(this.container.getElementsByTagName('ul').length){
			this.linkUl=this.container.getElementsByTagName('ul')[0]
			this.linkList=this.linkUl.getElementsByTagName('li')
			this.linkElements=this.linkUl.getElementsByTagName('a')
			this.totalPicNum=totalPicNum||this.linkElements.length
			}
		else{this.totalPicNum=totalPicNum}
		this.picLinkStrings=this.getPicNameArray();
		},
		
	changePicPath : function(totalPicNum){
		if(this.toNum) {this.picNum=this.toNum;this.toNum=null}
		else if(this.picNum==totalPicNum) this.picNum=1
		else this.picNum++;
		if(this.slidePic.parentNode.tagName=='A'){
			this.slidePic.parentNode.href=this.linkElements[this.picNum-1].href
			}
		var toLinkString=this.picLinkStrings[1]+'/'+this.picLinkStrings[2]+this.picNum+'.'+this.picLinkStrings[4];
		this.slidePic.src=toLinkString
		return this.picNum
		},
		
	preloading : function(){
		for(var i=0;i<this.totalPicNum;i++){
			var preloadImg=new Image;
			var picNum=i+1
			preloadImg.src=this.picLinkStrings[1]+'/'+this.picLinkStrings[2]+picNum+'.'+this.picLinkStrings[4]
			}
		},
		
	picSlidingOnce : function(totalPicNum,selfObject){
		var imageOpacity=DOS.getCurrentOpacity(this.slidePic,null)
		if(imageOpacity<=0) this.fadeFlag=1;
		else if(imageOpacity>=1) this.fadeFlag=0;//IE&FF have not the same Opacity Value
		if(this.fadeFlag==1){
			if(imageOpacity<=0){
				var currentName=this.changePicPath(totalPicNum)
				this.linkList[this.previousLiNum].className=null;
				this.linkList[currentName-1].className='current';
				this.previousLiNum=currentName-1
				}
			DOS.fading(null,0.01,1,0.04,this.slidePic)
			}
		else{
			if(imageOpacity>=1) {
				/*-----------define long pause-----------*/
				window.clearInterval(selfObject.movement);
				this.pause=window.setTimeout(function(){
					selfObject.repeating(selfObject.totalPicNum,null,selfObject)
					},5000)
				/*-----------define long pause-----------*/
				}
			DOS.fading(null,1,0.01,-0.04,this.slidePic)
			}
		},
		
	repeating:function(totalPicNum,fadeFlag,selfObject){
		window.clearTimeout(this.pause)
		this.movement=setInterval(function(){
			selfObject.picSlidingOnce(totalPicNum,selfObject)
		},20)
		},
		
	addMouseClickLink : function(selfObject,element,num){
		element.onclick=function(){return false}//try another way
		DOS.addEvent(element,'click',function(){
			window.clearInterval(selfObject.movement);
			selfObject.fadeFlag=0;
			selfObject.toNum=num+1;
			selfObject.repeating(this.totalPicNum,null,selfObject)
			})
		}
	}

function fadingSlide(){
	this.processing=function(contianerId,totalPicNum){
		if(!DOS.$(contianerId)){return false}
		var selfObject=this.getSelfObject()
		this.defaultValueDefining(contianerId,totalPicNum)
		this.preloading();
		selfObject.repeating(this.totalPicNum,null,selfObject)
		for(var i=0;i<this.totalPicNum;i++){
			this.addMouseClickLink(selfObject,this.linkElements[i],i);
			}
		}
	}
fadingSlide.prototype=new slidePics

function colorChange(){
	this.processing=function(contianerId,totalPicNum){
		if(!DOS.$(contianerId)){return false}
		var selfObject=this.getSelfObject()
		this.defaultValueDefining(contianerId,totalPicNum);
		this.pruductSerialNum=this.container.getElementsByTagName('p')[0];
		this.pruductSerialNumText=this.pruductSerialNum.firstChild
		this.preloading();
		for(var i=0;i<this.totalPicNum;i++){
			this.addMouseClickLink(selfObject,this.linkElements[i],i);
			}
		}
	this.addMouseClickLink=function(selfObject,element,num){
		element.onclick=function(){return false}//try another way
		DOS.addEvent(element,'click',function(){
			window.clearInterval(selfObject.movement);
			selfObject.fadeFlag=0;
			selfObject.toNum=num+1;
			var currentSerialNum=element.getAttribute('title')
			selfObject.pruductSerialNumText.nodeValue=currentSerialNum
			selfObject.repeating(this.totalPicNum,null,selfObject)
			})
		}
	this.picSlidingOnce=function(totalPicNum,selfObject){
		var imageOpacity=DOS.getCurrentOpacity(this.slidePic,null)
		if(imageOpacity<=0) this.fadeFlag=1;
		else if(imageOpacity>=1) this.fadeFlag=0;//IE&FF have not the same Opacity Value
		if(this.fadeFlag==1){
			if(imageOpacity<=0){
				var currentName=this.changePicPath(totalPicNum)
				this.pruductSerialNumText
				}
			DOS.fading(null,0.01,1,0.04,this.slidePic)
			}
		else{
			if(imageOpacity>=1) {
				/*-----------define long pause-----------*/
				window.clearInterval(selfObject.movement);
				/*-----------define long pause-----------*/
				}
			DOS.fading(null,1,0.01,-0.04,this.slidePic)
			}
		}
	}
colorChange.prototype=new slidePics

function fastSlide(){
	this.repeating=function(totalPicNum,selfObject){
		this.movement=setInterval(function(){
			selfObject.changePicPath(totalPicNum)
			},20)
		};
	this.processing=function(contianerId,totalPicNum){
		if(!DOS.$(contianerId)){return false}
		var selfObject=this.getSelfObject()
		this.defaultValueDefining(contianerId,totalPicNum)
		this.preloading();
		this.repeating(this.totalPicNum,selfObject)
		}
	}
fastSlide.prototype=new slidePics;

function moveSlide(){
	this.processing=function(contianerId,totalPicNum){
		if(!DOS.$(contianerId)){return false}
		var selfObject=this.getSelfObject()
		this.defaultValueDefining(contianerId,totalPicNum)
		this.movement=window.setTimeout(function(){
			selfObject.picSlidingOnce(selfObject)
		},5000)
		for(var i=0;i<this.totalPicNum;i++){
			this.addMouseClickLink(selfObject,this.linkElements[i],i);
			}
		};
	this.getMoveValue=function(pic,toPosition){
		var currentPosition=pic.offsetTop;
		var moveValue=(toPosition-currentPosition)/100
		return moveValue
		};
	this.move=function(moveValue,toPosition,selfObject){
		if(Math.abs(this.PicTop-toPosition)<=1){
			this.slidePic.style.top=toPosition+'px';
			if(this.picNum===this.totalPicNum-1){this.picNum=0}
			else{this.picNum=this.picNum+1}
			window.clearInterval(selfObject.onceMovement)
			this.movement=window.setTimeout(function(){
				selfObject.picSlidingOnce(selfObject)
			},5000)
			}
		else{
			this.PicTop=this.PicTop+moveValue
			this.slidePic.style.top=this.PicTop+'px';
			}
		}
	this.picSlidingOnce=function(selfObject){
		this.PicTop=this.slidePic.offsetTop;
		var toPosition=-(this.picNum)*this.slidePic.offsetHeight/this.totalPicNum;
		this.linkElements[this.previousLiNum].parentNode.className='';
		this.linkElements[this.picNum].parentNode.className='current';
		this.previousLiNum=this.picNum;
		var moveValue=this.getMoveValue(this.slidePic,toPosition)
		this.onceMovement=window.setInterval(function(){
			selfObject.move(moveValue,toPosition,selfObject);
			},10)
		}
	this.addMouseClickLink=function(selfObject,linkElement,linkNum){
		linkElement.onclick=function(){return false};
		DOS.addEvent(linkElement,'click', function(){
			window.clearInterval(selfObject.onceMovement)
			window.clearTimeout(selfObject.movement)
			selfObject.picNum=linkNum;
			selfObject.picSlidingOnce(selfObject)
			})
		}
	}
moveSlide.prototype=new fadingSlide;


DOS_SlidePic=new fadingSlide;
DOS.addOnload(function(){DOS_SlidePic.processing('slidePics')})
DOS_SlideBottomBanner=new fadingSlide;
DOS.addOnload(function(){DOS_SlideBottomBanner.processing('slideBanner')})
DOS_hostStyleBox=new fadingSlide;
DOS.addOnload(function(){DOS_hostStyleBox.processing('hostStyle')})
DOS_housePhotoSlide=new moveSlide;
DOS.addOnload(function(){DOS_housePhotoSlide.processing('housePhotoSlide')})
DOS_colorChange=new colorChange;
DOS.addOnload(function(){DOS_colorChange.processing('colorChangeBox')})

