var lastRollingSpeedUpdate = (new Date()).getTime();
var rollingDelayMax = 60;	// Slowest speed
var rollingDelayMin = 5;	// Fastest speed

var rollingDefaultDelay = 50;
var rollingDefaultStep = 88;

$(function()
	{
		if (url.indexOf("?print=1")!=-1 || url.indexOf("&print=1")!=-1) {
			return;
		}
		var rollingDiv = $("#rollingRelatedLink");	
		rollingDiv.rolling("right", 143, 54, 2);
		// Add banners
		zmsLoadRollingBanners(rollingDiv);
		rollingDiv.mousemove(function(e){
				setRollingSpeed(e.pageX)
			});
		rollingDiv.startRolling(rollingDefaultDelay, 0, rollingDefaultStep);

		$("#btn_rolling_left").mouseover(function(e){
				setRollingDirection("right");
			});
		$("#btn_rolling_right").mouseover(function(e){
				setRollingDirection("left");
			});
	});

function setRollingSpeed(mouseX){
	if ((new Date()).getTime() - 100 > lastRollingSpeedUpdate){
		lastRollingSpeedUpdate = (new Date()).getTime();

		var jObj = $("#rollingRelatedLink");
		var relativePos = (mouseX - jObj.offset().left) / jObj.width();
		var speed = Math.abs(relativePos - 0.5) * 2.0;
		var direction = (relativePos < 0.5) ? "right" : "left";

		if (speed > 1000){	// default=0.7
			setRollingSpeedHigh(jObj);
		}else if (speed > 0.0){	// default=0.2
			setRollingSpeedMedium(jObj, speed);
		}else{
			setRollingSpeedLow(jObj);
		}

		if (direction != jObj.getRollingDirection() && speed > 0.1){
			jObj.reverseRolling();
		}
	}
}

function setRollingDirection(direction){
	if ((new Date()).getTime() - 100 > lastRollingSpeedUpdate){
		var jObj = $("#rollingRelatedLink");
		setRollingSpeedHigh(jObj);

		if (direction != jObj.getRollingDirection()){
			jObj.reverseRolling();
		}
	}else{
		setTimeout("setRollingDirection(\""+direction+"\")", 100);
	}
}

function setRollingSpeedHigh(jObj){
	jObj.setRollingTime(rollingDelayMin);
}

function setRollingSpeedMedium(jObj, speed){
	//speed = Math.sqrt(speed);
	var targetDelay = Math.round((1-speed) * (rollingDelayMax - rollingDelayMin) + rollingDelayMin);
	jObj.setRollingTime(targetDelay);
}

function setRollingSpeedLow(jObj){
	jObj.setRollingTime(rollingDelayMax);
}

function zmsLoadRollingBanners(jObj){
	var bannerPath = zmsRollingBannerPath;
	var xmlDoc;

	//////////////////////////////////////////////////
	// Load XML File
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			xmlDoc=document.implementation.createDocument("","",null);
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
	xmlDoc.async=false;
	xmlDoc.load(bannerPath);

	//////////////////////////////////////////////////
	// Parse XML
	if (xmlDoc.getElementsByTagName("data").length <= 0){
		return;	// Break the function 
	}

	var displayTypeID = xmlDoc.getElementsByTagName("data")[0].attributes.getNamedItem("displayTypeID").nodeValue;
	var imageList = xmlDoc.getElementsByTagName("data")[0].getElementsByTagName("image");
	var len = imageList.length;
	var bannerArray = new Array();

	var i;
	for (i=0; i < len; i++){
		var imageUrl = "";
		var alt_text = "";
		var target = "_self";
		var width = 0, height = 0;
		var navUrl = "";

		imageUrl = imageList[i].getElementsByTagName("image_path")[0].childNodes[0].nodeValue;

		if (imageList[i].getElementsByTagName("alt_text")[0].childNodes.length > 0){
			alt_text = imageList[i].getElementsByTagName("alt_text")[0].childNodes[0].nodeValue;
		}

		var nodeInfoLink = imageList[i].getElementsByTagName("info_link")[0];

		target = nodeInfoLink.attributes.getNamedItem("target").nodeValue;
		width = nodeInfoLink.attributes.getNamedItem("width").nodeValue;
		height = nodeInfoLink.attributes.getNamedItem("height").nodeValue;

		if (nodeInfoLink.childNodes.length > 0){
			navUrl = nodeInfoLink.childNodes[0].nodeValue;
		}

		str = ""
		if (navUrl != ""){
			// Write <a> tag
			if ("_blank" == target && width > 0 && height > 0){
				// Popup
				var strPopup;
				strPopup = "window.open('"+navUrl+"', null, 'height="+height+",width="+width+",status=no,toolbar=no,menubar=no,location=no')";
				str += "<a href=\"javascript:void(0);\" onclick=\""+strPopup+"\">";
			}else{
				str += "<a href=\""+navUrl+"\" target=\""+target+"\">";
			}
		}
		str += "<img width=\"143\" height=\"54\" src=\""+imageUrl+"\" title=\""+alt_text+"\" alt=\""+alt_text+"\" border=\"0\">";
		if (navUrl != ""){
			str += "</a>";
		}

		bannerArray[i] = str;
	}

	var itemCounter = 0;
	while (len > 0 && itemCounter < 3){
		for (i=0; i < len; i++){
			jObj.addRollingItem(bannerArray[i]);
			itemCounter ++;
		}
	}
}
