var icon = "empty";
var movieID = "none";
var infoID = "none";
var iconOut = 0;
var action = 0;
var fIcon = "none";
var fRefl = "";

var highestWidget = "";

function moveFunction(e) {
	if (e == null) { var e = window.event; }

	var X = e.clientX;
	var Y = e.clientY;

	var parentX = parseInt(document.getElementById("area_topp_menu").style.left);

	fIcon.style.display = "block";
	setPosition(fIcon,X-22,Y-70-22);
	
	var shOffX = Math.floor((X-_pageWidth/2)/30);
	var shOffY = Math.floor((Y-(_pageHeight)/2)/30)+16;
		
	setPosition(fRefl,X-22+shOffX,Y-70-22+shOffY);

	fRefl.style.display = "block";

	if (findTrashcan(e)) {
		fIcon.style.cursor = "url(gfx/trashcan.cur), url(gfx/trashcan.ani), auto";
	} else {
		fIcon.style.cursor = "move";
	}

	widgetHover.length = 0;
	
	var counter = 0;

	if (X < safeZone && Y > 100) {
		for (var i=0; i<widgetArray.length; i++) {
			if ((X > parseInt(widgetArray[i].style.left) && X < parseInt(widgetArray[i].style.left)+widgetArray[i].offsetWidth) && (Y > parseInt(widgetArray[i].style.top)+70 && Y < parseInt(widgetArray[i].style.top)+widgetArray[i].offsetHeight+70)) {
				widgetHover[i] = 1;
				counter++;
			} else {
				widgetHover[i] = 0;
			}
		}
	}

	var highestZ = 0;
	highestWidget = "";

	for (var i=0; i<widgetHover.length; i++) {
		if (widgetHover[i] == 1) {
			if (widgetArray[i].style.zIndex > highestZ) {
				highestZ = widgetArray[i].style.zIndex;
				highestWidget = widgetArray[i].id;
			}
		}
	}
	
	for (var i=0; i<widgetHover.length; i++) {
		if (widgetHover[i] == 1 && highestWidget == widgetArray[i].id) {
			widgetArray[i].style.border = "4px solid #f3f56e";
		} else {
			widgetArray[i].style.border = "4px solid transparent";		
		}
	}

}
function releaseFunction(e) {
	if (e == null) { var e = window.event; }

	document.getElementById("functionShadow").style.display = "none";
	
	if (findTrashcan(e)) {
		fIcon.style.display = "none";
		fIcon.style.cursor = "move";
	}

	if (highestWidget != "") {
		var widget = document.getElementById(highestWidget);
		
		_currentZIndex++;
		widget.style.border = "4px solid transparent";
		widget.style.zIndex = _currentZIndex;

		executeFunction(highestWidget,fIcon.className);
	}

	document.onmousemove = null;
	document.onselectstart = null;

	fIcon.className = "transparent";
	fIcon.style.display = "none";
	fIcon = "none";
}
function executeFunction(WIDGET,FUNCTION) {
	var widget = WIDGET;
	var execute = FUNCTION.replace("transparent ","");
	var approved = 1;

	if (widget.substr(0,5) == "drag_") {
		widget = widget.substr(5);
	}
	
	if (widget != "topsellers" && widget != "shoppingcart" && widget != "search") {
		approved = 0;
	} else {
		if (execute == "pageForward") {
			eval("wO." + widget + "[0]++");
		} else
		if (execute == "pageBack") {
			if (eval("wO." + widget + "[0]") == 1) {
				approved = 0;
			} else {
				eval("wO." + widget + "[0]--");
			}
		} else
		if (execute == "sortDaterank") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = 'daterank'");	
		} else
		if (execute == "sortSalesrank") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = 'salesrank'");
		} else
		if (execute == "sortTitleAsc") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = 'titlerank'");
		} else
		if (execute == "sortTitleDesc") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = '-titlerank'");
		} else
		if (execute == "sortPriceAsc") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = 'price'");
		} else
		if (execute == "sortPriceDesc") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[1] = 'inverse-pricerank'");
		} else
		if (execute == "genreAction") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[2] = '501778'");
		} else
		if (execute == "genreChildren") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[2] = '501858'");
		} else
		if (execute == "genreComedy") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[2] = '501866'");
		} else
		if (execute == "genreDrama") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[2] = '501872'");
		} else
		if (execute == "genreSciFi") {
			eval("wO." + widget + "[0] = 1")
			eval("wO." + widget + "[2] = '501912'");
		}
	}
	
	if (approved == 1) {
		updateWidget(widget,WIDGET);
	}
}
function updateWidget(FILE,WIDGET) {
	var fileName = "php/" + FILE + ".php";
	
	var querystring = "";
	
	if (FILE == "shoppingcart") {
		var cartContent = shoppingCart.toString();
		querystring = "&content=" + removeCharacter(cartContent,",");
	} else {
		querystring = "&page=" + eval("wO." + FILE + "[0]") + "&sort=" + eval("wO." + FILE + "[1]") + "&node=" + eval("wO." + FILE + "[2]") + "&keyword=" + eval("wO." + FILE + "[3]");
	}

	document.getElementById(WIDGET).innerHTML = loadingImage;
	
	updatePage(fileName,WIDGET,querystring);
}

var searchPage = 1;
function updateSearch() {

	var parameter = document.getElementById("searchParameter").value;
		parameter = escape(parameter);

	wO.search[0] = 1;
	wO.search[3] = parameter;	
	
	updateWidget("search","drag_search");
}

var blink;
function executeSearch(PARAMETER) { if (PARAMETER != "") {
		
	var searchWidget = document.getElementById("drag_search");
	var searchAction = 0;
	
	if (searchWidget.style.display != "block") {
		searchAction = 1;
		blink = setInterval("blinkButton('search')",200);
	}
	
	if (searchAction == 0) {
		updateSearch();
	}
} }

var blinkLoop = 0;
function blinkButton(WIDGET) {
	var button = document.getElementById("drag_search5");	// Currently hard coded for the search button

	if (button.style.backgroundColor == "#446699" || button.style.backgroundColor == "rgb(68, 102, 153)") {
		button.style.backgroundColor = "#ac1818";
	} else {
		button.style.backgroundColor = "#446699";		
	}
	blinkLoop++;
	
	if (blinkLoop == 21) {
		clearInterval(blink);
		button.style.backgroundColor = "#446699";		
		blinkLoop = 0;
	}
}

function grabItem(OBJECT,e,WIDGET) {
	_currentZIndex++;
	document.getElementById(WIDGET).style.zIndex = _currentZIndex;

	if (e == null) { var e = window.event; }

	// Associate the Item Icon with a variable;
	var itemIcon = document.getElementById("itemIcon");
	icon = itemIcon;
	iconOut = 0;
	
	// Store the ID of the movie object;
	
	infoID = "info_" + OBJECT.id + Math.floor(Math.random()*10000)
	movieID = WIDGET + "__" + OBJECT.id;

	// Copy the thumbnail from the item to the icon
	document.getElementById("itemThumb").style.backgroundImage = "url(" + document.getElementById(OBJECT.id + "img").src + ")";

	// Display the Item Icon
	itemIcon.style.display = "block";
	icon.style.cursor = "move";

	// Position the Item Icon below your mouse pointer. The Item Icons dimensions are 70 x 85 pixels
	var xPos = e.clientX-35;
	var yPos = e.clientY-35-70;
	
	setPosition(itemIcon,xPos,yPos);

}
function moveItem(e) {
	if (e == null) { var e = window.event; }

	var X = e.clientX;
	var Y = e.clientY;
	
	setPosition(icon,X-35,Y-35-70);

	// Grab the parent object of the dragged item;
	var parent = document.getElementById(movieID.substr(0,movieID.search(/__/)));
	
	// Grab coordinates of the parent window ...
	var top = parseInt(parent.style.top)+30;
	var left = parseInt(parent.style.left);
	var bottom = top + parent.offsetHeight+70;
	var right = left + parent.offsetWidth;

	// Display the action icons
	var overlay = document.getElementById("itemOverlay");
	action = 0;

	if (X > left && X < right && Y > top && Y < bottom && iconOut == 0) {
		action = "none";
	} else {
		iconOut = 1;
		if (findShoppingCart(e)) {
			action = "shop";
			hoverShoppingCart(1);
		} else if (findTrashcan(e)) {
			action = "trash";
			hoverTrashcan(1);
		} else {
			action = "info";
			hoverShoppingCart(0);
			hoverTrashcan(0);
		}
	}
	
	switch (action) {
		case "none" : overlay.style.backgroundImage = "url('gfx/blank.gif')"; break;
		case "shop" : overlay.style.backgroundImage = "url('gfx/shopOK.png')"; break;
		case "info" : overlay.style.backgroundImage = "url('gfx/infoOK.png')"; break;
		case "trash" : if (document.getElementById(movieID.substr(movieID.search(/__/)+2)).className.search(" cart") > 0) { overlay.style.backgroundImage = "url('gfx/trashOK.png')"; } break;
	}

	setSize(shadow,450,357);
	_currentZIndex++;
	
	if (action == "info") {
		setPosition(shadow,X-30,Y-30-70);
		shadow.style.zIndex = _currentZIndex;
		shadow.style.display = "block";
		
		if (parseInt(shadow.style.top) < 35) { shadow.style.top = "35px"; }
		if (parseInt(shadow.style.top) > _pageHeight-100) { shadow.style.top = _pageHeight-100 + "px"; }
		if (parseInt(shadow.style.left) < 10) { shadow.style.left = "10px"; }

	} else {
		shadow.style.display = "none";	
	}

	if (parseInt(shadow.style.left)+shadow.offsetWidth > safeZone) {
		shadow.style.left = safeZone-shadow.offsetWidth + "px";
	}
}
function releaseItem(e) {
	if (e == null) { var e = window.event; }

	var X = e.clientX;
	var Y = e.clientY;

	icon.style.display = "none";
	icon.style.cursor = "auto";
	
	icon = "empty";

	if (action == "info") {
		var newdiv = document.createElement("div");
		var parent = document.getElementById("shoppingFloor");
		
		newdiv.setAttribute("id",infoID);
		
		parent.appendChild(newdiv);

		var asin = infoID.substring(5,infoID.search("-"));
		var newInfo = document.getElementById(infoID);

		newInfo.className = "movieInfo widget_info";

		_currentZIndex++;
		newInfo.style.zIndex = _currentZIndex;

		setPosition(newInfo,parseInt(shadow.style.left)-4,parseInt(shadow.style.top)-4);

		newInfo.innerHTML = '<img class="loading2" src="gfx/_loading.gif"></img>';
		shadow.style.display = "none";

		// AJAX start here
		updatePage("php/movieinfo.php",newInfo.id,"&asin=" + asin + "&widgetid=" + newInfo.id);
	
		if (newInfo.addEventListener) {
			newInfo.addEventListener("mousedown",grabInfo,false );
		} else if (newInfo.attachEvent) {
			newInfo.attachEvent("onmousedown",grabInfo);
		}
	}
	else if (action == "shop" && findShoppingCart(e)) {

		asin = infoID.substring(5,15)	// Grab the ASIN from the the ID of the dragItem.
		addContentShoppingCart(asin);	// Pass the ASIN to the Shopping Cart Content Handler.
	}
	else if (action == "trash" && findTrashcan(e)) {
		var itemIdentity = document.getElementById(movieID.substr(movieID.search(/__/)+2))
		var itemClasses = itemIdentity.className;
		
		if (itemClasses.search(" cart") > 0) {
			var itemToDiscard = itemIdentity.id.substr(0,10);
			
			var temp = shoppingCart.toString();
				temp = temp.replace(itemToDiscard,"");
				temp = temp.replace(",,",",");
				
				// Remove any commas that may appear first or last in the string. They would otherwise create empty entries in the array, which would break the script ...
				if (temp.substr(0,1) == ",") { temp = temp.substr(1); }
				if (temp.substr(temp.length-1) == ",") { temp = temp.substr(0,temp.length-1); }
				
				shoppingCart = temp.split(",");

				calculateValue();
				updateWidget("shoppingcart","drag_shoppingcart");
				hoverTrashcan(0);
		}
	}

	action = "none";
	infoID = "none";
	
	document.onmousemove = null;
	document.onselectstart = null;
}

var pSum = 0;
var page = 0;

function selectPage(ID,CLASS) {

	// Dissect the CLASS
	page = CLASS.substring(4,CLASS.search("_"));
	pSum = CLASS.substring(CLASS.search("_")+1);

	var objectToPage = eval("wO." + page + "[0]");

	var slider = document.getElementById("pageSlider");
	var parent = document.getElementById("drag_" + page);

	if (slider.style.display == "block") {
		slider.style.display = "none";
	} else {
		slider.style.display = "block";
		_currentZIndex++;
		slider.style.zIndex = _currentZIndex;
		slider.style.top = parseInt(parent.style.top)-1 + "px";
		slider.style.left = parseInt(parent.style.left)-21 + "px";
	}
}

var newPage;
var slideUpdate = 0;

function adjustPage(e) {
	var handle = document.getElementById("slideHandle");
	var parent = parseInt(document.getElementById("pageSlider").style.left);

	if (e == null) { var e = window.event; }

	var X = e.clientX;
	var offsetX = X-parent-Math.floor((handle.offsetWidth)/2);
	
	if (offsetX < 0) { offsetX = 0; } else if (offsetX > 380) { offsetX = 380; }

	setPosition(handle,offsetX,"");
	
	var pageFactor;

	if (offsetX >= 90 && offsetX <= 290) { pageFactor = 0.1; } else
	if (offsetX >= 40 && offsetX <= 330) { pageFactor = 0.2; } else
	if (offsetX >= 10 && offsetX <= 370) { pageFactor = 0.5; } else { pageFactor = 0; }

	newPage = 0;

	pCur = eval("wO." + page + "[0]")*1;

	if (pageFactor == 0.1) { newPage = pCur+(Math.floor((offsetX-190)*pageFactor)); }
	if (pageFactor == 0.2) {
		if (offsetX < 90) { newPage = pCur+(Math.floor((offsetX-90)*pageFactor))-10; }
		if (offsetX > 290) { newPage = pCur+(Math.floor((offsetX-290)*pageFactor))+10; }
	}
	if (pageFactor == 0.5) {
		if (offsetX < 40) { newPage = pCur+(Math.floor((offsetX-40)*pageFactor))-18; }
		if (offsetX > 330) { newPage = pCur+(Math.floor((offsetX-330)*pageFactor))+18; }
	}
	
	if (newPage <= 0) { newPage = 1; }
	
	if (pageFactor == 0) {
		document.getElementById(pageCountID).innerHTML = "abort page slide ...";
		slideUpdate = 0;
	} else if (newPage == pCur) {
		document.getElementById(pageCountID).innerHTML = "stay on page " + newPage + " of " + pSum;	
		slideUpdate = 0;
	} else {
		document.getElementById(pageCountID).innerHTML = "go to page " + newPage + " of " + pSum;
		slideUpdate = 1;
	}
}

function releaseSlider(e) {
	sliding = 0;

	if (slideUpdate == 1) {
		var widget = pageCountID.substr(6);
		
		eval("wO." + widget + "[0] = " + newPage)

		updateWidget(widget,"drag_" + widget);
	} else {
		document.getElementById(pageCountID).innerHTML = currentPageString;	
	}

	document.getElementById("pageSlider").style.display = "none";
	
	document.onmousemove = null;
	document.onselectstart = null;
}

var dragItem = "nothing";

function grabInfo(e) {

	// Make sure that both IE and Firefox understand what object is grabbed.
	if (e == null) { var e = window.event; }
	var target = e.target != null ? e.target : e.srcElement;

	if (target.id.substr(0,5) == "info_") {

		// Announce the drag item
		dragItem = target;
	
		// Move the target to the front
		_currentZIndex++;
		target.style.zIndex = _currentZIndex;

		// Add transparency to the target
		target.className += " transparent";

		// grab the mouse position

		_startX = e.clientX;
		_startY = e.clientY;

		// grab the clicked element's position

		_offsetX = getNum(target.style.left);
		_offsetY = getNum(target.style.top);
	}
}

var overShoppingCart = 0;
var overTrashcan = 0;

function moveInfo(e) {
	var X,Y,posX,posY;

	if (e == null) { var e = window.event; }
	
	X = e.clientX;
	Y = e.clientY;
	
	posX = _offsetX + X - _startX;
	posY = _offsetY + Y - _startY;

	setPosition(dragItem,posX,posY);

	if (posX < 0) { dragItem.style.left = "0px"; }
	if (posY > _pageHeight-100) { dragItem.style.top = _pageHeight-100 + "px"; }
	if (posY < 30) { dragItem.style.top = "30px"; }
	
	if (posX+dragItem.offsetWidth > safeZone) {
		setSize(shadow,450,360);
		setPosition(shadow,safeZone-dragItem.offsetWidth,posY);
		if (overTrashcan != 1 && overShoppingCart != 1) { shadow.style.display = "block"; }
	} else {
		if (shadow.style.display == "block") {
			shadow.style.display = "none";
		}
	}
	
	if (X >= safeZone+10) {
		// Detect if the window is over the TRASHCAN
		if (Y >= tcTop+70 && overTrashcan == 0) {
			overTrashcan = 1;
			hoverTrashcan(1);
			shadow.style.display = "none";
		} else if (Y < tcTop+70 && overTrashcan == 1) {
			overTrashcan = 0;
			hoverTrashcan(0);			
		}
		// Detect if the window is over the SHOPPING CART
		if (Y >= scTop+70 && Y <= scBottom+70 && overShoppingCart == 0) {
			overShoppingCart = 1;
			hoverShoppingCart(1);
			shadow.style.display = "none";
		} else if ((Y <= scTop+70 || Y >= scBottom+70) && overShoppingCart == 1) {
			overShoppingCart = 0;
			hoverShoppingCart(0);		
		}
	} else {
		if (overTrashcan == 1) {
			overTrashcan = 0;
			hoverTrashcan(0);
		}
		if (overShoppingCart == 1) {
			overShoppingCart = 0;
			hoverShoppingCart(0);
		}
	}
}
function releaseInfo(e) {
	if (e == null) { var e = window.event; }

	var X = e.clientX;
	var Y = e.clientY;

	dragItem.className = dragItem.className.replace(" transparent","")

	// Detect if the window was dropped over the TRASHCAN
	if (findTrashcan(e)) {
		removeWidget(dragItem);
	}
	
	// Detect if the window was dropped over the SHOPPING CART
	else if (findShoppingCart(e)) {
		asin = dragItem.id.substring(5,15)	// Grab the ASIN from the the ID of the dragItem.
		parent.removeChild(dragItem);		// Destroy the widget
		shadow.style.display = "none";

		addContentShoppingCart(asin);		// Pass the ASIN to the Shopping Cart Content Handler.
	}
	// otherwise ...
	else {
		var rightEdge = eval(parseInt(dragItem.style.left)+dragItem.offsetWidth);
		if (rightEdge > safeZone) {
			dragItem.style.left = safeZone-dragItem.offsetWidth + "px";
		}
	}
	
	dragItem = "nothing";

	document.onmousemove = null;
	document.onselectstart = null;
}
function addPrice(ASIN,PRICE) {

	var itemValue = PRICE.substr(1);
	var itemObject = eval("itemPrice." + ASIN + " = '" + itemValue + "'");

}

function removeWidget(OBJECT) {
	// Create shortcut to the parent of the item.
	var parent = document.getElementById("shoppingFloor");

	parent.removeChild(OBJECT);
	hoverTrashcan(0);
	shadow.style.display = "none";
}















