<!--

	// preload stars
	var stars = new Array();
	var starsr = new Array();
	var xmarks = new Array();
	var starnames = new Array("revwh","revgr","revbl","revor2","revga","revor","revgr2","revwh2","revga2","revgr3","revpl2","revpl");
	var xnames = new Array("nostar","nostarf1","nostarf2","nostarf3","nostarf4","nostarf5","nostarf6","nostarf7","nostarf8","nostarf9","nostarf10","nostarf11");

	var completed = new Array();
	var completedval = new Array();

	// ajax vars
	var RequestArray = new Array();
	var XMLStream = null;
	var ResponseJunk = '';
	var ListInit = false;

	CreateStream();
	loadStars();

	function pickImage(imgindex)
	{
		document.chooseimagef.n.value=imgindex;
		document.chooseimagef.submit();
	}

	function loadStars()
	{
		// just load the first couple that we need for the postbox
		for (var i=0;i<12;i++)
		{
			stars[i] = new Image();
			starsr[i] = new Image();
			xmarks[i] = new Image();
			stars[i].src = "/imgs/" + starnames[i] + "_1.png";
			starsr[i].src = "/imgs/" + starnames[i] + "_2.png";
			xmarks[i].src = "/imgs/" + xnames[i] + ".png";
		}
	}

	function MOfillStar(starcount,lastclick,currentSpan,starcolor,unfillcolor,donecolor)
	{
		var regVal = registeredValue(currentSpan);

		if (regVal != -2)
		{
			lastclick = true;
			starcount = regVal;
		}

		fillStar(starcount,lastclick,currentSpan,starcolor,unfillcolor,donecolor);
	}

	function fillStar(starcount,lastclick,currentSpan,starcolor,unfillcolor,donecolor)
	{
		var regVal = registeredValue(currentSpan);

		if (regVal != -2 && starcount == -2)
		{
			starcount = regVal;
			lastclick = true;
		}

		if (currentSpan == "rnewrev")
		{
			switch (starcount)
			{
				case -1:
					setElemInner("rstard","0 &#8211; No redeeming qualities");
					break;
				case 0:
					setElemInner("rstard",(starcount + .5) + " &#8211; One good element");
					break;
				case .5:
					setElemInner("rstard",(starcount + .5) + " &#8211; Waste of time");
					break;
				case 1:
					setElemInner("rstard",(starcount + .5) + " &#8211; Not good");
					break;
				case 1.5:
					setElemInner("rstard",(starcount + .5) + " &#8211; Major flaws");
					break;
				case 2:
					setElemInner("rstard",(starcount + .5) + " &#8211; Just okay");
					break;
				case 2.5:
					setElemInner("rstard",(starcount + .5) + " &#8211; Pretty good");
					break;
				case 3:
					setElemInner("rstard",(starcount + .5) + " &#8211; Excellent, with flaws");
					break;
				case 3.5:
					setElemInner("rstard",(starcount + .5) + " &#8211; Excellent");
					break;
				case 4:
					setElemInner("rstard",(starcount + .5) + " &#8211; Almost perfect");
					break;
				case 4.5:
					setElemInner("rstard",(starcount + .5) + " &#8211; Perfect");
					break;
				default:
					setElemInner("rstard","Click on a star to rate");
			}
		}


		//alert("my starcount:'" + starcount + "'");

		if (starcount >= -1)
		{
			parentElem = document.getElementById(currentSpan + "_x");
			if (lastclick == true)
			{
				parentElem.src = xmarks[donecolor].src;
			}
			else
			{
				parentElem.src = xmarks[starcolor].src;
			}
		}
		else // mouseout
		{
			parentElem = document.getElementById(currentSpan + "_x");
			parentElem.src = xmarks[unfillcolor].src;
		}

		for (var i=0;i<5;i+=.5)
		{
			var parentElem = null;

			if (i%1 == 0)
			{
				parentElem = document.getElementById(currentSpan + "_l_" + i);
			}
			else
			{
				parentElem = document.getElementById(currentSpan + "_r_" + i);
			}

			if (i<=starcount)
			{
				if (lastclick == true)
				{
					if (i%1 == 0)
					{
						parentElem.src = stars[donecolor].src;
					}
					else
					{
						parentElem.src = starsr[donecolor].src;
					}
				}
				else
				{
					if (i%1 == 0)
					{
						parentElem.src = stars[starcolor].src;
					}
					else
					{
						parentElem.src = starsr[starcolor].src;
					}
				}
			}
			else
			{
				if (i%1 == 0)
				{
					parentElem.src = stars[unfillcolor].src;
				}
				else
				{
					parentElem.src = starsr[unfillcolor].src;
				}
			}
		}

	}

	function registeredValue(currentSpan)
	{
		var rtnVal = -2;
		//var compidx = completed.indexOf(currentSpan);
		var compidx = findIndex(completed,currentSpan);

		if (compidx != -1)
		{
			rtnVal = parseFloat(completedval[compidx]);
		}

		return rtnVal;
	}

	// since IE apparently doesn't support indexOf on arrays...
	function findIndex(tmpArr,FindItem)
	{
		var rtnVal = -1;

		for (i=0;i<tmpArr.length;i++)
		{
			if (tmpArr[i] == FindItem)
			{
				rtnVal = i;
				break;
			}
		}

		return rtnVal;
	}

	function registerClick(starcount,currentSpan,starcolor,unfillcolor,donecolor)
	{
		unregisterClick(currentSpan);
		completed.push(currentSpan);
		completedval.push(starcount);

		if (currentSpan == "rnewrev")
		{
			switch (starcount)
			{
				case -2:
					document.reviewsubf.m.value = -1;
					break;
				case -1:
					document.reviewsubf.m.value = 0;
					break;
				default:
					document.reviewsubf.m.value = starcount + .5;
			}

			swapPT(2);
		}

		fillStar(starcount,true,currentSpan,starcolor,unfillcolor,donecolor);

	}

	function createCookie(cname,cval)
	{
		var expire = new Date();
		expire.setTime(expire.getTime() + 31536000000); // expire in a year
		document.cookie = cname + "=" + escape(cval) + ";expires=" + expire.toGMTString() + ";path=/";
	}

	function destroyCookie(cname)
	{
		var expire = new Date();
		expire.setTime(473385600000); // expire now
		document.cookie = cname + "=;expires=" + expire.toGMTString() + ";path=/";
	}

	function getCookie(cname)
	{
		var rtnVal = "";
		var tmpInt = document.cookie.indexOf(cname + "=");

		if (tmpInt > -1)
		{
			tmpInt += (cname.length + 1);
			var tmpInt2 = document.cookie.indexOf(";",tmpInt);

			if (tmpInt2 > tmpInt)
			{
				rtnVal = unescape(document.cookie.substring(tmpInt,tmpInt2));
			}
			else
			{
				rtnVal = unescape(document.cookie.substring(tmpInt));
			}
		}

		return rtnVal;
	}

	function saveRevData()
	{
		var rating = document.reviewsubf.m.value; // rev rating
		var revid = document.reviewsubf.n.value; // rev id
		var revtext = document.reviewsubf.o.value; // rev text

		var TitleElem = document.getElementById('ttl3');

		if (TitleElem != null)
		{
			var titletext = TitleElem.innerHTML;

			titletext = titletext.replace(/\x01/g,'');
			revtext = revtext.replace(/\x01/g,'');

			if (revtext.length > 0)
			{
				createCookie('saverev',rating + "\x01" + revid + "\x01" + revtext + "\x01" + titletext);
			}
		}
	}

	function clearRevData()
	{
		destroyCookie('saverev');
		destroyCookie('boxlogin');
		document.reviewsubf.m.value = -1;
		document.reviewsubf.n.value = 0;
		document.reviewsubf.o.value = "";
		calcRevLen();

		chooseTitle(false);
	}

	function clearRevTitle()
	{
		document.reviewsubf.n.value = 0;
		chooseTitle(false);
	}

	function loadRevData()
	{
		var revData = getCookie('saverev');

		if (revData.length > 0)
		{
			var ResultArr = revData.split("\x01");

			if (ResultArr.length == 4)
			{
				if (typeof(document.reviewsubf) != "undefined")
				{
					document.reviewsubf.m.value = ResultArr.shift();
					document.reviewsubf.n.value = ResultArr.shift();
					document.reviewsubf.o.value = ResultArr.shift();

					setElemInner('ttl3',ResultArr.shift());

					if (parseInt(document.reviewsubf.n.value) > 0)
					{
						chooseTitle(true);
					}
					else
					{
						chooseTitle(false);
					}

					var starRating = parseFloat(document.reviewsubf.m.value);

					if (starRating != -1)
					{
						if (starRating == 0)
						{
							starRating = -1;
						}
						else
						{
							starRating -= .5;
						}

						registerClick(starRating,'rnewrev',1,0,2);
					}
				}
			}
		}
	}

	function unregisterClick(currentSpan)
	{
		if (currentSpan == "rnewrev")
		{
			document.reviewsubf.m.value = -1;
		}

		//var compidx = completed.indexOf(currentSpan);
		var compidx = findIndex(completed,currentSpan);

		if (compidx != -1)
		{
			completed.splice(compidx, 1);
			completedval.splice(compidx, 1);
		}
	}

	function spanIsComplete(currentSpan)
	{
		var rtnVal = false;

		for (var i=0;i<completed.length;i++)
		{
			if (completed[i] == currentSpan)
			{
				rtnVal = true;
				break;
			}
		}

		return rtnVal;
	}


	function CreateStream()
	{
		if (window.XMLHttpRequest)
		{
			XMLStream = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			XMLStream = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			alert('Error, XMLHttpRequests are not supported!');
		}
	}


	function ajaxSearch()
	{
		setElemInner('searchresults',"Searching...");
		showElementRaw('resultsarea');
		var SExtra = '';

		if (parseInt(document.searchareaf.m.value) == 3)
		{
			SExtra = "&author=" + encodeURIComponent(document.searchareaf.o.value);
		}

		NewRequest(true,"ajax.php?p=" + encodeURIComponent(document.searchareaf.p.value) + "&secref=" + SecID + "&m=" + encodeURIComponent(document.searchareaf.m.value) + "&search=" + encodeURIComponent(document.searchareaf.n.value) + SExtra,"");
	}

	function ajaxSearch2()
	{
		setElemInner('aeditresults',"Searching...");
		showElementRaw('eresultsarea');
		NewRequest(true,"ajax.php?p=" + encodeURIComponent(document.aeditareaf.p.value) + "&secref=" + SecID + "&m=" + encodeURIComponent(document.aeditareaf.m.value) + "&search=" + encodeURIComponent(document.aeditareaf.n.value),"");
	}

	function ajaxAdd()
	{
		// if(confirm(\'Are you sure you want to delete this review?\')){document.delrevf.m.value={MOVID};document.delrevf.submit()}

		NewRequest(false,"ajax.php","p=" + encodeURIComponent(document.addareaf.p.value) + "&secref=" + SecID + "&q=" + encodeURIComponent(document.addareaf.q.value) + "&r=" + encodeURIComponent(document.addareaf.r.value) + "&s=" + encodeURIComponent(document.addareaf.s.value) + "&aplat=" + encodeURIComponent(document.addareaf.aplat.value));
	}

	function editListName(listid)
	{
		document.deletelistt.p.value = 28;
		document.deletelistt.m.value = listid;

		var newlist = prompt("Enter new list name","");
		if (newlist != null && newlist != "")
		{
			document.deletelistt.n.value = newlist;
			document.deletelistt.submit();
		}
	}

	function deleteList(listid)
	{
		document.deletelistt.p.value = 29;
		document.deletelistt.m.value = listid;
		document.deletelistt.n.value = '';
		document.deletelistt.submit();
	}

	function ajaxLAdd()
	{
		hideElement('addlmodal');
		NewRequest(false,"ajax.php","p=" + encodeURIComponent(document.addlareaf.p.value) + "&secref=" + SecID + "&q=" + encodeURIComponent(document.addlareaf.q.value) + "&r=" + encodeURIComponent(document.addlareaf.r.value));
		showElementRaw('listmodal');
	}

	function addToList(listid,itemid)
	{
		NewRequest(false,"ajax.php","p=31&secref=" + SecID + "&q=" + encodeURIComponent(listid) + "&r=" + encodeURIComponent(itemid));
		// hideElementRaw('listmodal');
	}

	function removeFromList(listid,itemid)
	{
		NewRequest(false,"ajax.php","p=30&secref=" + SecID + "&q=" + encodeURIComponent(listid) + "&r=" + encodeURIComponent(itemid));
		// hideElementRaw('listmodal');
	}

	function showList(itemid)
	{
		if (ListInit == false)
		{
			ListInit = true;
			fetchL(itemid);
		}
		showElementRaw('listmodal');
	}

	function fetchL(itemid)
	{
		NewRequest(true,"ajax.php?p=34&secref=" + SecID + "&m=" + encodeURIComponent(itemid),"");
	}

	function editReview(reviewid)
	{
		NewRequest(true,"ajax.php?p=81&secref=" + SecID + "&m=" + encodeURIComponent(reviewid),"");
		window.scroll(900,0);
	}

	function StripPage(my_page)
	{
		var rtn_url = '';
		tmpstr = my_page.replace('\\','/'); // Make sure our slashes are all consistent /
		slash_location = tmpstr.lastIndexOf('/');  // search for last slash

		if (slash_location == -1)
		{
			// No slashes in string...
		}
		else if ( (slash_location + 1 == tmpstr.length) )
		{
			// Last character is a slash - that shouldn't be.
			rtn_url = '';
		}
		else
		{
			// cut it
			tmpstr = tmpstr.substring(slash_location + 1);
		}

		if ( (tmpstr == '.') || (tmpstr == '..') )
		{
			rtn_url = '';
		}
		else
		{
			rtn_url = tmpstr;
		}

		return rtn_url;
	}

	// For it to work in Mozilla URL must always be relative (for security reasons I guess)
	function NewRequest(isGet,URL,Payload)
	{
		//alert('url:\'' + URL + '\'');
		// Check the URL here to make sure we never download something vulnerable.
		URL = StripPage(URL);

		if (URL != '')
		{
			ResponseJunk = ResponseJunk + "New req called: get:" + isGet + ";url:" + URL + ";pay:" + Payload;
			//alert("\nNew req called: " + isGet + "\n" + URL + "\n" + Payload);

			if (XMLStream == null)
				return;

			if (isGet == true)
			{
				var ReqType = "GET";
			}
			else
			{
				var ReqType = "POST";
			}

			if (XMLStream.readyState == 4 || XMLStream.readyState == 0)
			{
				ResponseJunk = ResponseJunk + "\nSending new req";
				// Clear errors
				//ClearError();

				// Safe to send our request
				try
				{
					XMLStream.open(ReqType, URL, true);

					if (ReqType == "POST")
						XMLStream.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

					XMLStream.onreadystatechange = HandleReturnData; // Have to add this each time, since it appears
												// to get cleared after the response stream is done
											// Also note that adding this before the stream is opened seems to cause
											//	some unpredictable behavior in IE sometimes.  Why can't everything
											//	work in firefox and IE at the <i>same</i> time -_-;;
					XMLStream.send(Payload);
				}
				catch (e)
				{
					alert("Error: " + e);  // Catch permission exception in Mozilla
				}
			}
			else
			{
				ResponseJunk = ResponseJunk + "\nRequest queued";
				//alert("Request queued: " + isGet + "\n" + URL + "\n" + Payload);
				// Queue our request, it isnt ready yet.
				RequestArray.push(new Array(isGet, URL, Payload))
			}
		}
	}


	function ResizeSearch()
	{
		SizeSearch("searchresults","searchscroll",310)
	}

	function ResizeSearch2()
	{
		SizeSearch("aeditresults","aeditscroll",310)
	}

	function ResizeList()
	{
		SizeSearch("listresults","listscroll",140)
	}

	function ResizeComments()
	{
		SizeSearch("commentsresults","commentsd",225)
	}

	function SizeSearch(DE,SE,tarsize)
	{
		var DataElement = document.getElementById(DE);
		var ScrollElement = document.getElementById(SE);

		if (DataElement.offsetHeight > ScrollElement.offsetHeight)
		{
			var PlainWidth = ScrollElement.offsetWidth;
			var ScrollWidth = ScrollElement.clientWidth;
			ScrollElement.style.width = (tarsize+(PlainWidth-ScrollWidth)) + 'px';
		}
		else
		{
			ScrollElement.style.width = tarsize + 'px';
		}
	}

	function MOvSearchCell(divObj,tText,aText,iURL,revcnt)
	{
		//divObj.className='row hover';
		CreateSearchTT(divObj,tText,aText,iURL,revcnt)
	}

	function MOuSearchCell(divObj)
	{
		//divObj.className='row';
		DestroySearchTT(divObj);
	}

	function CreateSearchTT(divObj,tText,aText,iURL,revcnt)
	{
		var revword = revcnt + '&nbsp;Reviews';

		if (revcnt == 1)
		{
			revword = revcnt + '&nbsp;Review';
		}
		else if (revcnt < 0)
		{
			revword = "Alternate Title";
		}

		setElemInner('ttrev', revword);
		setElemInner('ttimg','<img src="' + iURL + '" alt="" />');
		//setPos('ttbox',100,100,200,200);
		divObj.onmousemove = moveTT;
		showElementRaw('ttbox');
	}

	function CreateLatestTT(divObj,iURLs)
	{
		if (iURLs.length > 0)
		{
			var ResultArr = iURLs.split(",");
			var imgStr = "";

			while (ResultArr.length > 0)
			{
				imgStr += '<img src="' + ResultArr.shift() + '" alt="" />';
			}

			if (imgStr.length > 0)
			{
				setElemInner('ttimg2',imgStr);
				divObj.onmousemove = moveTT2;
				showElementRaw('ttbox2');
			}
		}
	}

	function DestroySearchTT(divObj)
	{
		divObj.onmousemove = null;
		hideElementRaw('ttbox');
		setPos2('ttbox',-1000,-1000);
	}

	function DestroyLatestTT(divObj)
	{
		if (divObj != null)
		{
			divObj.onmousemove = null;
		}
		hideElementRaw('ttbox2');
		setPos2('ttbox2',-1000,-1000);
	}

	function DestroyLatestTTbyid(divObjid)
	{
		DestroyLatestTT(document.getElementById(divObjid));
	}

	function HandleReturnData()
	{
		// Process request...

		// States:
		// 0 - uninit (open not called yet)
		// 1 - loading (send not called yet)
		// 2 - loaded (send called, got headers and status)
		// 3 - interactive (downloading, partial data)
		// 4 - completed (finished all ops)
		//

		try {
			ResponseJunk = ResponseJunk + "\nRS:" + XMLStream.readyState + ";stat:" + XMLStream.status + ";";
		}
		catch (e)
		{
			ResponseJunk = ResponseJunk + "\nHRD Err: " + e;
		}

		if (XMLStream.readyState == 4)
		{
			if (XMLStream.status == 200)
			{
				var newStr = XMLStream.responseText;

				var tmpcount = 0;

				var ResultArr = newStr.split("\x02"); // split lines

				var SearchAdded = false;
				var SearchAdded2 = false;
				var ListAdded = false;

				while (ResultArr.length > 0)
				{
					var VarArr = ResultArr.shift().split("\x01");

					if (VarArr.length > 0)
					{
						var RtnCode = VarArr.shift();//.charCodeAt(0);
						var TempElement = null;

						RtnCode = parseInt(RtnCode);

						switch (RtnCode)
						{
							case 5: // search results
								if (VarArr.length == 7)
								{
									// RCount
									// Title
									// Year
									// id
									var tmprcount = VarArr.shift();
									var tmptitle = VarArr.shift();
									var tmpyear = VarArr.shift();
									var tmpid = VarArr.shift();
									var tmpimg = VarArr.shift();
									var tmprev = VarArr.shift();
									var tmpurl = VarArr.shift();

									if (tmprev == "1")
									{
										tmprev = "<img class=\"seen\" src=\"/imgs/chkseen.png\" alt=\"\" />&nbsp;";
									}
									else if (tmprev == "2")
									{
										tmprev = "<img class=\"seen\" src=\"/imgs/chkseen2.png\" alt=\"\" />&nbsp;";
									}
									else
									{
										tmprev = '';
									}

									if (tmpid == "0")
									{
										var SearchLine = '';
									}
									else
									{
										//var SearchLine = '<span class="stats"><span class="count">' + tmprev + tmprcount + '</span></span><span class="title">' + tmptitle + ' <span class="date">(' + tmpyear + ')</span></span>';
										//var SearchLine = '<div class="row" onmouseover="javascript:MOvSearchCell(this,\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpyear.replace(/&/g,'&amp;') + '\',\'' + tmpimg + '\')" onmouseout="javascript:MOuSearchCell(this)" onclick="javascript:submitSearch(\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpid + '\');"><span class="stats"><span class="count">' + tmprev + tmprcount + '</span></span><span class="title">' + tmptitle + ' <span class="date">(' + tmpyear + ')</span></span></div>';
										var SearchLine = '<div class="clrrowl" onmouseover="javascript:MOvSearchCell(this,\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpyear.replace(/&/g,'&amp;') + '\',\'' + tmpimg + '\',' + tmprcount + ')" onmouseout="javascript:MOuSearchCell(this)" onclick="javascript:submitSearch(\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpid + '\');hideElement(\'searchmodal\');">' + tmprev + '<span>' + tmptitle + '</span> (' + tmpyear + ')<div class="seervws"><a href="/' + tmpurl + '" target="_blank" onclick="stopBubble(event)"><img title="See item reviews in a new window" src="/imgs/seervws.png" alt="See item reviews in a new window" /></a></div></div>';

										//var SearchLine = '<div class="lavenderbg3 searchrline" onmouseover="javascript:this.className=\'lavenderbg lavender3 searchrline\'" onmouseout="javascript:this.className=\'lavenderbg3 black searchrline\'" onclick="javascript:submitSearch(\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpid + '\');"><div class="srev">' + tmprcount + '</div><div class="stitle">' + tmptitle + '</div><div class="syear">' + tmpyear + '</div></div>';

									}

									TempElement = document.getElementById("searchresults");

									if (TempElement != null)
									{
										TempElement.innerHTML = TempElement.innerHTML + SearchLine;
									}

									tmpcount++;
									SearchAdded = true;
								}
								break;
							case 18:
								if (VarArr.length == 1)
								{
									var tmptext = VarArr.shift();
									if (tmptext.length > 0)
									{
										setElemInner('rvhdr11',tmptext);
										showElementRaw('rvhdr11');
									}
								}
								break;
							case 25:
								var qval = VarArr.shift();

								if (qval == document.comf.q.value)
								{
									if (ElementVisible('commodal') == 0) // modal hidden and still on old value, clear it
									{
										document.comf.q.value = -1;
										document.comf.r.value = '';
									}
								}
								break;
							case 32:
								setElemInner("listresults","");
								ListAdded = true;
								break;
							case 33:
								setElemInner("listresults","No lists found.");
								ListAdded = true;
								break;
							case 34:
								// show lists
								if (VarArr.length == 5)
								{
									var tmptitle = VarArr.shift();
									var tmpid = VarArr.shift();
									var tmpitemid = VarArr.shift();
									var tmpexists = parseInt(VarArr.shift());
									var tmpurl = VarArr.shift();
									var functionname = "addToList";

									if (tmpexists > 0)
									{
										tmpexists = "<img class=\"seen\" src=\"/imgs/chkseen.png\" alt=\"\" />&nbsp;";
										functionname = "removeFromList";
									}
									else
									{
										tmpexists = "";
									}

									var ListLine = '<div class="clrrowl" onclick="javascript:' + functionname + '(\'' + tmpid + '\',\'' + tmpitemid + '\');">' + tmpexists + '<span>' + tmptitle + '</span><div class="seervws"><a href="/' + tmpurl + '" target="_blank" onclick="stopBubble(event)"><img title="View list in a new window" src="/imgs/seervws.png" alt="" /></a></div></div>';



									TempElement = document.getElementById("listresults");

									if (TempElement != null)
									{
										TempElement.innerHTML = TempElement.innerHTML + ListLine;
									}
									ListAdded = true;
								}
								break;
							case 45:
								if (VarArr.length == 1)
								{
									showShort(VarArr.shift());
								}
								break;
							case 46:
								if (VarArr.length == 1)
								{
									showElementRaw(VarArr.shift());
								}
								break;
							case 47:
								if (VarArr.length == 1)
								{
									hideElementRaw(VarArr.shift());
								}
								break;
							case 50:
								if (VarArr.length == 1)
								{
									var tmpTTdiv = VarArr.shift();
									DestroyLatestTTbyid(tmpTTdiv);
								}
								break;
							case 55:
								if (VarArr.length == 3)
								{
									var newType = parseInt(VarArr.shift());
									var targetID = VarArr.shift();
									var newID = VarArr.shift();

									swapIcons(newType, newID, targetID);
								}
								break;
							case 71: // error message
								if (VarArr.length == 1)
								{
									var tmperr = VarArr.shift();
									alert(tmperr);
								}
								break;
							case 74: // ajax buttons
								if (VarArr.length == 1)
								{
									var tmptext = VarArr.shift();
									if (tmptext.length > 0)
									{
										setElemInner('rvlnk',tmptext);
									}
								}
								break;
							case 75: // ajax description
								if (VarArr.length == 1)
								{
									var tmptext = VarArr.shift();
									if (tmptext.length > 0)
									{
										setElemInner('rvhdr5',tmptext);
									}
								}
								break;
							case 76: // clear search
								setElemInner("aeditresults","");
								SearchAdded2 = true;
								break;
							case 77: // no search results
								setElemInner("aeditresults","No matches found.");
								SearchAdded2 = true;
								break;
							case 78: // search results
								if (VarArr.length == 7)
								{
									// RCount
									// Title
									// Year
									// id
									var tmprcount = VarArr.shift();
									var tmptitle = VarArr.shift();
									var tmpyear = VarArr.shift();
									var tmpid = VarArr.shift();
									var tmpimg = VarArr.shift();
									var tmprev = VarArr.shift();
									var tmpurl = VarArr.shift();

									if (tmprev == "1")
									{
										tmprev = "<img class=\"seen\" src=\"/imgs/chkseen.png\" alt=\"\" />&nbsp;";
									}
									else if (tmprev == "2")
									{
										tmprev = "<img class=\"seen\" src=\"/imgs/chkseen2.png\" alt=\"\" />&nbsp;";
									}
									else
									{
										tmprev = '';
									}

									if (tmpid == "0")
									{
										var SearchLine = '';//'<div class="row"><span class="title">' + tmptitle + ' <span class="date">(' + tmpyear + ')</span></span><span class="stats"><span class="count">' + tmprcount + '</span></span></div>';
									}
									else
									{
										//var SearchLine = '<div class="row" onmouseover="javascript:MOvSearchCell(this,\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpyear.replace(/&/g,'&amp;') + '\',\'' + tmpimg + '\')" onmouseout="javascript:MOuSearchCell(this)" onclick="javascript:submitLink(\'' + tmptitle.replace(/&/g,'\\&') + '\',\'' + tmpid + '\');"><span class="title">' + tmptitle + ' <span class="date">(' + tmpyear + ')</span></span><span class="stats"><span class="count">' + tmprev + tmprcount + '</span></span></div>';
										//var SearchLine = '<div class="lavenderbg3 searchrline" onmouseover="javascript:this.className=\'lavenderbg lavender3 searchrline\'" onmouseout="javascript:this.className=\'lavenderbg3 black searchrline\'" onclick="javascript:submitSearch(\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpid + '\');"><div class="srev">' + tmprcount + '</div><div class="stitle">' + tmptitle + '</div><div class="syear">' + tmpyear + '</div></div>';
										var SearchLine = '<div class="clrrowl" onmouseover="javascript:MOvSearchCell(this,\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpyear.replace(/&/g,'&amp;') + '\',\'' + tmpimg + '\',' + tmprcount + ')" onmouseout="javascript:MOuSearchCell(this)" onclick="javascript:submitLink(\'' + tmptitle.replace(/&/g,'&amp;') + '\',\'' + tmpid + '\');">' + tmprev + '<span>' + tmptitle + '</span> (' + tmpyear + ')<div class="seervws"><a href="/' + tmpurl + '" target="_blank" onclick="stopBubble(event)"><img title="See item reviews in a new window" src="/imgs/seervws.png" alt="" /></a></div></div>';

									}

									TempElement = document.getElementById("aeditresults");

									if (TempElement != null)
									{
										TempElement.innerHTML = TempElement.innerHTML + SearchLine;
									}

									tmpcount++;
									SearchAdded2 = true;
								}
								break;
							case 80:
								if (VarArr.length == 2)
								{
									var tmpid = VarArr.shift();
									var tmptitle = VarArr.shift();

									document.reviewsubf.n.value = tmpid;

									setElemInner("ttl3",tmptitle + ' <a href="javascript:clearRevTitle()" class="redb" title="Remove title">[x]</a>');
									chooseTitle(true);

									hideElement('addmodal');
								}
							case 81:
								if (VarArr.length == 5)
								{
									// movid
									// movtitle
									// revrating
									// revtext
									var tmpid = VarArr.shift();
									var tmptitle = VarArr.shift();
									var tmprating = parseFloat(VarArr.shift());
									var tmptext = VarArr.shift();
									var tmpvid = VarArr.shift();

									document.reviewsubf.n.value = tmpid;

									document.reviewsubf.o.value = tmptext;
									calcRevLen();

									if (tmprating == 0)
									{
										tmprating = -1;
									}
									else
									{
										tmprating = tmprating -.5;
									}

									document.reviewsubf.l.value = tmpvid;

									if (tmpvid != '')
									{
										showElementRaw('vtxt');
									}
									else
									{
										hideElementRaw('vtxt');
									}

									registerClick(tmprating,'rnewrev',1,0,2);

									setElemInner("ttl3",tmptitle + ' <a href="javascript:clearRevTitle()" class="redb" title="Remove title">[x]</a>');
									chooseTitle(true);
								}
								break;
							case 15:
							case 27:
							case 93: // replace element
								if (VarArr.length == 2)
								{
									var tmpelemid = VarArr.shift();
									var tmpelemcont = VarArr.shift();

									setElemInner(tmpelemid,tmpelemcont);
								}
								else
								{
									//alert("elements: " + VarArr.length);
								}

								break;
							case 94: // clear search
								setElemInner("searchresults","");
								SearchAdded = true;
								break;
							case 95: // no search results
								setElemInner("searchresults","No matches found.");
								SearchAdded = true;
								break;
							default:
						}
					}
				}

				if (SearchAdded == true)
				{
					ResizeSearch();
				}
				else if (SearchAdded2 == true)
				{
					ResizeSearch2();
				}
				else if (ListAdded == true)
				{
					ResizeList();
				}

				ResultArr = [];
			}
			else if (XMLStream.status == 302)
			{
				alert("is redirecting");
			}
			else
			{
				alert("Error requesting page: " + XMLStream.statusText);
			}

			if (RequestArray.length > 0)
			{
				// Send queued request and remove from array.
				var ArrItem = RequestArray.shift();

				// We have to create a new stream here, because firefox and IE seem to have totally different
				// reactions to reusing the connections. (read: both have quirks when reused)
				CreateStream();
				NewRequest(ArrItem[0],ArrItem[1],ArrItem[2]);
			}
		}
	}

	function reviewThis(tmptype,tmptitle,tmpid)
	{
		// select right tab, then fill in data
		switch (tmptype)
		{
			case "film":
				swapMulti('ssrbdiv','asrbdiv',3,0);
				break;
			case "book":
				swapMulti('stwbdiv','atwbdiv',3,3);
				break;
			case "show":
				swapMulti('sfbbdiv','afbbdiv',3,1);
				break;
			case "music":
				swapMulti('smsbdiv','amsbdiv',3,2);
				break;
		}

		submitSearch(tmptitle,tmpid);
		window.scroll(900,0);
	}

	function swapAllTab(myType)
	{
		switch (myType)
		{
			case 0:
			case 4:
				swapMulti('ssrbdiv','asrbdiv',3,0);
				swapXType('xsrbdiv',5,0);
				break;
			case 1:
				swapMulti('sfbbdiv','afbbdiv',3,1);
				swapXType('xfbbdiv',5,1);
				break;
			case 2:
				swapMulti('smsbdiv','amsbdiv',3,2);
				swapXType('xmsbdiv',5,2);
				break;
			case 3:
				swapMulti('stwbdiv','atwbdiv',3,3);
				swapXType('xtwbdiv',5,3);
				break;
			case 5:
				swapMulti('sgmbdiv','agmbdiv',3,5);
				swapXType('xgmbdiv',5,5);
				break;
		}
	}

	function swapMulti(tabID1,tabID2,tabindex,newRType)
	{
		swapRType(tabID1,tabindex,newRType);
		addSwapTab(tabID2,tabindex+1,newRType);
	}

	function addSwapTab(tabID,tabindex,newRType)
	{
		// select right tab, then fill in data
		switch (tabID)
		{
			case "asrbdiv":
				setElemInner('att2','Year');
				hideElementRaw("aplat");
				showElementRaw("aplat2");
				break;
			case "atwbdiv":
				setElemInner('att2','Author');
				hideElementRaw("aplat");
				showElementRaw("aplat2");
				break;
			case "afbbdiv":
				setElemInner('att2','Year');
				hideElementRaw("aplat");
				showElementRaw("aplat2");
				break;
			case "amsbdiv":
				setElemInner('att2','Artist');
				hideElementRaw("aplat");
				showElementRaw("aplat2");
				break;
			case "agmbdiv":
				setElemInner('att2','Platform');
				hideElementRaw("aplat2");
				showElementRaw("aplat");
				break;
		}


		document.addareaf.q.value = newRType;
		swapTabs(tabID,tabindex);
	}

	function submitSearch(tmptitle,tmpid)
	{
		document.reviewsubf.n.value = tmpid;
		var reviewbox = document.getElementById("ttl3");

		if (reviewbox != null)
		{
			reviewbox.innerHTML = tmptitle + ' <a href="javascript:clearRevTitle()" class="redb" title="Remove title">[x]</a>';
			chooseTitle(true);
		}
	}

	function submitLink(tmptitle,tmpid)
	{
		hideElement('aeditmodal');
		switch (parseInt(document.aedittype.filltype.value))
		{
			case 2:
				document.comf.r.value += '[link:' + tmpid + ' ' + tmptitle + ']'; // rev text
				showElement('commodal');
				break;
			case 1:
				document.reviewsubf.o.value += '[link:' + tmpid + ' ' + tmptitle + ']'; // rev text
				calcRevLen();
				break;
		}
	}

	function hideLink()
	{
		hideElement('aeditmodal');
		switch (parseInt(document.aedittype.filltype.value))
		{
			case 2:
				showElement('commodal');
				break;
			default:
				break;
		}
	}

	function checkRevSubmit(loggedin)
	{
		destroyCookie('boxlogin');
		var revRating = document.reviewsubf.m.value; // rating
		var revId = document.reviewsubf.n.value; // movie id
		var revRev = document.reviewsubf.o.value; // review

		if (revRating < 0)
		{
			// no rating
			popupError("Please select a rating!");
		}
		else if (revId < 1)
		{
			// no id
			popupError("Please select a movie!");
		}
		else if (revRev.length < 15 && siteid == 1)
		{
			// too short
			popupError("Review length must be at least 15 characters long.");
		}
		else if (revRev.length < 250 && siteid == 2)
		{
			// too short
			popupError("Review length must be at least 250 characters long.");
		}
		else
		{
			saveRevData();

			if (loggedin)
			{
				document.reviewsubf.submit();
			}
			else
			{
				var gbox = document.getElementById("gbox");
				if (gbox != null)
				{
					gbox.className = "";
				}
				createCookie('boxlogin','1');
				NewRequest(true,"ajax.php?p=93&secref=" + SecID,"");
			}
		}
	}

	function delayedSubmit()
	{
		if (typeof(document.reviewsubf) != "undefined")
		{
			var revRating = document.reviewsubf.m.value; // rating
			var revId = document.reviewsubf.n.value; // movie id
			var revRev = document.reviewsubf.o.value; // review

			if (revRating < 0)
			{
				// no rating
				//popupError("Please select a rating!");
			}
			else if (revId < 1)
			{
				// no id
				//popupError("Please select a movie!");
			}
			else if (revRev.length < 15)
			{
				// too short
				//popupError("Review length must be at least 15 characters long.");
			}
			else
			{
				document.reviewsubf.submit();
			}
		}
	}

	function popupError(errorText)
	{
		var jserrdiv = document.getElementById("errortext2");

		if (jserrdiv != null)
		{
			jserrdiv.innerHTML = errorText;
			showElement("errormodal2");
		}
		else
		{
			alert(errorText);
		}
	}

	function calcRevLen()
	{
		if (typeof(document.reviewsubf) != "undefined")
		{
			var revtext = document.reviewsubf.o.value;
			var revtextdesc = document.getElementById("rtxtl");
			if (revtextdesc != null)
			{
				if (siteid == 2)
				{
					if (revtext.length >= 250)
					{
						swapPT(3);
					}

					var textleft = revtext.length;

					revtextdesc.innerHTML = textleft;

					if (textleft < 100)
					{
						// white text
						revtextdesc.className = "cred";
					}
					else if (textleft < 200)
					{
						revtextdesc.className = "corg";
					}
					else if (textleft < 250)
					{
						revtextdesc.className = "cylw";
					}
					else
					{
						// bright red
						revtextdesc.className = "";
					}
				}
				else
				{
					if (revtext.length >= 15)
					{
						swapPT(3);
					}

					var textleft = 250-revtext.length;

					revtextdesc.innerHTML = textleft;

					if (textleft > 100)
					{
						// white text
						revtextdesc.className = "";
					}
					else if (textleft > 50)
					{
						revtextdesc.className = "cylw";
					}
					else if (textleft > 0)
					{
						revtextdesc.className = "corg";
					}
					else
					{
						// bright red
						revtextdesc.className = "cred";
					}
				}
			}
		}
	}

	// tab swap code
	var currentTab = new Array("moviebdiv","hbmovie","lsrbdiv","ssrbdiv","asrbdiv","xsrbdiv");
	var tabSelColor = new Array("rgb(156,209,90)","rgb(111,126,158)","rgb(156,209,90)","rgb(156,209,90)","rgb(156,209,90)","rgb(156,209,90)");
	var tabUnselColor = new Array("rgb(126,169,72)","rgb(88,98,142)","rgb(126,169,72)","rgb(126,169,72)","rgb(126,169,72)","rgb(126,169,72)");

	var oldLType = "logintext";

	function swapRType(tabID,tabindex,newRType)
	{
		document.searchareaf.m.value = newRType;
		setSearchVars(newRType);
		swapTabs(tabID,tabindex);
	}

	function swapXType(tabID,tabindex,newXType)
	{
		document.aeditareaf.m.value = newXType;
		setSearchVars2(newXType);
		swapTabs(tabID,tabindex);
	}

	function swapLType(tabID,tabindex)
	{
		var tmpOld = oldLType;


		switch (tabID)
		{
			case "lsrbdiv":
				oldLType = "logintext";
				break;
			case "ltwbdiv":
				oldLType = "logintext1";
				break;
			case "lfbbdiv":
				oldLType = "logintext2";
				break;
			case "lmsbdiv":
				oldLType = "logintext3";
				break;
		}

		if (tmpOld != oldLType)
		{
			hideElementRaw(tmpOld);
			showElementRaw(oldLType);
			swapTabs(tabID,tabindex);
		}
	}

	function setSearchVars(typeindex)
	{
		switch (typeindex)
		{
			case 0:
			case "0":
				setElemInner("stt","Title");
				hideElementRaw('stt2');
				break;
			case 1:
			case "1":
				setElemInner("stt","Title");
				hideElementRaw('stt2');
				break;
			case 2:
			case "2":
				setElemInner("stt","Title or Artist");
				hideElementRaw('stt2');
				break;
			case 3:
			case "3":
				setElemInner("stt","Author");
				showElementRaw('stt2');
				break;
			case 5:
			case "5":
				setElemInner("stt","Title");
				hideElementRaw('stt2');
			default:
				//alert("type is:" + typeindex);
		}
	}

	function setSearchVars2(typeindex)
	{
		switch (typeindex)
		{
			case 0:
			case "0":
				setElemInner("aett","Title");
				break;
			case 1:
			case "1":
				setElemInner("aett","Title");
				break;
			case 2:
			case "2":
				setElemInner("aett","Title or Artist");
				break;
			case 3:
			case "3":
				setElemInner("aett","Title and Author");
				break;
			case 5:
			case "5":
				setElemInner("aett","Title");
				break;
			default:
				//alert("type is:" + typeindex);
		}
	}

	function togglePBox()
	{
		var gbox = document.getElementById("gbox");
		if (gbox != null)
		{
			if (gbox.className == "expanded")
			{
				gbox.className = "";
				ResizeShadow(2);
			}
			else
			{
				gbox.className = "expanded";
				ResizeShadow(1);
			}
		}
	}

	function swapTabs(tabID,tabindex)
	{
		if (tabID != currentTab[tabindex])
		{
			// set old tab to forestbg, new tab to limebg
			// use two vars so there is no search lag
			var tabElem = document.getElementById(currentTab[tabindex]);
			var tabElem2 = document.getElementById(tabID);
			if (tabElem != null && tabElem2 != null)
			{
				tabElem2.className = 'tab sel';//tabSelColor[tabindex];
				tabElem.className = 'tab';//tabUnselColor[tabindex];
				currentTab[tabindex] = tabID;
			}
		}
	}

	// swap div areas and tabs
	var currentTabData = new Array("","moviegadget");
	function swapPane(tabID,tabDataID,tabindex)
	{
		// no double fade, tabs get out of sync and it doesn't take long to complete
		if (tabDataID != currentTabData[tabindex] && fadeID == null)
		{
			var tabDElem = document.getElementById(currentTabData[tabindex]);
			var tabDElem2 = document.getElementById(tabDataID);
			if (tabDElem != null && tabDElem2 != null)
			{
				swapTabs(tabID,tabindex);
				fadeElements(tabDElem,tabDElem2);
				currentTabData[tabindex] = tabDataID;
			}
		}
	}

	var fadeID = null;
	var tmpOpacity = 100;
	var fadeinElem = null;
	var fadeoutElem = null;
	var fadingout = true;
	var currFadeElem = null;

	// fade out element and fade in another one
	function fadeElements(fadeout,fadein)
	{
		if (fadeID == null)
		{
			tmpOpacity = 100;
			fadeinElem = fadein;
			fadeoutElem = fadeout;
			currFadeElem = fadeoutElem;
			fadingout = true;
			fadeID = setInterval("fadeRunning()",100);
		}
		else
		{
			// we can't fade more than one at a time - just swap em
			tabDElem2.style.display = "";
			tabDElem.style.display = "none";
		}
	}

	function fadeRunning()
	{
		if (fadingout)
		{
			tmpOpacity -= 20;
		}
		else
		{
			tmpOpacity += 20;
		}

		//currFadeElem.style.MozOpacity = (tmpOpacity / 100);
		//currFadeElem.style.KhtmlOpacity = (tmpOpacity / 100);

		if (typeof currFadeElem.style.opacity != 'undefined')
		{
			currFadeElem.style.opacity = (tmpOpacity/100);
		}
		else
		{  /* buggy IE requires we fade all the children, not just a single parent element */
			for (var i=0;i<currFadeElem.childNodes.length;i++)
			{
				currFadeElem.childNodes[i].style.filter = "alpha(opacity=" + tmpOpacity + ")";
			}
		}

		if (fadingout && tmpOpacity <= 0)
		{
			fadingout = false;
			fadeoutElem.style.display = "none";
			currFadeElem = fadeinElem;
			if (typeof currFadeElem.style.opacity != 'undefined')
			{
				currFadeElem.style.opacity = 0;
			}
			else
			{  /* buggy IE requires we fade all the children, not just a single parent element */
				for (var i=0;i<currFadeElem.childNodes.length;i++)
				{
					currFadeElem.childNodes[i].style.filter = "alpha(opacity=0)";
				}
			}
			fadeinElem.style.display = "";
		}
		else if (!fadingout && tmpOpacity >= 100)
		{
			fadeFinished();
		}
	}

	function fadeFinished()
	{
		if (fadeID != null)
		{
			clearInterval(fadeID);
			fadeID = null;
		}
	}

	var CurrentVis = "";
	var CurrentTut = "tut1";

	function hideCurrentElement()
	{
		if (CurrentVis != "")
		{
			hideElement(CurrentVis);
		}
	}

	function showElement(ElemID)
	{
		if (ElemID != CurrentVis)
		{
			if (CurrentVis != "")
			{
				hideElement(CurrentVis);
			}

			if (ElemID == "registermodal")
			{
				Recaptcha.reload();
			}

			var LElem = document.getElementById(ElemID);
			if (LElem != null )
			{
				LElem.style.display = "";
				CurrentVis = ElemID;
				showElementRaw('modbg');
			}
		}
	}

	function showLinkElement(ElemID)
	{
		if (ElemID != CurrentVis)
		{
			if (CurrentVis != "")
			{
				hideElement(CurrentVis);
			}

			if (ElemID == "registermodal")
			{
				Recaptcha.reload();
			}

			var LElem = document.getElementById(ElemID);
			if (LElem != null )
			{
				LElem.style.display = "";
				CurrentVis = ElemID;
				showElementRaw('modbg2');
			}
		}
	}

	function swapIntro(ElemID)
	{
		if (ElemID != CurrentTut)
		{
			if (CurrentTut != "")
			{
				var HElemt = document.getElementById("t" + CurrentTut);
				if (HElemt != null )
				{
					HElemt.className = "lohlt";
				}

				var HElem = document.getElementById(CurrentTut);
				if (HElem != null )
				{
					HElem.style.display = "none";

					if (ElemID == CurrentTut)
					{
						CurrentTut = "";
					}
				}
			}

			var LElem = document.getElementById(ElemID);
			if (LElem != null )
			{
				LElem.style.display = "";
				CurrentTut = ElemID;
			}

			var LElemt = document.getElementById("t" + ElemID);
			if (LElemt != null )
			{
				LElemt.className = "lohlt sel";
			}
		}
	}

	function hideElement(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			LElem.style.display = "none";

			if (ElemID == CurrentVis)
			{
				CurrentVis = "";
			}

			hideElementRaw('modbg');
			hideElementRaw('modbg2');
		}
	}

	function showSearchElement()
	{
		// Set search type
		// Set box title

	}

	function showElementRaw(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			LElem.style.display = "";
		}
	}

	function hideElementRaw(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			LElem.style.display = "none";
		}
	}

	function toggleElementRaw(ElemID)
	{
		var rtnVal = false;

		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			if (LElem.style.display == "none")
			{
				LElem.style.display = "";
				rtnVal = true;
			}
			else
			{
				LElem.style.display = "none";
			}
		}

		return rtnVal;
	}

	function ElementVisible(ElemID)
	{
		var rtnVal = -1;

		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			if (LElem.style.display == "none")
			{
				rtnVal = 0;
			}
			else
			{
				rtnVal = 1;
			}
		}

		return rtnVal;
	}

	var startx = 0;
	var starty = 0;
	var endx = 0;
	var endy = 0;

	var offsetx = 0;
	var offsety = 0;
	var poffsetx = 0;
	var poffsety = 0;

	var pwidth = 0;
	var pheight = 0;

	var finaltop = 0;
	var finalleft = 0;
	var finalwidth = 0;
	var finalheight = 0;

	var isactive = false;

	var drawingbox = 'drawbox';
	var displayingbox = 'dispbox';
	var editingpic = 'editpicture';

	function activateDraw(myevent)
	{
		var dbox = document.getElementById(drawingbox);

		if (dbox != null)
		{
			isactive = true;
			setDivPos(drawingbox);
			setPicPos(editingpic);
			if (myevent)
			{
				startx = myevent.clientX;
				starty = myevent.clientY;
			}
			else
			{
				startx = event.clientX;
				starty = event.clientY;
			}
			dbox.onmousemove = drawBox;
			showElementRaw(displayingbox);
		}
	}

	function drawBox(myevent)
	{

		if (myevent)
		{
			endx = myevent.clientX;
			endy = myevent.clientY;
		}
		else
		{
			endx = event.clientX;
			endy = event.clientY;
		}

		if (endx >= startx)
		{
			tmpstartx = startx;
			tmpendx = endx;
		}
		else
		{
			tmpstartx = endx;
			tmpendx = startx;
		}

		if (endy >= starty)
		{
			tmpstarty = starty;
			tmpendy = endy;
		}
		else
		{
			tmpstarty = endy;
			tmpendy = starty;
		}

		setPos(displayingbox,tmpstarty,tmpstartx,tmpendx-tmpstartx,tmpendy-tmpstarty);
	}

	function endDraw()
	{
		var dbox = document.getElementById(drawingbox);
		if (dbox != null)
		{
			isactive = false;
			dbox.onmousemove = null;
			calcSize();
		}
	}

	function calcSize()
	{
		if (endx >= startx)
		{
			tmpstartx = startx;
			tmpendx = endx;
		}
		else
		{
			tmpstartx = endx;
			tmpendx = startx;
		}

		if (endy >= starty)
		{
			tmpstarty = starty;
			tmpendy = endy;
		}
		else
		{
			tmpstarty = endy;
			tmpendy = starty;
		}

		iserr = false;

		finalleft = tmpstartx-offsetx-poffsetx;
		finaltop = tmpstarty-offsety-poffsety;
		finalheight = tmpendy-tmpstarty;
		finalwidth = tmpendx-tmpstartx;

		if (finalleft < 0)
		{
			finalwidth += finalleft;
			finalleft = 0;
		}
		else if (finalleft > pwidth)
		{
			// error, outside
			iserr = true;
		}


		if (finaltop < 0)
		{
			finalheight += finaltop;
			finaltop = 0;
		}
		else if (finaltop > pheight)
		{
			// error, outside
			iserr = true;
		}

		if (finalwidth + finalleft > pwidth)
		{
			finalwidth = pwidth - finalleft;
		}

		if (finalheight + finaltop > pheight)
		{
			finalheight = pheight - finaltop;
		}

		if (finalwidth < 1 || finalheight < 1)
		{
			iserr = true;
		}

		if (iserr)
		{
			document.resizeimagef.h.value = 0;
			document.resizeimagef.w.value = 0;
			document.resizeimagef.t.value = 0;
			document.resizeimagef.l.value = 0;
			resetbox();
		}
		else
		{
			document.resizeimagef.h.value = finalheight;
			document.resizeimagef.w.value = finalwidth;
			document.resizeimagef.t.value = finaltop;
			document.resizeimagef.l.value = finalleft;
		}
	}

	function cancelDraw()
	{
		if (isactive)
		{
			var dbox = document.getElementById(drawingbox);
			if (dbox != null)
			{
				isactive = false;
				dbox.onmousemove = null;

				resetbox();
			}
		}
	}

	function resetbox()
	{
		hideElementRaw(displayingbox);
		setPos(displayingbox,-50,-50,1,1);
	}

	function setPos(ElemID,top,left,width,height)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			LElem.style.top = top + "px";
			LElem.style.left = left + "px";
			LElem.style.width = width + "px";
			LElem.style.height = height + "px";
		}
	}

	function setPos2(ElemID,top,left)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			LElem.style.top = top + "px";
			LElem.style.left = left + "px";
		}
	}

	function setDivPos(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{

			offsetx = LElem.offsetLeft;
			offsety = LElem.offsetTop;
		}
	}

	function setPicPos(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null )
		{
			// adjusted for borders
			pwidth = LElem.offsetWidth-6;
			pheight = LElem.offsetHeight-6;
			poffsetx = LElem.offsetLeft+3;
			poffsety = LElem.offsetTop+3;
		}
	}

	function killDrag(myevent)
	{
		if (myevent)
		{
			//myevent.preventDefault();
			myevent.stopPropagation();
		}
	}

	function noDrag(ElemID)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null)
		{
			LElem.addEventListener("draggesture", killDrag, false);
		}
	}

	function isElemEmpty(ElemID)
	{
		var rtnVal = true;

		var LElem = document.getElementById(ElemID);
		if (LElem != null)
		{
			if (LElem.innerHTML != '')
			{
				rtnVal = false;
			}
		}

		return rtnVal;
	}

	function setElemInner(ElemID,ElemData)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null)
		{
			LElem.innerHTML = ElemData;
		}
	}

	function setParentInner(ChildObj,ElemData)
	{
		var LElem = ChildObj.parentNode;
		if (LElem != null)
		{
			LElem.innerHTML = ElemData;
		}
	}

	function setParentInnerN(ChildID,ElemData)
	{
		var LElemC = document.getElementById(ChildID);
		if (LElemC != null)
		{
			var LElem = LElemC.parentNode;
			if (LElem != null)
			{
				LElem.innerHTML = ElemData;
			}
		}
	}

	function setElemClass(ElemID,ElemData)
	{
		var LElem = document.getElementById(ElemID);
		if (LElem != null)
		{
			LElem.className = ElemData;
		}
	}

	function moveTT(myevent)
	{

		if (myevent)
		{
			newposx = myevent.clientX;
			newposy = myevent.clientY;
		}
		else
		{
			newposx = event.clientX;
			newposy = event.clientY;
		}

		setPos2('ttbox',newposy+5,newposx+15);
	}

	function moveTT2(myevent)
	{

		if (myevent)
		{
			newposx = myevent.clientX;
			newposy = myevent.clientY;
		}
		else
		{
			newposx = event.clientX;
			newposy = event.clientY;
		}

		setPos2('ttbox2',newposy+5,newposx+15);
	}

	var toggleVars = new Array(0,0,0,0);

	function toggleMarkup(mindex)
	{
		var appendText = "";
		if (mindex >= 0 && mindex < 4)
		{
			var toggleStatus = toggleVars[mindex];
			var ToggElem = document.getElementById('markup'+mindex);

			switch(mindex)
			{
				case 0:
					if (toggleStatus == 0)
					{
						appendText = '<i>';
						if (ToggElem != null) {ToggElem.className='mubtn italic sel';}
					}
					else
					{
						appendText = '</i>';
						if (ToggElem != null) {ToggElem.className='mubtn italic';}
					}
					break;
				case 1:
					if (toggleStatus == 0)
					{
						appendText = '<b>';
						if (ToggElem != null) {ToggElem.className='mubtn bold sel';}
					}
					else
					{
						appendText = '</b>';
						if (ToggElem != null) {ToggElem.className='mubtn bold';}
					}
					break;
				case 2:
					if (toggleStatus == 0)
					{
						appendText = '<u>';
						if (ToggElem != null) {ToggElem.className='mubtn uline sel';}
					}
					else
					{
						appendText = '</u>';
						if (ToggElem != null) {ToggElem.className='mubtn uline';}
					}
					break;
				case 3:
					if (toggleStatus == 0)
					{
						appendText = '<s>';
						if (ToggElem != null) {ToggElem.className='mubtn strike sel';}
					}
					else
					{
						appendText = '</s>';
						if (ToggElem != null) {ToggElem.className='mubtn strike';}
					}
					break;
			}

			document.reviewsubf.o.value += appendText; // rev text

			if (toggleStatus == 0)
			{
				toggleVars[mindex] = 1;
			}
			else
			{
				toggleVars[mindex] = 0;
			}

			calcRevLen();
			document.reviewsubf.o.focus();
		}
	}

	function buildLink(typeid)
	{
		showLinkElement('aeditmodal');
		document.aedittype.filltype.value = typeid;
	}

	function requestButtons(itemid)
	{
		NewRequest(false,"ajax.php","p=74&secref=" + SecID + "&q=" + itemid);
	}

	function requestDescription(itemid)
	{
		NewRequest(false,"ajax.php","p=75&secref=" + SecID + "&q=" + itemid);
	}

	function requestTwitterInfo()
	{
		NewRequest(false,"ajax.php","p=73&secref=" + SecID);
	}

	function requestFacebookInfo()
	{
		NewRequest(false,"ajax.php","p=60&secref=" + SecID);
	}

	function logoutTwitter()
	{
		NewRequest(false,"ajax.php","p=72&secref=" + SecID);
		hideElementRaw('twitlogout');
		showElementRaw('twitlogin');
	}

	function logoutFacebook()
	{
		NewRequest(false,"ajax.php","p=57&secref=" + SecID);
		hideElementRaw('fblogout');
		showElementRaw('fblogin');
	}

	function verifyPass(pass1,pass2)
	{
		var rtnval = false;

		if (pass1.length > 0)
		{
			if (pass1 == pass2)
			{
				rtnval = true;
			}
			else
			{
				alert('Password does not match confirm!');
			}
		}
		else
		{
			alert('Password required!');
		}

		return rtnval;
	}

	function removeFriend()
	{
		var ListElem = document.getElementById('friendlist');
		if (ListElem != null)
		{
			var SelIdx = ListElem.selectedIndex;
			var SelVal = ListElem.options[SelIdx].value;
			ListElem.remove(SelIdx);

			NewRequest(false,"ajax.php","p=65&secref=" + SecID + "&q=" + SelVal);
		}
	}

	function removeEnemy()
	{
		var ListElem = document.getElementById('enemylist');
		if (ListElem != null)
		{
			var SelIdx = ListElem.selectedIndex;
			var SelVal = ListElem.options[SelIdx].value;
			ListElem.remove(SelIdx);

			NewRequest(false,"ajax.php","p=64&secref=" + SecID + "&q=" + SelVal);
		}
	}

	function requestCArt(movieID)
	{
		NewRequest(true,"ajax.php?p=88&secref=" + SecID + "&m=" + movieID,"");
	}

	function resendReview(revID)
	{
		NewRequest(false,"ajax.php","p=56&secref=" + SecID + "&q=" + revID);
	}

	function loadReviews(contName,startID,endID)
	{
		NewRequest(false,"ajax.php","p=7&secref=" + SecID + "&q=" + startID + "&r=" + endID + "&s=" + encodeURIComponent(contName));
	}

	function stopBubble(e)
	{
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
	}

	function swapIcons(newType, newID, targetID)
	{
		switch (newType)
		{
			case 1: // remove all
				targetData = '<img title="Add to wishlist" onclick="javascript:stopBubble(event);addIntr(\'' + targetID + '\',' + newID + ')" src="/imgs/watch.png" alt="Add to wishlist" /><img title="Always hide item" onclick="javascript:stopBubble(event);addBlock(\'' + targetID + '\',' + newID + ')" src="/imgs/nint2.png" alt="Always hide item" /><img title="Mark item as seen" onclick="javascript:stopBubble(event);addSeen(\'' + targetID + '\',' + newID + ')" src="/imgs/seelst.png" alt="Mark item as seen" />';
				break;
			case 2: // wishlist active
				targetData = '<img title="Remove from wishlist" onclick="javascript:stopBubble(event);removeIntr(\'' + targetID + '\',' + newID + ')" src="/imgs/watch2.png" alt="Remove from wishlist" /><img title="Always hide item" onclick="javascript:stopBubble(event);addBlock(\'' + targetID + '\',' + newID + ')" src="/imgs/nint2.png" alt="Always hide item" /><img title="Mark item as seen" onclick="javascript:stopBubble(event);addSeen(\'' + targetID + '\',' + newID + ')" src="/imgs/seelst.png" alt="Mark item as seen" />';
				break;
			case 3: // watched active
				targetData = '<img title="Add to wishlist" onclick="javascript:stopBubble(event);addIntr(\'' + targetID + '\',' + newID + ')" src="/imgs/watch.png" alt="Add to wishlist" /><img title="Always hide item" onclick="javascript:stopBubble(event);addBlock(\'' + targetID + '\',' + newID + ')" src="/imgs/nint2.png" alt="Always hide item" /><img title="Mark item as not seen" onclick="javascript:stopBubble(event);removeSeen(\'' + targetID + '\',' + newID + ')" src="/imgs/seelst2.png" alt="Mark item as not seen" />';
				break;
			case 4: // blocklist active
				targetData = '<img title="Add to wishlist" onclick="javascript:stopBubble(event);addIntr(\'' + targetID + '\',' + newID + ')" src="/imgs/watch.png" alt="Add to wishlist" /><img title="Do not hide item" onclick="javascript:stopBubble(event);removeBlock(\'' + targetID + '\',' + newID + ')" src="/imgs/nint.png" alt="Do not hide item" /><img title="Mark item as seen" onclick="javascript:stopBubble(event);addSeen(\'' + targetID + '\',' + newID + ')" src="/imgs/seelst.png" alt="Mark item as seen" />';
				break;
			case 5: // remove all big
				targetData = '<img title="Mark item as seen" alt="Mark item as seen" class="reviewimg3" onclick="javascript:addSeen(\'wbuttons\',' + newID + ')" src="/imgs/setwatched.png" /><img title="Add to wishlist" alt="Add to wishlist" class="reviewimg3 cenimg" onclick="javascript:addIntr(\'wbuttons\',' + newID + ')" src="/imgs/setwish.png" /><img title="Always hide item" alt="Always hide item" class="reviewimg3" onclick="javascript:addBlock(\'wbuttons\',' + newID + ')" src="/imgs/setblocked.png" />';
				break;
			case 6: // wishlist active big
				targetData = '<img title="Mark item as seen" alt="Mark item as seen" class="reviewimg3" onclick="javascript:addSeen(\'wbuttons\',' + newID + ')" src="/imgs/setwatched.png" /><img title="Remove from wishlist" alt="Remove from wishlist" class="reviewimg3 cenimg" onclick="javascript:unregisterClick(\'rnewrevb\');fillStar(-2,false,\'rnewrevb\',1,0,3);removeIntr(\'wbuttons\',' + newID + ')" src="/imgs/setwish2.png" /><img title="Always hide item" alt="Always hide item" class="reviewimg3" onclick="javascript:addBlock(\'wbuttons\',' + newID + ')" src="/imgs/setblocked.png" />';
				break;
			case 7: // watched active big
				targetData = '<img title="Mark item as not seen" alt="Mark item as not seen" class="reviewimg3" onclick="javascript:unregisterClick(\'rnewrevb\');fillStar(-2,false,\'rnewrevb\',1,0,3);removeSeen(\'wbuttons\',' + newID + ')" src="/imgs/setwatched2.png" /><img title="Add to wishlist" alt="Add to wishlist" class="reviewimg3 cenimg" onclick="javascript:addIntr(\'wbuttons\',' + newID + ')" src="/imgs/setwish.png" /><img title="Always hide item" alt="Always hide item" class="reviewimg3" onclick="javascript:addBlock(\'wbuttons\',' + newID + ')" src="/imgs/setblocked.png" />';
				break;
			case 8: // blocklist active big
				targetData = '<img title="Mark item as seen" alt="Mark item as seen" class="reviewimg3" onclick="javascript:addSeen(\'wbuttons\',' + newID + ')" src="/imgs/setwatched.png" /><img title="Add to wishlist" alt="Add to wishlist" class="reviewimg3 cenimg" onclick="javascript:addIntr(\'wbuttons\',' + newID + ')" src="/imgs/setwish.png" /><img title="Do not hide item" alt="Do not hide item" class="reviewimg3" onclick="javascript:unregisterClick(\'rnewrevb\');fillStar(-2,false,\'rnewrevb\',1,0,3);removeBlock(\'wbuttons\',' + newID + ')" src="/imgs/setblocked2.png" />';
				break;
		}

		if (targetData != '')
		{
			setElemInner(targetID,targetData);
		}
	}

	function addRating(targetID,newID,newRating)
	{
		NewRequest(false,"ajax.php","p=24&secref=" + SecID + "&q=" + newID + "&r=" + targetID + "&s=" + newRating);
	}

	function addIntr(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=54&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function removeIntr(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=48&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function addBlock(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=55&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function removeBlock(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=53&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function addSeen(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=40&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function removeSeen(targetID,newID)
	{
		NewRequest(false,"ajax.php","p=39&secref=" + SecID + "&q=" + newID + "&r=" + targetID);
	}

	function requestShort(ShortID,ShortType)
	{
		NewRequest(false,"ajax.php","p=45&secref=" + SecID + "&q=" + ShortID + "&r=" + ShortType);
	}

	function showShort(ShortCode)
	{
		document.shortareaf.m.value = 'http://rvws.net/' + ShortCode;
		showElement('shortmodal');
	}

	var currStage = 0;

	function swapPT(myStage)
	{
		if (currStage != myStage)
		{
			switch (currStage)
			{
				case 0:
					hideElementRaw('regc21');
					break;

				case 1:
					hideElementRaw('regc22');
					break;

				case 2:
					hideElementRaw('regc23');
					break;

				case 3:
					hideElementRaw('regc241');
					break;
			}

			switch (myStage)
			{
				case 0:
					showElementRaw('regc21');
					break;

				case 1:
					showElementRaw('regc22');
					break;

				case 2:
					showElementRaw('regc23');
					break;

				case 3:
					showElementRaw('regc241');
					break;
			}

			currStage = myStage;
		}
	}

	function chooseTitle(isChoose)
	{
		if (isChoose)
		{
			hideElementRaw("ttl1");
			showElementRaw("ttl2");
			swapPT(1);
		}
		else
		{
			hideElementRaw("ttl2");
			showElementRaw("ttl1");
			swapPT(0);
		}

		ResizeShadow(0);
	}

	function toggleComments(revID)
	{
		if (toggleElementRaw('com' + revID))
		{
			NewRequest(false,"ajax.php","p=27&secref=" + SecID + "&q=" + revID);
		}
	}

	function showVideo(revID)
	{
		if (toggleElementRaw('vid' + revID))
		{
			if (isElemEmpty('vid' + revID))
			{
				NewRequest(false,"ajax.php","p=15&secref=" + SecID + "&q=" + revID);
			}
		}
	}

	function addComment(revID)
	{
		document.comf.q.value = revID;
		showElement('commodal');
	}

	function postComment()
	{
		if (document.comf.r.value.length < 1)
		{
			alert('Message required!');
		}
		else
		{
			NewRequest(false,"ajax.php","p=25&secref=" + SecID + "&q=" + document.comf.q.value + "&r=" + encodeURIComponent(document.comf.r.value));
			hideCurrentElement();
		}
	}

	function deleteComment(comid)
	{
		if(confirm('Are you sure you want to delete this comment?'))
		{
			NewRequest(false,"ajax.php","p=26&secref=" + SecID + "&q=" + comid);
		}
	}

	function navComment(comid)
	{
		window.location.href = "http://rvws.net/c/" + comid;
	}

	function addGenre(itemID,genreID)
	{
		NewRequest(true,"ajax.php?p=18&secref=" + SecID + "&m=" + itemID + "&n=" + genreID,"");
	}

	function CenterWindow()
	{
		window.scroll(175,0);
	}

	function ResizeShadow(ShiftBox)
	{
		var BoxDiv = document.getElementById("gbox");
		var ShadowDiv = document.getElementById("sbarshad");

		if (BoxDiv != null && ShadowDiv != null)
		{
			ShadowDiv.style.height = BoxDiv.clientHeight + "px";
			ShadowDiv.style.width = BoxDiv.clientWidth + "px";

			if (ShiftBox == 1)
			{
				ShadowDiv.style.marginLeft = "-100%";
			}
			else if (ShiftBox == 2)
			{
				ShadowDiv.style.marginLeft = "auto";
			}
		}
	}

	function requestSteamInfo()
	{
		NewRequest(false,"ajax.php","p=20&secref=" + SecID);
	}

	function requestPSNInfo()
	{
		NewRequest(false,"ajax.php","p=17&secref=" + SecID);
	}

// -->

