function setTimezone()
{
	var now = new Date();
	var offset = now.getTimezoneOffset();
	
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/set_user_offset.php?minutes="+ offset);
	xhReq.send(null);
}
	
function getFriend(id)
{
    var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/fb_friend_exist.php?id="+ id);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		
		var serverResponse = xhReq.responseText;

		if (serverResponse.length > 0)
		{
			message = serverResponse;
			if (serverResponse != 0)
			{
				document.getElementById('fb_friends').innerHTML = document.getElementById('fb_friends').innerHTML + (serverResponse);
				document.getElementById('no_fb_friends').style.display = 'none';
				return true;
			}
			else
			{
				return false;
			}	
		}
	}
}

function fbFriends()
{
	document.getElementById('fb_friends').innerHTML = "<span style=\"display: none\" id=\"no_fb_friends\">None of your Facebook friends found.</span>";
	document.getElementById('no_fb_friends').style.display = '';
	FB.api({ method: 'friends.get' }, function(response) {

    for (var i=0, l=response.length; i<l; i++) 
    {
	    var post = response[i];
	    if (getFriend(post))
	    {

	    }
	 }
	   
    })
    
}


function hideStart()
{
	if (document.getElementById('start_here'))
	{
		Effect.Fade('start_here');
	}
}

function getRecent()
{
	d = new Date();
    utc = ((d.getTime() - 6000) / 1000);
    
    var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/new_item_check.php?since="+ utc);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		
		var serverResponse = xhReq.responseText;

		if (serverResponse.length > 0)
		{
			newIds = serverResponse.split(",");
			for ($x=0; $x<newIds.length; $x++)
			{
				if (!document.getElementById(newIds[$x]))
				{
					getItem(newIds[$x]);
					document.getElementById('number-results').value = parseInt(document.getElementById('number-results').value) + 1;
				}
			}
		}
	}	
}

function getItem(id)
{
  
    var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/get_single_entry.php?id="+ id);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		
		var serverResponse = xhReq.responseText;

		if (serverResponse.length > 0)
		{
			message = serverResponse;

			//Parse out the new ID
			var htmlTXT = message;
			var div = document.createElement('ul');
			div.innerHTML = htmlTXT;
			var elements = div.getElementsByTagName('li');
			var newID = elements[0].getAttribute("id");

			insertRowFade("<li style=\"margin: 0px\" class=\"comment-list\"><table class=\"comments\" id=\"comments-"+ newID +"\"><tbody></tbody></table></li>", "feed-list", true);
			insertRowFade("<li style=\"margin: 0px\" id=\"bull-" + newID + "\" class=\"bull\"></li>", "feed-list", true);
			insertRowFade(message, "feed-list", true);
			
			var parent = document.getElementById('feed-list');
	        var childCount = parent.getElementsByTagName("li").length;
	        parent.removeChild(parent.lastChild);
	        parent.removeChild(parent.lastChild);
	        parent.removeChild(parent.lastChild);
	        parent.removeChild(parent.lastChild);
		}
	}	
}

function getId(text, li) 
{
	document.getElementById("item_id").value= li.id;
}

function hideComment()
{
	if (document.getElementById('item_id').value == "")
	{
		document.getElementById('advanced_options').style.display = "none";
	}
}

function createXMLHttpRequest() 
{
	try { return new XMLHttpRequest(); } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	alert("XMLHttpRequest not supported");
	return null;
}	 

function clearField(field)
{		
	if (field.value == "(Item Name)")
	{
		field.value='';
	}
}

function autocompleteType(input)
{
	var query = input.value;
	var verb = document.getElementById('verb_id').value;
	
	var searchStr = "q="+ query +"&verb=" + verb;	
	return searchStr;
} 

function addComment(tableId, user, username)
{
	if (!document.getElementById('comment-container-' + tableId))
	{
		message = "<span id=\"comment-container-"+ tableId +"\"><textarea id=\"comment-text-"+ tableId +"\" rows=\"3\" cols=\"45\"></textarea><input type=\"button\" onclick=\"saveComment('" + tableId + "', '"+ user +"', '"+ username +"')\" value=\"Save Comment\"/></span>";
		tableName = "comments-" + tableId;	
	
		document.getElementById("comment-div-" + tableId).style.display = '';
		insertRowFade(message, tableName, false);
		document.getElementById("comment-text-"+ tableId).focus();
	}
}

function saveComment(commentId, user, username)
{	
	commentName = "comment-text-" + commentId;
	spanName = "comment-container-" + commentId;
	tableName = "comment-div-" + commentId;
	commentText = escape(document.getElementById(commentName).value);
	
	if (commentText.length > 0)
	{
		var xhReq = createXMLHttpRequest();
		xhReq.open("GET", "/core/save_comment.php?id="+ commentId +"&text=" + commentText);
		xhReq.onreadystatechange = onSumResponse;
		xhReq.send(null);
	}	
	else
	{
		var currentRowIndex = document.getElementById(spanName).parentNode.parentNode.rowIndex;
		var currentRow = document.getElementById(spanName).parentNode.parentNode;
		currentRow.parentNode.deleteRow(currentRowIndex);
	}	
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;
		document.getElementById(tableName).innerHTML = serverResponse;		
	}	
}

function showAllComments(itemId)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/more_comments.php?id="+ itemId);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	tableName = "comment-div-" + itemId;
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		
		var serverResponse = xhReq.responseText;
		document.getElementById(tableName).innerHTML = serverResponse;
	}	
}

function deleteComment(threadId, commentId)
{
	tableName = "comment-div-" + threadId;
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/delete_comment.php?item_id="+ threadId +"&id="+ commentId);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;
		document.getElementById(tableName).innerHTML = serverResponse;
	}	
}

function unBull(id)
{
	spanName = "bull-" + id;
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/delete_bull.php?id="+ id);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;
		document.getElementById(spanName).innerHTML = serverResponse;
	}	
}

function callBull(id)
{
	spanName = "bull-" + id;
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/save_bull.php?id="+ id);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;
		document.getElementById(spanName).innerHTML = serverResponse;
	}			 
}

function saveItem(qty, unit_qty, unit, itemId, sendToTwitter, status, datetime)
{
	if (itemId != 0)
	{
		saveIt(qty, unit_qty, unit, itemId, sendToTwitter, status, datetime);  //ghetto because inline functions can't be one level down?
	}
	else
	{
		var answer = confirm("Item not found, would you like to add it?");
		if (answer)
		{
			//window.open('add_item.php', 'additem', 'scrollbars=1,resizable=1,width=550,height=350');
			showLightbox('add_item');
		}		
	}
}


function saveIt(qty, unit_qty, unit, itemId, sendToTwitter, status, datetime)
{
	var xhReq = createXMLHttpRequest();
	if (document.getElementById('unit_span').style.display == '')
	{
		xhReq.open("GET", "/core/save_user_item.php?qty="+ qty +"&unit_qty="+ unit_qty +"&unit="+ unit +"&item_id=" + itemId + "&sendToTwitter=" + sendToTwitter + "&comment=" + escape(status) + "&datetime=" + escape(datetime));
	}
	else
	{
		xhReq.open("GET", "/core/save_user_item.php?qty="+ qty +"&item_id=" + itemId + "&sendToTwitter=" + sendToTwitter + "&comment=" + escape(status) + "&datetime=" + escape(datetime));
	}
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			message = serverResponse;

			//Parse out the new ID
			var htmlTXT = message;
			var div = document.createElement('ul');
			div.innerHTML = htmlTXT;
			var elements = div.getElementsByTagName('li');
			var newID = elements[0].getAttribute("id");

			insertRowFade("<li style=\"margin: 0px\" class=\"comment-list\"><div id=\"comment-div-"+ newID +"\"><table class=\"comments\" id=\"comments-"+ newID +"\"><tbody></tbody></table></div></li>", "feed-list", true);
			insertRowFade("<li style=\"margin: 0px\" id=\"bull-" + newID + "\" class=\"bull\"></li>", "feed-list", true);
			insertRowFade(message, "feed-list", true);
			
			//Check to see if by inserting this item they have acheived something
			document.getElementById('number-results').value = parseInt(document.getElementById('number-results').value) + 1;
			checkAchievements(newID);
			updateXP(newID);
		}
	}
				
	resetPickers();
}

function resetPickers()
{
	document.getElementById('what').value = '';
	document.getElementById('entry-comment').value = '';
	document.getElementById('item_id').value = '';
	document.getElementById('datetime').value = '';
	document.getElementById('amount').value = '1';
	removeCategory();
	removeVerb();
	document.getElementById('verbChoices').style.display = 'none';
	document.getElementById('subcategory').style.display = 'none';
	document.getElementById('verb').disabled = false;
	document.getElementById('category').disabled = false;
}

function deleteItem(id)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/delete_user_item.php?id=" + id);
	xhReq.send(null);
	document.getElementById(id).style.display = 'none';
	document.getElementById("comments-" + id).style.display = 'none';
	document.getElementById("bull-" + id).style.display = 'none';
}

function checkAchievements(itemId)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/validate_achievements.php?itemId=" + itemId, true);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('light').style.display='block';
			document.getElementById('fade').style.display='block';
			document.getElementById('a_msg').innerHTML = serverResponse;
		}
	}
}

function showLightbox(url)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", url, true);
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('light').style.display='block';
			document.getElementById('fade').style.display='block';
			document.getElementById('a_msg').innerHTML = serverResponse;
		}
	}
}

function addFriend(id)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/save_friend.php?id="+ id);
	xhReq.send(null);
	document.getElementById('friend_button_' + id).style.display = 'none';
	document.getElementById('added_' + id).style.display = '';
	document.getElementById('not-friend').style.display = 'none';
}

function insertRowFade(insert_text, table_name, before)
{	
  inProgressGlobal = false;
  if (!inProgressGlobal) 
  {
    inProgressGlobal = true;

	if (before)
	{
		var isMSIE = /*@cc_on!@*/false;
			
		if (isMSIE)
		{
			var ul = document.getElementById(table_name);
			var newUL = document.createElement("ul");
			newUL.innerHTML = insert_text;

			var li = document.createElement("li");
			li = newUL.getElementsByTagName("li")[0];
			if (ul.getElementsByTagName("li").length > 0)
			{
				ul.insertBefore(li, ul.getElementsByTagName("li")[0]);
			}
			else
			{
				ul.innerHTML = insert_text;
			}
		}
		else
		{
			var ul = document.getElementById(table_name);
			var li = document.createElement("li");	
			li.innerHTML = insert_text;
			ul.insertBefore(li.childNodes[0], ul.getElementsByTagName("li")[0]);
		}
		
		newRowGlobal = ul.getElementsByTagName("li")[0];
	}
	else
	{
		var tbl = document.getElementById(table_name);		
		newRowGlobal = tbl.tBodies[0].insertRow(tbl.rows.length);	
	    var newCell = newRowGlobal.insertCell(0);
	    newCell.innerHTML = insert_text;
	}
	
	var countUp = 0;

	if (newRowGlobal.id != "" && newRowGlobal.id.substr(0,4) != "bull" && !isMSIE)
	{
		document.getElementById(newRowGlobal.id).style.display = "none";
		Effect.Appear(newRowGlobal.id);
		//setTimeout('rowFade('+ newRowGlobal.id +', ' + countUp + ')', 0); // initial pause
	}
   }
}

function getMore(username, main)
{
	document.body.style.cursor = 'wait';
	$numResults = document.getElementById('number-results').value;
	var xhReq = createXMLHttpRequest();
	if (main)
	{
		xhReq.open("GET", "main_feed_xml.php?username="+ escape(username) +"&page=" + $numResults, true);
	}
	else
	{
		xhReq.open("GET", "user_feed_xml.php?username="+ escape(username) +"&page=" + $numResults, true);
	}
	
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('feed-list').innerHTML = document.getElementById('feed-list').innerHTML + serverResponse;
		}
		else
		{
			document.getElementById('more-link').style.display = 'none';
		}
		document.body.style.cursor = 'default';
		
		document.getElementById('number-results').value = parseInt($numResults) + 10;
	}
}

function pickVerb(verb_id, subcat, has_qty, has_units)
{
	//document.getElementById('verb').value=verb;
	document.getElementById('verb_id').value=verb_id;
	document.getElementById('subChoices').style.display='none';
	document.getElementById('what').style.display='';
	document.getElementById('what_span').style.display='';
	document.getElementById('save').style.display='';
	
	document.getElementById("subcategory_bin").innerHTML = subcat.innerHTML + "<img onclick=\"removeVerb();\" src=\"/images/cross.png\"/>";
	document.getElementById("subcategory_bin").style.display = '';
	document.getElementById("subcategory").style.display = "none";
	document.getElementById("what").focus();
	
	if (has_qty)
	{
		document.getElementById('amount').style.display='';
		document.getElementById('amount_span').style.display='';
	}
	else
	{
		document.getElementById('amount').style.display='none';
		document.getElementById('amount_span').style.display='none';
	}
	
	if (has_units)
	{
		document.getElementById('unit_span').style.display='';
		getUnits(verb_id);
	}
	else
	{
		document.getElementById('unit_span').style.display='none';
	}
}

function getUnits(verb_id)
{
	var xhReq = createXMLHttpRequest();
	
	xhReq.open("GET", "/core/get_units.php?id="+ verb_id, true);
	
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;
		
		if (serverResponse.length > 0)
		{
			unitHTML = "<select name=\"unit\" id=\"unit\" style=\"min-width: 10px;\">";
			unitHTML += serverResponse;
			unitHTML += "</select>";
			document.getElementById('unit-div').innerHTML = unitHTML;
		}
	}
}

function selectCategory(category)
{	
	document.getElementById("category_bin").innerHTML = category.innerHTML + "<img onclick=\"removeCategory();\" src=\"/images/cross.png\"/>";
	document.getElementById("category_bin").style.display = '';
	document.getElementById("category_list").style.display = "none";
	
	document.body.style.cursor = 'wait';

	var xhReq = createXMLHttpRequest();
	
	xhReq.open("GET", "/core/get_subcategory.php?id="+ category.id, true);
	
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('subChoices').innerHTML = serverResponse;
		}
	
		document.body.style.cursor = 'default';
		document.getElementById('subcategory').style.display = '';
		document.getElementById('verb').focus();
	}
}

function removeCategory()
{
	document.getElementById('what').style.display='none';
	document.getElementById('what_span').style.display='none';
	document.getElementById('save').style.display='none';	
	document.getElementById('amount').style.display='none';
	document.getElementById('amount').value = 1;
	document.getElementById('amount_span').style.display='none';
		
	document.getElementById('subChoices').style.display='none';
	document.getElementById("subcategory_bin").style.display = 'none';
	document.getElementById("category_bin").style.display = "none";
	document.getElementById("category_list").style.display = "";
	document.getElementById("advanced_options").style.display = "none";	
	document.getElementById('verb').disabled = false;
	document.getElementById('category').disabled = false;	
}

function removeVerb()
{
	document.getElementById('what').style.display='none';
	document.getElementById('what_span').style.display='none';
	document.getElementById('save').style.display='none';	
	document.getElementById('amount').style.display='none';
	document.getElementById('amount').value = 1;
	document.getElementById('amount_span').style.display='none';
	
	document.getElementById("subcategory_bin").style.display = 'none';
	document.getElementById("subcategory").style.display = "";
	document.getElementById("advanced_options").style.display = "none";
	document.getElementById('verb').disabled = false;
	document.getElementById('verb').focus();
}

function autoPop(user_id)
{	
	var verb_id = document.getElementById("verb_id").value;
	
	var xhReq = createXMLHttpRequest();
	
	xhReq.open("GET", "/core/get_items.php?div=what&userid="+ user_id +"&id="+ verb_id, true);
	
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('itemChoices').innerHTML = serverResponse;
			document.getElementById('itemChoices').style.display = '';
		}
	}
}

//stuff moved from add_item
function pickColumns(id)
{
	showLightbox("add_item.php?categoryId=" + id);
}

function switchInput(id)
{
	if (document.getElementById("dd-"+ id).style.display == "none")
	{
		var ddlID = document.getElementById("dd-"+ id).style.display = "";
		var txtID = document.getElementById("txt-"+ id).style.display = "none";		
	}
	else
	{
		var ddlID = document.getElementById("dd-"+ id).style.display = "none";
		var txtID = document.getElementById("txt-"+ id).style.display = "";		
	}
}

function populateData(id, num)
{
	if (document.getElementById(id).value.replace(/^\s+/,"") == "")
	{
		var textString = "";
		for (x=0; x<num; x++)
		{	
			try
			{
				if (document.getElementById("item_value" + x).value != "")
				{
					textString += document.getElementById("item_value" + x).value + " ";
				}
			}
			catch(err)
			{}
		}
		
		if (textString == "" && id == "keywords")
		{
			document.getElementById('keywords').value = document.getElementById('message').value;
		}
		else
		{
			document.getElementById(id).value = textString;
		}
	}
}

function saveNewItem()
{
	var FormName = document.getElementById('add_item');
	var queryString = "";
	var required = true;
	
	for(i=0; i<FormName.elements.length; i++)
	{

		if (FormName.elements[i].className == "required" && (FormName.elements[i].value == "" || FormName.elements[i].value == "(Select a Value"))
		{
			required = false;
		}

		if (FormName.elements[i].type != "checkbox")
		{
			queryString = queryString + escape(FormName.elements[i].name) + "=" + escape(FormName.elements[i].value) + "&";
		}
		else
		{
			if (FormName.elements[i].checked)
			{
				queryString = queryString + escape(FormName.elements[i].name) + "=Yes&";
			}
			else
			{
				queryString = queryString + escape(FormName.elements[i].name) + "=No&";
			}
		}
	}

	if (required)
	{
		var xhReq = createXMLHttpRequest();
		xhReq.open("GET", "/core/save_item.php?" + queryString, true);		
		xhReq.onreadystatechange = onSumResponse;
		xhReq.send(null);
		
	}
	else
	{
		alert("Required fields missing");
	}
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('new_item_id').value = serverResponse;			
			document.getElementById('status').style.display = "";
		}
		else
		{
			alert("Required fields missing");
		}
	}
	
}

function updateXP(id)
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/core/get_xp.php?id=" + id, true);		
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			startXP = parseInt(document.getElementById('start-xp').innerHTML);
			currentXP = parseInt(document.getElementById('xp').innerHTML);
			totalXP = parseInt(document.getElementById('total-xp').innerHTML);
			newXP = serverResponse.split(",");
			document.getElementById('xp').innerHTML = currentXP + parseInt(newXP[0]);
			new Effect.Highlight('xp');
			
			var real_total = totalXP - startXP;
			var real_progress = currentXP - startXP;
			//var percentage = (currentXP / totalXP) * 200;
			var percentage = (real_progress / real_total) * 200;

			document.getElementById('bar-progress').style.left =  Math.round(percentage) + "px";
			
			currLevl = newXP[1];
			nextXP = newXP[2];
			currImg = newXP[3];
			if (document.getElementById('levl-num').innerHTML != currLevl)
			{
				document.getElementById('levl-num').innerHTML = currLevl;
				document.getElementById('light').style.display='block';
				document.getElementById('fade').style.display='block';
				document.getElementById('a_msg').innerHTML = "<h2>Levled Up!</h2><img src=\"/images/levl-images/" + currImg +"\"/><p>Congratulations you are now Levl "+ currLevl +".  You will Levl up again with a total of "+ nextXP +" experience points.</p>";
				updateLevl();
			}
		}
	}
}

function updateLevl()
{
	var xhReq = createXMLHttpRequest();
	xhReq.open("GET", "/shared/levl_box.php", true);		
	xhReq.onreadystatechange = onSumResponse;
	xhReq.send(null);
	
	function onSumResponse() 
	{
		if (xhReq.readyState != 4)  { return; }
		var serverResponse = xhReq.responseText;			
		if (serverResponse.length > 0)
		{
			document.getElementById('levl-box').innerHTML = serverResponse;
			new Effect.Highlight('levl-box');
		}
	}
}
