var resetPrice="";
var resetQuantity="";
var resetStopVal="";
var resetLifetime="";
var resetExpiryTime="";
var otherTimeText = "Custom Time"

function changeTimeInForce(){
	var tif =document.orderTicket.FOKorGFSorGTCorGTT.value;
	var elemOrderKillTime = document.orderTicket.orderKillTime;
	if(tif=='fok'){  //if FOK
		disableTime();

		document.orderTicket.stopPrice.value="none";
		document.orderTicket.stopPrice.disabled=true;
		document.orderTicket.StopLimitOrder.checked=false;
	}else if(tif=='gfs' || tif=='gtc'){
		disableTime();
	}else if(tif=='evStart'){
		showDefaultTime(true);
		setEventStartTime();
	}else if(tif=='othertime'){
		showDefaultTime(true);
		setAdvanced(true);
	}else{
		disableTime();
	}
}


function setEventStartTime(){
	var starttime=parent.selConEventStartTime;
	setTime(starttime);
}

function showGBTime(show){
	showTime(show, parent.otherTimeGB);
}


function showUSTime(show){
	showTime(show, parent.otherTimeUS);
}

function showTime(show, time){
	var killbox = getElementById("orderKillTime");
	if(show){
		getElementById("FOKorGFSorGTCorGTT").value="othertime";
		killbox.disabled  =false;
		killbox.value=time;
	}else{
	    killbox.disabled  =true;
		killbox.value=otherTimeText;
	}
}

function disableTime(){
	var killbox = getElementById("orderKillTime");
	killbox.disabled  =true;
	killbox.value=otherTimeText;
}

function setAdvanced(show){
	var timerow = getElementById("timerow");
	var stoprow = getElementById("stoprow");

	if(show){
		timerow.style.visibility ='visible';
		stoprow.style.visibility ='visible';
		document.orderTicket.advOrder.checked=true;
		
		
		
	}else{
		
		isStop = false;
		stopPrice="none";
		killtime=otherTimeText;
		if(getElementById("FOKorGFSorGTCorGTT").value=="othertime"){
			lifetime="gfs";
			getElementById("FOKorGFSorGTCorGTT").value=lifetime;
		}
		getElementById("orderKillTime").disabled=true;
		getElementById("StopLimitOrder").checked= isStop;
		getElementById("stopPrice").value= stopPrice;
		getElementById("orderKillTime").value=killtime;

		timerow.style.visibility ='hidden';
		stoprow.style.visibility ='hidden';
		document.orderTicket.advOrder.checked=false;
	}		
}

function setStopOrder(){
	var stopper = getElementById("StopLimitOrder");
	var stopPrc = getElementById("stopPrice");
	if(stopper.checked){
        stopPrc.disabled=false;
		stopPrc.value="";
		if(document.orderTicket.FOKorGFSorGTCorGTT.value=='fok'){
			document.orderTicket.FOKorGFSorGTCorGTT.value='gfs';
		}

	}else{
		stopPrc.disabled=true;
		stopPrc.value="none";
	}
}

function enterOrder(){
	if (isBuySide)
		document.orderTicket.side.value = "B"
	else
		document.orderTicket.side.value = "S";
		

	if (orderType=="GTC")  
		document.orderTicket.timeInForce.value = "0"
	else if (orderType=="GTT")  
		document.orderTicket.timeInForce.value = "1"
	else 
		document.orderTicket.timeInForce.value = "2";

	if (orderType=="GTT") {
		document.orderTicket.minutesTillExpiry.value = minTillExp;
	}
	

		
	if (isStop){
		document.orderTicket.orderType.value = "T";
		document.orderTicket.touchPrice.value=stopPrice;
	}else {
		if (orderType=="FOK")
			document.orderTicket.orderType.value = "F";
	    else
		    document.orderTicket.orderType.value = "L";
	}
	
	document.orderTicket.contractID.value=conID;
	document.orderTicket.limitPrice.value=price;
	
	document.orderTicket.originalQuantity.value=quantity;
	document.orderTicket.quantity.value=quantity;
	document.orderTicket.type.value=document.orderTicket.orderType.value;
	document.orderTicket.resetLifetime.value=resetLifetime;
	
}

function submitOrder(){
	document.orderTicket.request_operation.value="enterOrder";
	if(document.orderTicket.trade){
		document.orderTicket.trade.disabled=true;
		document.orderTicket.cancelOrder.disabled=true;
	}	
	document.orderTicket.contractID.value = parent.selConID;
	enterOrder();
	document.orderTicket.submit();
	showOrderWait();
	return false;
}

var lnktext = "Order being sent....";
function showOrderWait(){
	var elem = getElementById("sendInfoData");
	if(elem)
		elem.innerHTML=lnktext;

}

function amtCheck(){
	document.orderTicket.request_operation.value="hypoOrder";
	document.orderTicket.trade.disabled=true;
	document.orderTicket.contractID.value = parent.selConID;
	enterOrder();
	document.orderTicket.submit();
	return false;
}


function resetTicket(){
	location.href= "/jsp/intrade/trading/t_ot.jsp?limitPrice="+resetPrice
				    +"&quantity="+resetQuantity
					+"&lifetime="+resetLifetime
					+"&killtime="+resetExpiryTime
					+"&touchPrice="+resetStopVal;
}

function sell(){
	showCheck(false);
}

function buy(){
	showCheck(true);
}




function showError( message){
	if(isNaN(price))
		price="";
		
	if(isNaN(quantity))
		quantity="";

	var elem =getElementById("otInner");
	var lnktext = "";
	
	lnktext="<table border=0 cellpadding=5 cellspacing=1   height=100% width=190 >";
	lnktext = lnktext+ "<tr valign=middle>";
	lnktext = lnktext+ "<td align=center class=smallbold height=200>";
	lnktext = lnktext+ message;	
	lnktext = lnktext+ "</td>";
	lnktext = lnktext+ "</tr>";

	lnktext = lnktext+ "<tr>";
	lnktext = lnktext+ "<td width=50% align=center height=50 valign=middle><input style=\"WIDTH: 65px\" type=button onclick='resetTicket();' id=okBtn value='OK'></td>";
	lnktext = lnktext+ "</tr>";

	lnktext = lnktext+ "</table>";

	elem.innerHTML=lnktext;
	setTimeout("okFocus()", 10 );
}

function okFocus(){
	if(getElementById("okBtn"))
		getElementById("okBtn").focus();
}

function showCheck( isBuy ){
	conID=parent.selConID;
	quantity = getElementById("quantityInpt").value;
	price= getElementById("limitPriceInput").value;
	isStop = getElementById("StopLimitOrder").checked;
	stopPrice= getElementById("stopPrice").value;
	minTillExp= document.orderTicket.FOKorGFSorGTCorGTT.value;

	
	resetPrice=price;
	resetQuantity=quantity;
	resetStopVal=stopPrice;
	resetLifetime=minTillExp;
	resetExpiryTime=document.orderTicket.orderKillTime.value;
	
	
	
	if(quantity == "")
		return showError("Please enter a quantity!",price, quantity);
	if(isNaN(quantity)  || quantity<1 ){
	    return showError("Not a valid quantity: "+ quantity,price, quantity);
		
	}
	
	if(price == "")
		return showError("Please enter a price!"	,price, quantity);
	if(isNaN(price))
	    return showError("Not a valid price: " + price,price, quantity);


	if(isStop){
	    if(stopPrice == "")
			return showError("Please enter a stop price for stop orders!",	price, quantity);
		if(isNaN(stopPrice))
			return showError("Not a valid stop price", price, quantity);
	}

	var ordertype="";
	var side ="";
	var currBest = "";
	var tif = "";
	
	var typeSelVal=document.orderTicket.FOKorGFSorGTCorGTT.value;

	if (typeSelVal=='fok')  {
		orderType="FOK";
		tif = "Fill or Kill";
	}else if (typeSelVal=='gtc')  {
		tif = "Good till Cancel"
		orderType="GTC";
	
	}else if (typeSelVal=='gfs' ) {
		tif = "Good for Session"
		orderType="GFS";
	}else if (typeSelVal=='evStart' 
	    || typeSelVal=='othertime'
	) {
		var tempkilltime= document.orderTicket.orderKillTime.value;
		tif = "Good till " + tempkilltime;
		orderType="GTT";
		document.orderTicket.killtime.value=tempkilltime;
	}else   {
		if (minTillExp < 60)
			tif = "Good for " + minTillExp + " minutes";
		else
			tif = "Good for " + (minTillExp/60) + " hours";
		orderType="GTT";
	}
	
	var buyOrSell='';
	var sendStyle='';
	if (isBuy ){
		if(!isStop && !isNaN(parent.selConBestAsk) && (price >  5 + Number(parent.selConBestAsk)  )){
			
			if(!confirm ("Are you sure you want to buy at a price significantly greater than the current best offer?")){
				return;
			}
		}

		
		isBuySide=true;
		side = "<b><font color=green size=3>Buy</font></b>";
		currBest = "<td>current ask:</td><td>"+parent.selConBestAsk+"</td>";
		buyOrSell="Buy";
		sendStyle="BORDER-LEFT-COLOR: green; " 
			    + " BORDER-BOTTOM-COLOR: green; "
				+ " COLOR: white; "
				+ " BORDER-TOP-COLOR: green; "
				+ " BACKGROUND-COLOR: green; "
				+ "	BORDER-RIGHT-COLOR: green;"
				+ "	font-weight: bold;"
				+ "	WIDTH: 65px"
	}else{

		if(!isStop && !isNaN(parent.selConBestBid) && (price < Number(parent.selConBestBid) - 5)){
			if(!confirm ("Are you sure you want to sell at a price significantly less the the current best bid?")){
				return;
			}
		}


		isBuySide=false;	
		side = "<b><font color=red size=3>Sell</font></b>";
		currBest = "<td>current bid:</td><td>"+parent.selConBestBid+"</td>";
		buyOrSell="Sell";
				sendStyle="BORDER-LEFT-COLOR: red; " 
			    + " BORDER-BOTTOM-COLOR: red; "
				+ " COLOR: white; "
				+ " BORDER-TOP-COLOR: red; "
				+ " BACKGROUND-COLOR: red; "
				+ "	BORDER-RIGHT-COLOR: red;"
				+ "	font-weight: bold;"
				+ "	WIDTH: 65px"
	}
	
	if(parent.isNoConfirmSet())
		submitOrder();
	else{

		var elem =getElementById("otInner");

		var lnktext = "";
		
		lnktext="<table border=0 cellpadding=3 cellspacing=1   height=100% width=100%>";

		lnktext = lnktext+ "<tr>";
		lnktext = lnktext+ "<td align=center colspan=2 height=25>"+side+"</td>";
		lnktext = lnktext+ "</tr>";


		lnktext = lnktext+ "<tr >";
		lnktext = lnktext+ "<td align=left colspan=2 height=44><b>"+parent.selConName+"</b></td>";
		lnktext = lnktext+ "</tr>";

		
		lnktext = lnktext+ "<tr>";
		lnktext = lnktext+ "<td>contracts:</td><td>"+quantity+"</td>";
		lnktext = lnktext+ "</tr>";
		
		lnktext = lnktext+ "<tr>";
		lnktext = lnktext+ "<td>limit price:</td><td>"+price+"</td>";
		lnktext = lnktext+ "</tr>";

		if(!isStop){      //remove this to make room for stop price and time
			lnktext = lnktext+ "<tr>";
			lnktext = lnktext+ currBest;
			lnktext = lnktext+ "</tr>";
		}
		
		
		if(isStop){
			lnktext = lnktext+ "<tr>";
			lnktext = lnktext+ "<td colspan=2>";
			if (isBuy) {
				lnktext = lnktext+ "Your order will be hidden until a trade occurs at <b>"+stopPrice+"</b> or more.</td>";
			} else {
				lnktext = lnktext+ "Your order will be hidden until a trade occurs at <b>"+stopPrice+"</b> or less.</td>";
			}
			lnktext = lnktext+ "</tr>";
		}
		
		lnktext = lnktext+ "<tr>";
		lnktext = lnktext+ "<td colspan=2>"+tif+"</td>";
		lnktext = lnktext+ "</tr>";	

		lnktext = lnktext+ "<tr >";
		if(isStop){
			lnktext = lnktext+ "<td  colspan=2 align=left><a href=# onClick='javascript:return amtCheck();' id=howmuch>How much will this cost?</a></td>";
		}else{
			lnktext = lnktext+ "<td  colspan=2 align=left height=30><a href=# onClick='javascript:return amtCheck();'>How much will this cost?</a></td>";
		}
		
		lnktext = lnktext+ "</tr>";	


		lnktext = lnktext+ "<tr>";
		if(isStop){
			lnktext = lnktext+ "<td width=50%  align=center  ><input style=\""+sendStyle+"\" type=button onclick='submitOrder();' name=trade id=trade value='"+buyOrSell+"'></td>";
		}else{
			lnktext = lnktext+ "<td width=50%  align=center height=40 ><input style=\""+sendStyle+"\" type=button onclick='submitOrder();' name=trade id=trade value='"+buyOrSell+"'></td>";
		}

		lnktext = lnktext+ "<td width=50%  align=center><input style=\"WIDTH: 65px\" type=button name=cancelOrder id=cancelOrder onclick='resetTicket();' value='Cancel'></td>";
		lnktext = lnktext+ "</tr>";

		lnktext = lnktext+ "<tr>";
		lnktext = lnktext+ "<td id=sendInfoData name=sendInfoData colspan=2>Press '"+buyOrSell+"' to place this order</td>";
		lnktext = lnktext+ "</tr>";	

		lnktext = lnktext+ "</table>";

		var headline = getElementById("otHeadline");
		headline.innerHTML="Confirm Your Order"
		elem.innerHTML=lnktext;

		setTimeout("tradeFocus()",10);
}

	return false;
}

function tradeFocus(){
	if(getElementById("trade"))
		getElementById("trade").focus();
}



function doClear(){
	quantity="";
	price="";
	isStop = false;
	stopPrice="none";
	lifetime="gfs";
	killtime=otherTimeText;
	getElementById("orderKillTime").disabled=true;
	setAdvanced(false);
	setValues();
}

function setValues(){
	getElementById("quantityInpt").value = quantity;
	getElementById("limitPriceInput").value= price;
	getElementById("StopLimitOrder").checked= isStop;
	getElementById("stopPrice").value= stopPrice;
	getElementById("FOKorGFSorGTCorGTT").value=lifetime;
	getElementById("orderKillTime").value=killtime;
}



function showHelp(helpText){
	var win = window.open('','helpWin','width=500,height=390,top=50,left=300,menubar=no,status=no,toolbar=no,dependent=yes,resizable=yes, scrollbars=yes');
	win.focus();
	win.document.open("text/html", "replace");
	win.document.write(helpText );
}



function incPrice(amt){
	var price = getElementById("limitPriceInput").value;
	
	if(	!isNaN(price) ){
		price = Number(price) + amt;	
		
		price =  Math.round(price*Math.pow(10,1))/Math.pow(10,1);
		
		getElementById("limitPriceInput").value = price;		 
	 }
		 
}


function priceKey(e) {
	if(	 event.keyCode){
		 if(event.keyCode == 38){
			incPrice(1);
			
		 }else if(event.keyCode == 40){
			incPrice(-1);

		 }
	}
}

function wheelIncPrice(){  
    var amt=0;
	if (event.wheelDelta >= 120)
        incPrice(1);
    else if (event.wheelDelta <= -120)
       incPrice(-1); 

	return false;
}

function incQuantity(amt){
	var quant = getElementById("quantityInpt").value;
	if(	!isNaN(quant)){
		quant = Number(quant) + amt;	
		if(quant<1)
			quant=1;
		getElementById("quantityInpt").value = quant;		 
	}	
}

function quantKey(e) {
	if(	 event.keyCode){
		 if(event.keyCode == 38){
			incQuantity(1);
			
		 }else if(event.keyCode == 40){
			incQuantity(-1);
		 }
	}	
}


function wheelIncQuantity(){  
    var amt=0;
	if (event.wheelDelta >= 120)
        incQuantity(1);
    else if (event.wheelDelta <= -120)
       incQuantity(-1); 

	return false;
}

document.onkeydown=press;
function press(e) {
  var elem = getElementById("FOKorGFSorGTCorGTT");
	if(elem != null && elem.value != "othertime")
	{
		if(event.keyCode && event.keyCode == 66){
			if(getElementById("quantityInpt"))
			   buy();
		}else	if(event.keyCode && event.keyCode == 83){
			if(getElementById("quantityInpt"))
			   sell();
		}else if(event.keyCode && event.keyCode == 67){
			if(getElementById("quantityInpt")){
				doClear();
				return false;
			}
		}else if(event.keyCode && event.keyCode == 27){
			if(getElementById("trade"))
				resetTicket();
		}
	}
	
}

function setfocus(){
	getElementById("quantityInpt").focus();
}

