
//DHTML utils
	function GetLayerStyle(layerID)
	{
		var app=navigator.appVersion;
		var s;
		if( app.search( "(MS)?IE" ) > -1 )
		{
			if( document.all )	// ie4 or later.
				s=document.all[layerID].style;
			else
				; // IE3.0 or older.
		}
		// it will be Netscape.
		else if(navigator.appVersion.charAt(0)  <= "2" )
			s=document.layers[targetLayerID];
		else
		{
			var d=document.getElementsByTagName("div");
			s=d[layerID].style;
		}
		return s;
	}
//DHTML utils ends.
	

// MoveLayer()
	restoreLocationX=new Array;
	restoreLocationY=new Array;
	layerStatus=new Array;
	
	var	targetLayerID;
	var	srcX,srcY,dstX,dstY;
	var	isMoving;
	var	tickToMove;
	var	currentTick;
	var timerID;

	function MoveLayer(layerID,moveFromX,moveFromY,x,y,msec)
	{
		if(isMoving)
			return;
		if( layerStatus[layerID] == "moved" )
		{
			var s=GetLayerStyle(layerID);
			moveFromX=parseInt( s.left , 10 );
			moveFromY=parseInt( s.top , 10 );
			MoveLayerTo(layerID,moveFromX,moveFromY,restoreLocationX[layerID],restoreLocationY[layerID],msec);
			layerStatus[layerID]="";
		}
		else
		{
			MoveLayerTo(layerID,moveFromX,moveFromY,x,y,msec);
			layerStatus[layerID]="moved";
		}
	}

	function MoveLayerTo(layerID,moveFromX,moveFromY,x,y,msec) {
		var s=GetLayerStyle(layerID);
		var timeSlice=15;	//10fps
		targetLayerID=layerID;
		isMoving=true;
		tickToMove=Math.ceil( msec/timeSlice );
		
		// avoid sucky macIE element text bug.
//		s.visibility="visible";
		if(msec%timeSlice)
			tickToMove++;
		currentTick=0;
			
//		srcX=parseInt( s.left , 10 );
//		srcY=parseInt( s.top , 10 );
		srcX=moveFromX;
		srcY=moveFromY;
		
		restoreLocationX[layerID]=srcX;
		restoreLocationY[layerID]=srcY;
		
		dstX=( isNaN(x) )?srcX:x;
		dstY=( isNaN(y) )?srcY:y;
		
//		timerID=setInterval('LocateLayerLinear()',timeSlice);
		timerID=setInterval('LocateLayerAccelerated(0.2)',timeSlice);
	}
	
	function LocateLayerAccelerated(alpha)
	{
		var s=GetLayerStyle(targetLayerID);
		if(currentTick++>=tickToMove)
		{
			isMoving=false;
			clearInterval(timerID);
			if( layerStatus[targetLayerID] != "moved" )
				s.visibility="hidden";
		}
		else
		{
			// sin curve.
			t= Math.PI * (currentTick/tickToMove) ;
			if( Math.cos(t) > 0 )
				s.left=(srcX-dstX)/2 * Math.pow( Math.cos(t) ,alpha ) + (srcX+dstX)/2;
			else
				s.left=(srcX-dstX)/2 * ( - ( Math.pow( - (Math.cos(t)) ,alpha ) ) ) + (srcX+dstX)/2;
			if( Math.cos(t) > 0 )
				s.top=(srcY-dstY)/2 * Math.pow( Math.cos(t) ,alpha ) + (srcY+dstY)/2;
			else
				s.top=(srcY-dstY)/2 * ( - ( Math.pow( - (Math.cos(t)) ,alpha ) ) ) + (srcY+dstY)/2;
			s.visibility="visible";
		}
	}

	function GetLayerStyle(layerID)
	{
		var app=navigator.appVersion;
		var s;
		if( app.search( "(MS)?IE" ) > -1 )
		{
			if( document.all )	// ie4 or later.
				s=document.all[layerID].style;
			else
				; // IE3.0 or older.
		}
		// it will be Netscape.
		else if(navigator.appVersion.charAt(0)  <= "4" )
			s=document.layers[targetLayerID];
		else
		{
			var d=document.getElementsByTagName("div");
			s=d[layerID].style;
		}
		return s;
	}
	
// MoveLayer() ends.

// SetOnChangeReplaceImages()
	var onChangeReplaceImages= new Array();
	
	function SetOnChangeReplaceImages()
	{
		var imageArray = new Array();
		for(i=1;i<arguments.length;i++)
		{
			image=new Image();
			image.src=arguments[i];
			imageArray[i-1]=arguments[i];
//			alert(i+"+"+arguments[i] );
		}
		onChangeReplaceImages[ arguments[0] ] = imageArray;
	}
	function OnChangeReplaceImage(replaceImageID,s)
	{
		var index=s.selectedIndex;
//		alert(index+"+"+onChangeReplaceImages[index]);
		document.images[replaceImageID].src=onChangeReplaceImages[replaceImageID][index];
	}

// SetOnChangeReplaceImages() ends.

// GetDeliverDate()
	function GetDeliverDate()
	{
		var  maxDateCount=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		time=new Date();
		var year=time.getYear()
		if( year%4 ) maxDateCount[1]++;
		var deliverMonth,deliverDate;
		deliverMonth=time.getMonth();
		deliverDate=time.getDate();
		if( time.getHours()>=16 )
			deliverDate+=2;
		else
			deliverDate+=1;
		if(deliverDate>maxDateCount[deliverMonth])
		{
			deliverDate-=maxDateCount[deliverMonth];
			deliverMonth++;
			if( deliverMonth>11 )
				year++;
			deliverMonth%=12;
		}
		return new Date(year,deliverMonth,deliverDate);
	}
// GetDeliverDate() ends.

