var speed = 20;
var defaultSpeed = 1;
var slideShowSpeed = 2000;
var sliderSpeed = new Array(); //Specify slider scroll speed (larger is faster 1-10)
var sliderOptions = new Array();

function initBlocks()
{
	var blockCode = ""; var sliderType = "";
	var foundBlocks = document.getElementsByName("block");
	for (var b = 0; b < foundBlocks.length; b++) {
		var formObj = foundBlocks[b];
		var pbId = formObj.pb_id.value;
		if (formObj.block_code) {
			blockCode = formObj.block_code.value;
		}
		if (formObj.slider_type) {
			sliderType = formObj.slider_type.value;
		}
	
		if (sliderType >= 1 && sliderType <= 4) {
			initSlider(pbId, sliderType);
		} else if (sliderType == 5) {
			initSlider(pbId, sliderType);
		}
	}
}

function initSlider(pbId, sliderType)
{
	if (sliderType >= 1 && sliderType <= 4) {
		// create copy of block content
		var dataObj = document.getElementById("data_" + pbId);
		var parentObj = dataObj.parentNode;
  
		parentObj.style.width = parentObj.offsetWidth+"px";
		parentObj.style.height = parentObj.offsetHeight+"px";
  
		dataObj.style.position = "absolute";
		dataObj.style.left = "0px";
		dataObj.style.top = "0px";
  
		// create duplicate content to show slider 
		var secondObj = dataObj.cloneNode(true);
		secondObj.setAttribute("id", "second_data_" + pbId)	
		secondObj.style.position = "absolute";
		if (sliderType == 1) {
			secondObj.style.top = dataObj.offsetHeight + "px";
			secondObj.style.height = dataObj.offsetHeight + "px";		
		} else if (sliderType == 2) {
			secondObj.style.left = dataObj.offsetWidth + "px";
			secondObj.style.width = dataObj.offsetWidth + "px";		
		} else if (sliderType == 3) {
			secondObj.style.top = -dataObj.offsetHeight + "px";
			secondObj.style.height = dataObj.offsetHeight + "px";		
		} else if (sliderType == 4) {
			secondObj.style.left = -dataObj.offsetWidth + "px";
			secondObj.style.width = dataObj.offsetWidth + "px";		
		}
		parentObj.insertBefore(secondObj, dataObj.nextSibling);
  
		if (parentObj.attachEvent)	{
			parentObj.attachEvent('onmouseover', function (){ sliderSpeed[pbId] = 0;});
			parentObj.attachEvent('onmouseout', function (){ sliderSpeed[pbId] = defaultSpeed;});
		} else {
			parentObj.onmouseover = function (){ sliderSpeed[pbId] = 0; }; 
			parentObj.onmouseout = function (){ sliderSpeed[pbId] = defaultSpeed; };
		}
  
		sliderSpeed[pbId] = defaultSpeed;
		setTimeout("moveSlider("+pbId+","+sliderType+")", 500);
	} else if (sliderType == 5) {
		sliderOptions[pbId] = new Array();
		sliderOptions[pbId]["curItemId"] = 1;
		sliderOptions[pbId]["sliderSpeed"] = slideShowSpeed;
		// check maxId
		var itemObj = document.getElementById("data_" + pbId + "_1");
		var maxItemId = 1;
		do {
			sliderOptions[pbId]["maxItemId"] = maxItemId;
			maxItemId++;
			itemObj = document.getElementById("data_" + pbId + "_" + maxItemId);
		} while (itemObj);
		// add navigation buttons
		addSliderNavigation(pbId);
		// activate slide show 
		sliderOptions[pbId]["function"] = setTimeout("slideShow("+pbId+")", sliderOptions[pbId]["sliderSpeed"]);
	}
}

function addSliderNavigation(pbId)
{
	var activeObj = document.getElementById("data_" + pbId + "_1");
	var parentObj = activeObj.parentNode;

	var maxLeft = parentObj.offsetWidth - 22;
	var maxTop = parentObj.offsetHeight - 22;

	// next link
	var aObj = document.createElement('a');
	aObj.id = "next_" + pbId;
	aObj.href = "#";
	aObj.onclick = function () { nextSlide(pbId); return false; };
	parentObj.appendChild(aObj);

	var imgObj = document.createElement('img');
	imgObj.src = "images/icons/slider_next.gif";
	imgObj.border = "0";
	imgObj.style.position = "absolute";
	imgObj.style.left = maxLeft + "px";
	imgObj.style.top = maxTop + "px";
	aObj.appendChild(imgObj);

	// play link
	maxLeft = maxLeft - 25;
	aObj = document.createElement('a');
	aObj.id = "play_" + pbId;
	aObj.href = "#";
	aObj.onclick = function () { playSlideShow(pbId); return false; };
	aObj.style.display = "none";
	parentObj.appendChild(aObj);

	imgObj = document.createElement('img');
	imgObj.src = "images/icons/slider_play.gif";
	imgObj.border = "0";
	imgObj.style.position = "absolute";
	imgObj.style.left = maxLeft + "px";
	imgObj.style.top = maxTop + "px";
	aObj.appendChild(imgObj);

	// pause link
	aObj = document.createElement('a');
	aObj.id = "pause_" + pbId;
	aObj.href = "#";
	aObj.onclick = function () { pauseSlideShow(pbId); return false; };
	parentObj.appendChild(aObj);

	imgObj = document.createElement('img');
	imgObj.src = "images/icons/slider_pause.gif";
	imgObj.border = "0";
	imgObj.style.position = "absolute";
	imgObj.style.left = maxLeft + "px";
	imgObj.style.top = maxTop + "px";
	aObj.appendChild(imgObj);

	// prev link
	maxLeft = maxLeft - 25;
	aObj = document.createElement('a');
	aObj.id = "prev_" + pbId;
	aObj.href = "#";
	aObj.onclick = function () { prevSlide(pbId); return false; };
	parentObj.appendChild(aObj);

	imgObj = document.createElement('img');
	imgObj.src = "images/icons/slider_prev.gif";
	imgObj.border = "0";
	imgObj.style.position = "absolute";
	imgObj.style.left = maxLeft + "px";
	imgObj.style.top = maxTop + "px";
	aObj.appendChild(imgObj);

}

function changeObjects(pbId)
{
	var curObj = sliderOptions[pbId]["curObj"];
	var newObj = sliderOptions[pbId]["newObj"];
	var step = sliderOptions[pbId]["step"];

	if (step == 100) {
		curObj.style.position = "absolute";
		newObj.style.position = "absolute";
		newObj.style.filter = "alpha(opacity=0)";
		newObj.style.display = "block";
	}
	curObj.style.filter = "alpha(opacity="+step+")";
	newObj.style.filter = "alpha(opacity="+(100-step)+")";
	curObj.style.opacity = step/100;
	newObj.style.opacity = (100-step)/100;

	// decrease step number
	step = step - 5;
	sliderOptions[pbId]["step"] = step;
	if (step > 0) {
		setTimeout("changeObjects("+pbId+")", 10);
	} else {
		curObj.style.display = "none";
		newObj.style.display = "block";
		// remove filter
		//curObj.style.filter = "";
		//newObj.style.filter = "";

		sliderOptions[pbId]["curItemId"] = sliderOptions[pbId]["newItemId"];;

		var sliderType = sliderOptions[pbId]["sliderType"];
		if (sliderOptions[pbId]["sliderSpeed"] > 0) {
			sliderOptions[pbId]["function"] = setTimeout("slideShow("+pbId+")", sliderOptions[pbId]["sliderSpeed"]);
		}
	}
}

function slideShow(pbId, increment)
{
	if (increment != 1 && increment != -1) {
		increment = 1;
	}
	var curItemId = sliderOptions[pbId]["curItemId"];
	var curObj = document.getElementById("data_" + pbId + "_" + curItemId);
	var newItemId = curItemId + increment;
	var newObj = document.getElementById("data_" + pbId + "_" + newItemId);
	if (!newObj && curItemId > 1) {
		if (increment == 1) {
			newItemId = 1;
		} else if (increment == -1) {
			newItemId = sliderOptions[pbId]["maxItemId"];
		}
		newObj = document.getElementById("data_" + pbId + "_" + newItemId);
	}
	if (newObj) {
		sliderOptions[pbId]["curObj"] = curObj;
		sliderOptions[pbId]["newObj"] = newObj;
		sliderOptions[pbId]["newItemId"] = newItemId;
		sliderOptions[pbId]["step"] = 100;
		setTimeout("changeObjects("+pbId+")", 20);
	}
}

function nextSlide(pbId)
{
	if (sliderOptions[pbId]["function"]) {
		clearTimeout(sliderOptions[pbId]["function"]);
	}
	slideShow(pbId);
}

function prevSlide(pbId)
{
	if (sliderOptions[pbId]["function"]) {
		clearTimeout(sliderOptions[pbId]["function"]);
	}
	slideShow(pbId, -1);
}


function playSlideShow(pbId)
{
	var playObj = document.getElementById("play_" + pbId);
	var pauseObj = document.getElementById("pause_" + pbId);
	playObj.style.display = "none";
	pauseObj.style.display = "inline";

	if (sliderOptions[pbId]["function"]) {
		clearTimeout(sliderOptions[pbId]["function"]);
	}
	sliderOptions[pbId]["sliderSpeed"] = slideShowSpeed;
	sliderOptions[pbId]["function"] = setTimeout("slideShow("+pbId+")", sliderOptions[pbId]["sliderSpeed"]);
}

function pauseSlideShow(pbId)
{
	var playObj = document.getElementById("play_" + pbId);
	var pauseObj = document.getElementById("pause_" + pbId);
	playObj.style.display = "inline";
	pauseObj.style.display = "none";

	sliderOptions[pbId]["sliderSpeed"] = 0;
	if (sliderOptions[pbId]["function"]) {
		clearTimeout(sliderOptions[pbId]["function"]);
	}
}


function moveSlider(pbId, sliderType)
{
	var dataObj = document.getElementById("data_" + pbId);
	var secondObj = document.getElementById("second_data_" + pbId);

	var sliderWidth = dataObj.offsetWidth;
	var sliderHeight = dataObj.offsetHeight;

	if (sliderType == 1) {
		if (parseInt(dataObj.style.top) > (sliderHeight*(-1)+8)) 	//if slider hasn't reached the end of its height
			dataObj.style.top = parseInt(dataObj.style.top) - sliderSpeed[pbId]+"px" 	// move slider up
		else
			dataObj.style.top = parseInt(secondObj.style.top) + sliderHeight+"px"	 // reset to original position
		
		if (parseInt(secondObj.style.top) > (sliderHeight*(-1)+8))
			secondObj.style.top = parseInt(secondObj.style.top) - sliderSpeed[pbId] +"px"
		else
			secondObj.style.top = parseInt(dataObj.style.top) + sliderHeight+"px"
	} else if (sliderType == 2) {
		if (parseInt(dataObj.style.left) > (sliderWidth*(-1)+8))	 	// if slider hasn't reached the end of its width
			dataObj.style.left = parseInt(dataObj.style.left) - sliderSpeed[pbId] +"px"	 // move slider left
		else
			dataObj.style.left = parseInt(secondObj.style.left) + sliderWidth+"px"	// reset to original position
		
		if (parseInt(secondObj.style.left) > (sliderWidth*(-1)+8))
			secondObj.style.left = parseInt(secondObj.style.left) - sliderSpeed[pbId] +"px"
		else
			secondObj.style.left = parseInt(dataObj.style.left) + sliderWidth+"px"
	} else if (sliderType == 3) {
		if (parseInt(dataObj.style.top) < (sliderHeight + 8)) 	//if slider hasn't reached the end of its height
			dataObj.style.top = parseInt(dataObj.style.top) + sliderSpeed[pbId]+"px" 	// move slider up
		else
			dataObj.style.top = parseInt(secondObj.style.top) - sliderHeight+"px"	 // reset to original position
		
		if (parseInt(secondObj.style.top) < (sliderHeight +8))
			secondObj.style.top = parseInt(secondObj.style.top) + sliderSpeed[pbId] +"px"
		else
			secondObj.style.top = parseInt(dataObj.style.top) - sliderHeight+"px"
	} else if (sliderType == 4) {
		if (parseInt(dataObj.style.left) < (sliderWidth +8))	 	// if slider hasn't reached the end of its width
			dataObj.style.left = parseInt(dataObj.style.left) + sliderSpeed[pbId] +"px"	 // move slider left
		else
			dataObj.style.left = parseInt(secondObj.style.left) - sliderWidth+"px"	// reset to original position
		
		if (parseInt(secondObj.style.left) < (sliderWidth + 8))
			secondObj.style.left = parseInt(secondObj.style.left) + sliderSpeed[pbId] +"px"
		else
			secondObj.style.left = parseInt(dataObj.style.left) - sliderWidth+"px"
	}

	setTimeout("moveSlider("+pbId+","+sliderType+")", 30);
}

window.onload = initBlocks;
