var userName= "";

function isLoggedIn(){
	if(userName == "")
		alert("You must be logged in to use this functionality.");
	return userName != "";
}

function loginUser(){
	if(generateUserName()){
		document.getElementById("userNameWelcomeDiv").innerHTML = userName;
		document.getElementById("loggedInDiv").style.display = "block";
		document.getElementById("notLoggedInDiv").style.display = "none";
		loadWatchList();
		loadActiveSnipeList();
		loadCompletedSnipeList();
		loadSavedSearches();
	}
}

function logout(){
	deleteCookie('user');
	deleteCookie('password');
	userName = "";
	document.getElementById('userNameBox').value = "";
	document.getElementById('userPasswordBox').value = "";	
	//document.getElementById("loggedInDiv").style.display = "none";
	//document.getElementById("notLoggedInDiv").style.display = "block";
	window.location.href = 'index.php';
}


function loggedIn(){
	return userName != "";
}

//Snipe an item
function snipeSearchItem(num){
	var val = prompt("How much would you like to bid on item X.","0.00");
	if(val){
		var sUrl = "php/snipeMod.php?action=add&itemID="+ items[i].ItemID +"&snipeAmount=" + val +"&snipeTime="+items[i].EndTime;
		sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, snipingCallBack, null); 
	}
}

var snipingCallBack = {  
	success: successfulSnipe,
	failure: function() { alert("could not connect to snipelist server.")}
	};
	
function successfulSnipe(){
	//alert('your snipe has been submitted');
}

//login functions

function generateUserName(){
	if(readCookie('user') != null && readCookie('password') != null){
		userName = readCookie('user');
		return true;	
	}else{
		deleteCookie('user');
		deleteCookie('password');
	}
	return null;
}
function deleteCookie ( cookie_name )
{
  var cookie_date = new Date ( );  // current date & time
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}//From: http://www.quirksmode.org/js/cookies.html	
	function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
//From: http://www.quirksmode.org/js/cookies.html	
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


function doLogin(){
	var sUrl = "php/confirmLogin.php";
	if(document.getElementById('userNameBox').value != "" && document.getElementById('userPasswordBox').value != ""){
		document.cookie = "user=" + document.getElementById('userNameBox').value;
		document.cookie = "password=" + document.getElementById('userPasswordBox').value;
		var stateTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, loginCallback, null); 
	}
	else{
		document.getElementById('loginErrorDiv').innerHTML = "Name and Password fields can not be blank.";
	}
}
var loginCallback = {
	success: confirmLogin,
	failure: function(){alert("Smartbidder is not responding. Please check your internet conection and try again.")}
};
function confirmLogin(raw){
	if(raw.responseText == "ok"){
		loginUser();
	}
	else{
		document.getElementById('loginErrorDiv').innerHTML = raw.responseText;
		deleteCookie('user');
		deleteCookie('password');
	}
}

//User owned item functions
function addItemToWatchlist(num){
	var targetId = document.getElementById("itemId"+num).value;
	if(isLoggedIn()){
		document.getElementById('watchItemAction'+num).style.display = "none";
		document.getElementById('unwatchItemAction'+num).style.display = "";
		var sUrl = "php/userWatchlistMod.php?user=" + userName + "&itemID=" + targetId + "&action=add";
		sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, null, null); 
		watchedItems.push(targetId);
		populateItemInfo(targetId);
	}
	updateCounts();
}
function removeItemFromWatchlist(num){
	var targetId = document.getElementById("itemId"+num).value;
	var sUrl = "php/userWatchlistMod.php?user=" + userName + "&itemID=" + targetId + "&action=deleteItem";
	sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, null, null); 
	for(var i = 0; i < watchedItems.length; i++){
		if(watchedItems[i].ItemID == targetId)
			watchedItems.splice(i,1);
	}
	if(activeTab == 2)
		document.getElementById("itemDiv"+num).style.display="none";
		//if(hashItemLink["item"+targetId])
		//	document.getElementById("itemDiv"+hashItemLink["item"+targetId]).style.display="none";
		
	
	document.getElementById('watchItemAction'+num).style.display = "";
	document.getElementById('unwatchItemAction'+num).style.display = "none";
	updateCounts();
}

function archiveItem(num){
	var targetId = document.getElementById("itemId"+num).value;
	var sUrl = "php/snipeMod.php?itemID=" + targetId + "&action=archiveSnipe";
	sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, null, null); 
	for(var i = 0; i < completedSnipeItems.length; i++){
		if(completedSnipeItems[i].ItemID == targetId)
			completedSnipeItems.splice(i,1);
	}
	document.getElementById("itemDiv"+num).style.display="none";
	updateCounts();
}

function cancelActiveSnipe(num){
	var targetId = document.getElementById("itemId"+num).value;
	
	if(confirm("Are you sure you want to cancel the snipe on item '"+document.getElementById("titleTd"+num).innerHTML+"'?")){
		var sUrl = "php/snipeMod.php?itemID=" + targetId + "&action=deleteItem";
		sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, null, null); 
		for(var i = 0; i < activeSnipeItems.length; i++){
			if(activeSnipeItems[i].ItemID == targetId)
				activeSnipeItems.splice(i,1);
			document.getElementById("itemDiv"+num).style.display="none";
		}
	}
}

function submitSnipeQuery(targetId,amt,trailingId,timeToSnipe){

	if(isLoggedIn()){
		//var val = prompt("How much would you like to bid on item X.","0.00");
			
		var sUrl = "php/snipeMod.php?user=" + userName + "&action=add&itemID="+ targetId +"&snipeAmount=" + amt +"&snipeTime="+timeToSnipe+"&trailingId="+trailingId;
		sendTransaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, null, null); 
		snipeHash["item"+targetId] = amt;
		trailingSnipeHash["item"+targetId] = trailingId;
		activeSnipeItems.push(targetId);
		populateItemInfo(targetId);
	}
}

//Sniping functionality
function updateSnipe(){
	var amt = document.getElementById('updatedSnipingAmount').value;
	var targetId = currentTargetSnipeId;
	var trailingId = -1;
	var timeToSnipe = currentTimeToSnipe;
	var trailRadios = document.getElementsByName('trailingSnipeItem');
	for(var i = 0; i < trailRadios.length; i++){
		if(trailRadios[i].checked)
			trailingId = trailRadios[i].value;
	}
	submitSnipeQuery(targetId,amt,trailingId,timeToSnipe);
	document.getElementById('snipingConfigurationDiv').style.display="none";
	
	for(var i = 0; i < activeSnipeItems.length; i++){
		if(activeSnipeItems[i].ItemID == targetId)
			activeSnipeItems.splice(i,1);
	}
	
	if(hashItemLink["item"+targetId]){
		document.getElementById('snipeAction'+hashItemLink["item"+targetId]).style.display = "none";
		document.getElementById('editSnipeAction'+hashItemLink["item"+targetId]).style.display = "";
	}
	updateCounts();
}

function cancelSnipe(){
	document.getElementById('snipingConfigurationDiv').style.display="none";
}

var currentTargetSnipeId = -1;
var currentTimeToSnipe;
function snipeItem(num){
	if(isLoggedIn()){
		var targetId = document.getElementById("itemId"+num).value;
		var timeToSnipe = document.getElementById("timeEnding"+num).value;
		var secondsLeft = document.getElementById("secondsLeft"+num).value;
		var trailingId = -1;
		
		document.getElementById('snipingConfigurationDiv').style.display="block";
		currentTargetSnipeId = targetId;
		currentTimeToSnipe = timeToSnipe;
		document.getElementById('snipeTitle').innerHTML = document.getElementById("titleTd"+num).innerHTML;
		
		if(snipeHash["item"+targetId] != null){
			document.getElementById('snipeAmountSpan').innerHTML = snipeHash["item"+targetId];
			document.getElementById('updatedSnipingAmount').value = snipeHash["item"+targetId];
			document.getElementById('submitSnipeA').innerHTML = "Update";
			trailingId = trailingSnipeHash["item"+targetId];
		}else{
			document.getElementById('snipeAmountSpan').innerHTML = "Not sniping";
			document.getElementById('submitSnipeA').innerHTML = "Submit snipe";
			document.getElementById('updatedSnipingAmount').value = "0.00";
		}
		
		var followSnipeTable = document.getElementById('followSnipeTable');
		
		while(followSnipeTable.childNodes.length != 0)
			followSnipeTable.removeChild(followSnipeTable.childNodes[0]);
		
		var noneTr = document.createElement('tr');
		var noneTd1 = document.createElement('td');
		var noneTd2 = document.createElement('td');
		
		
		if(trailingId == -1)
			noneTd1.innerHTML = "<input type=\"radio\" name=\"trailingSnipeItem\" value=\"-1\" checked />";
		else
			noneTd1.innerHTML = "<input type=\"radio\" name=\"trailingSnipeItem\" value=\"-1\" />";
		noneTd2.innerHTML = "None";
		
		noneTr.appendChild(noneTd1);
		noneTr.appendChild(noneTd2);
		
		followSnipeTable.appendChild(noneTr);
		
		for(var i = 0; i < activeSnipeItems.length; i++){
			if(activeSnipeItems[i].secondsLeft < secondsLeft - 120){
				var tr = document.createElement('tr');
				var td1 = document.createElement('td');
				var td2 = document.createElement('td');
				tr.appendChild(td1);
				tr.appendChild(td2);
				if(activeSnipeItems[i].ItemID == trailingId)
					td1.innerHTML = "<input type=\"radio\" name=\"trailingSnipeItem\" value=\""+activeSnipeItems[i].ItemID+"\" checked>";
				else
					td1.innerHTML = "<input type=\"radio\" name=\"trailingSnipeItem\" value=\""+activeSnipeItems[i].ItemID+"\">";
				td2.innerHTML = activeSnipeItems[i].Title;

				followSnipeTable.appendChild(tr);
			}
		}
	}	
}
