﻿function ShowHotLotDialog(){
  switch(sMDResponse){
    case "na":
      var sTitle="Hot Lot";
      var sDescription='Hot Lot: A Hot Lot is an item that has received bidding from 5 or more unique bidders since the auction was created.  You may hover your mouse over the "Hot Lot" icon to see the total number of pre-bids.  Use the sort function located at the top of the catalog to view all of the hot lots for a particular auction catalog.';
      var sButtons="ok";
      ShowDialog(sTitle, sDescription, sButtons, "info");
      setTimeout("ConfirmAuctioneer()", 500);
      break;
    case "waiting":
      setTimeout("ConfirmAuctioneer()", 500);
      break;
    case "ok":
      sMDResponse='na';
      break;
  }
}

var BID_AMOUNT_DEFAULT = "Enter bid amount";
var DELIMITER = "~";
var currentBids = [];

function bidAmountFocus(lotID){
	if(document.getElementById("BidAmount:" + lotID).value == BID_AMOUNT_DEFAULT){
		document.getElementById("BidAmount:" + lotID).value = ""
	}
}
function bidAmountBlur(lotID){
	if(document.getElementById("BidAmount:" + lotID).value == ""){
		document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT
	}
}


function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)){
		num = "0";
	}
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();

	if(cents < 10){
		cents = "0" + cents;
	}

	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++){
		num = num.substring(0,num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
	}
	return (((sign)?'':'-') +  num  + '.' + cents);
}


function confirmBid(lotID){
	var bidAmount = document.getElementById("BidAmount:" + lotID).value;
	var bidOrig = bidAmount.toString().replace(/\$|\,/g,'');
	bidAmount = formatCurrency(bidAmount);  //do some clean up 
	//set cleanup value back to text for use in placeBid function... only matters if we add some cleanup/error checks
	document.getElementById("BidAmount:" + lotID).value = bidAmount;
	
	if(isNaN(bidOrig)){
		document.getElementById("additionalMessage:" + lotID).innerHTML = "<span style='font-weight:bold;color:red;'>Error.</span> bid amount must be a number.";
		document.getElementById("additionalMessage:" + lotID).style.display = "block";
		document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT;
	}else if(bidOrig <= 0.0049999999){
		document.getElementById("additionalMessage:" + lotID).innerHTML = "<span style='font-weight:bold;color:red;'>Error.</span>  " + bidAmount + "  Come on!  Be serious.";
		document.getElementById("additionalMessage:" + lotID).style.display = "block";
		document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT;
	}else{
		document.getElementById("additionalMessage:" + lotID).style.display = "none";
		storeBidInfo(lotID, document.getElementById("Bid:" + lotID).innerHTML, document.getElementById("Bidder:" + lotID).innerHTML, document.getElementById("statusLabel:" + lotID).innerHTML, document.getElementById("additionalMessage:" + lotID).innerHTML)
		setLotStatus(lotID, bidAmount, "", 2, "Confirm bid amount?", -1)
		document.getElementById("statusLabel:" + lotID).innerHTML = "You Entered";
		showButtons(lotID, "confirmBid" );
	}
}

function placeBid(auctionID, lotID){

	document.getElementById("confirmBid:" + lotID).style.display = "none";
	document.getElementById("placingBid:" + lotID).style.display = "block";
	
	var RequestURL = "/asp/xml/LotPlaceBid.asp?aid=" + auctionID + "&lid=" + lotID + "&amt=" + document.getElementById("BidAmount:" + lotID).value.replace(/,/gi, "");
	var wRequest = new Sys.Net.WebRequest();
	wRequest.set_url(RequestURL);
	wRequest.set_httpVerb("GET");
	
	wRequest.add_completed(placeBidHandler);

	var executor = wRequest.get_executor(); 
	
	wRequest.invoke();
	
}

function placeBidHandler(response){

	if(response.get_responseAvailable()){
		var XMLResponse = response.get_xml();
		var lots = XMLResponse.getElementsByTagName("lot");
		var lotID
		var highBidLabel = "High Bid";
		
		for(var j = 0; j < lots.length; j++){
			lotID = lots.item(j).childNodes[0].childNodes[0].nodeValue; //LotID
			
			if(document.getElementById("Lot:" + lotID) && document.getElementById("placingBid:" + lotID).style.display == "block"){
				// HIGH BIDDER
				var highBidder = lots.item(j).childNodes[1].childNodes[0].nodeValue; //leading bidder/SoldToBidderID
				//if(highBidder.toLowerCase() != "none" && highBidder.toLowerCase() != "onsite"){
				//	highBidder = "By: " + highBidder
				//}
				
				//HIGH BID
				var highBid = lots.item(j).childNodes[2].childNodes[0].nodeValue; //leading bid/HammerPrice
				
				//RESERVE
				var reserveMet = lots.item(j).childNodes[3].childNodes[0].nodeValue; // Reserve status 0:not met; 1:met; 2:no reserve (0.00)
				
				//MESSAGE
				var message = lots.item(j).childNodes[4].childNodes[0].nodeValue; //message to display.
				
				//BETWEEN INCREMENT MESSAGE
				var betweenIncMsg = "";
				var incTemp;
				if(lots.item(j).childNodes.length >= 6){
					incTemp = lots.item(j).childNodes[5].childNodes[0].nodeValue;
					if(incTemp.replace(/,/gi, "") > 0){
						betweenIncMsg = " Try " + incrementLink(lotID, incTemp);
					}
					
					if(lots.item(j).childNodes.length >= 7){
						incTemp = lots.item(j).childNodes[6].childNodes[0].nodeValue;
						if(incTemp.replace(/,/gi, "") > 0){
							if(betweenIncMsg != ""){
								betweenIncMsg += " or " + incrementLink(lotID, incTemp);
							}
							else{
								betweenIncMsg = " Try " + incrementLink(lotID, incTemp);
							}
						}
					}
				}
				if(betweenIncMsg != ""){
					message += betweenIncMsg + "."
				}
			}
			setLotStatus(lotID, highBid, highBidder, reserveMet, message)
			removeBidInfo(lotID);
			showButtons(lotID, "placeBid");
			document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT
		}
	}
	
	//document.getElementById("statusLabel:" + lotID).innerHTML = highBidLabel;
	//document.getElementById("Bid:" + lotID).innerHTML = highBid;
	//document.getElementById("Bidder:" + lotID).innerHTML = highBidder;
	//document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT;
	
	
	/*if(response){
		document.getElementById("additionalMessage:" + lotID).innerHTML = "<span style='font-weight:bold;color:green;'>Congrats!</span> You are the high bidder!"
	}
	else{
		document.getElementById("additionalMessage:" + lotID).innerHTML = "<span style='font-weight:bold;color:red;'>Sorry.</span> There was a higher bid.<br />Bid again!"
	}*/
	
}

function cancelBid(lotID){
	showButtons(lotID, "placeBid");
	setLotStatus(lotID, 0, getBidder(lotID),"", "")
	//document.getElementById("statusLabel:" + lotID).innerHTML = bidLabel;
	removeBidInfo(lotID);
	document.getElementById("BidAmount:" + lotID).value = BID_AMOUNT_DEFAULT
}

function showButtons(lotID, buttonToShow){
	var button = "placeBid,confirmBid,placingBid".split(",");
	for(var i = 0; i < button.length; i++){
		document.getElementById(button[i] + ":" + lotID).style.display = "none";
	}
	document.getElementById(buttonToShow + ":" + lotID).style.display = "block";
}

function incrementLink(lotID, bidAmount){
	return "<span style='cursor:pointer;border-bottom:1px dotted #666666' onclick='document.getElementById(\"BidAmount:" + lotID + "\").value=\"" + bidAmount + "\"'>" + bidAmount + "</span>"
}

function storeBidInfo(lotID, bid, bidder, statusLabel, extraMessage){
	bidder = bidder.replace(/by: /gi, "")
	currentBids.push(lotID + DELIMITER + bid + DELIMITER + bidder + DELIMITER + statusLabel + DELIMITER + extraMessage)
}

function getBid(lotID){
	var bidInfo = findBidInfo(lotID);
	return bidInfo[1];
}

function getBidder(lotID){
	var bidInfo = findBidInfo(lotID);
	return bidInfo[2];
}

function getBidLabel(lotID){
	var bidInfo = findBidInfo(lotID);
	return bidInfo[3];
}

function getExtraMessage(lotID){
	var bidInfo = findBidInfo(lotID);
	return bidInfo[4];
}

function findBidInfo(lotID){
	var bidInfoMatch = [null, null, null, null, null];
	for(var i = 0; i < currentBids.length; i++){
		var bidInfo = currentBids[i].split(DELIMITER);
		if(bidInfo[0] == lotID){
			bidInfoMatch = bidInfo;
			break
		}
	}
	return bidInfoMatch;
}

function removeBidInfo(lotID){
	var bidInfoIndex;
	for(var i = 0; i < currentBids.length; i++){
		var bidInfo = currentBids[i].split(DELIMITER);
		if(bidInfo[0] == lotID){
			currentBids.splice(i ,1);
		}
	}
	
}

function setLotStatus(lotID, bid, bidder, reserveMet, msg, lotStatus, timeRemaining){

//console.log(lotID + " : " + bid + " : " + bidder + " : " + reserveMet + " : " + msg + " : " + lotStatus + " : " + timeRemaining)
	//NOTE lotStatus and timeRemaining only come through in timed auctions when remaining time is updated... 
	var bidLabel = "High Bid:";
	
	if(!lotStatus){
		lotStatus = 0;
	}
	else if(lotStatus == 3 || lotStatus > 4){
		bidLabel = "SOLD:";
		msg = "";
	}
	else if(lotStatus == 4){
		bidLabel = "PASSED";
		msg = "This lot was not sold";
		bid = ""
		if(document.getElementById("Bid:" + lotID)){
			document.getElementById("Bid:" + lotID).style.display = "none";
		}
		if(document.getElementById("Symbol:" + lotID)){
			document.getElementById("Symbol:" + lotID).style.display = "none";
		}
	}
	
	if(bidder.toLowerCase() == "onsite" || bidder.toLowerCase() == "no bids"){
		bidder = "";
	}
	else if(bidder.toLowerCase() == "none"){
		bidder = getBidder(lotID);
	}
	else if(lotStatus >= 3 && lotStatus !=4){
		bidder = "To: " + bidder;
	}
	else if(lotStatus <= 4 && lotStatus != 0){
		bidder = "";
	}
	else{
		bidder = "By: " + bidder;
	}
	
	if(lotStatus == 0 && (bid == 0 || bid.toLowerCase() == "none")){
		var tmpBid = getBid(lotID);
		if(tmpBid){
			bid = tmpBid
			if(document.getElementById("Bid:" + lotID)){
				document.getElementById("Bid:" + lotID).innerHTML = bid;
			}
		}
		var tmpBidLabel = getBidLabel(lotID);
		if(tmpBidLabel){
			bidLabel = tmpBidLabel
			if(document.getElementById("statusLabel:" + lotID)){
				document.getElementById("statusLabel:" + lotID).innerHTML = bidLabel;
			}
		}
		//bid = getBid(lotID);
		//bidLabel = getBidLabel(lotID);
		////bidLabel = "No bids placed yet";
		if(bidLabel == "Opening Bid:" || bidLabel == "No bids placed yet"){
			bidder = "";
			if(!msg){
				msg = getExtraMessage(lotID);
			}
			if(bidLabel == "No bids placed yet"){
				if(document.getElementById("Bid:" + lotID)){
					document.getElementById("Bid:" + lotID).style.display = "none";
				}
				if(document.getElementById("Symbol:" + lotID)){
					document.getElementById("Symbol:" + lotID).style.display = "none";
				}
			}
		}
	}
	else{
		if(document.getElementById("statusLabel:" + lotID)){
			document.getElementById("statusLabel:" + lotID).innerHTML = bidLabel;
		}
	}
	//document.getElementById("statusLabel:" + lotID).innerHTML = bidLabel;
	//document.getElementById("Bid:" + lotID).innerHTML = bid;
	if(isNaN(bid.toString().replace(/-|\+|\$|\,/g,'')) || bid <= 0){
		// this code commented out to prevent the automatic updater from overwriting the opening bid text.
		// now when the bid is zero. it just leaves the text as is.
		//document.getElementById("Symbol:" + lotID).style.display = "none";
		//document.getElementById("Bid:" + lotID).style.display = "none";
		//document.getElementById("Bid:" + lotID).innerHTML = "";
	}else{
		if(document.getElementById("Bid:" + lotID)){
			document.getElementById("Bid:" + lotID).innerHTML = bid;
			document.getElementById("Bid:" + lotID).style.display = "inline";
		}
		if(document.getElementById("Symbol:" + lotID)){
			document.getElementById("Symbol:" + lotID).style.display = "inline";
		}
	}
	
	if(document.getElementById("Bidder:" + lotID)){
		if(bidder != ""){
			document.getElementById("Bidder:" + lotID).innerHTML = bidder;
			document.getElementById("Bidder:" + lotID).style.display = "block";
		}
		else{
			document.getElementById("Bidder:" + lotID).style.display = "none";
			document.getElementById("Bidder:" + lotID).innerHTML = "";
		}
	}
	
	if(document.getElementById("reserveMet:" + lotID) && document.getElementById("reserveNotMet:" + lotID)){
		if(reserveMet == "0"){
			document.getElementById("reserveNotMet:" + lotID).style.display = "block";
			document.getElementById("reserveMet:" + lotID).style.display = "none";
		}
		else if(reserveMet == "1"){
			document.getElementById("reserveNotMet:" + lotID).style.display = "none";
			document.getElementById("reserveMet:" + lotID).style.display = "block";
		}
		else if (reserveMet == "2"){
			//Do nothing here because there is no reserve for this lot
		}
		else if(reserveMet != "none" && reserveMet != ""){// "" means leave alone. "none" will only be here if there was an error of some sort
			document.getElementById("reserveNotMet:" + lotID).style.display = "none";
			document.getElementById("reserveMet:" + lotID).style.display = "none";
		}	
	}
	
	if(document.getElementById("additionalMessage:" + lotID)){
		if(msg != "" && msg != "~dnd~"){
			document.getElementById("additionalMessage:" + lotID).innerHTML = msg;
			document.getElementById("additionalMessage:" + lotID).style.display = "block";
		}
		else if(msg != "~dnd~"){
			document.getElementById("additionalMessage:" + lotID).style.display = "none";
			document.getElementById("additionalMessage:" + lotID).innerHTML = "";
		}
	}
}