// $Id$
function bindEvents() {
    // bind onchange event for order option            
    $('select',$('#orderOptCont')).change(function(){
       getQuantity(this,'option[]','orderqty[]',json_qtys);
	});
	
    // bind onchange event for additional items
	$('select',$('#addItemsContainer')).change(function(){
	    getQuantity(this,'additemtype[]','additemqty[]',json_additems);
	});
	
	// quantity input event for order option
	$('input[@type=text]',$('#orderOptCont')).keyup(function(){
	    updatePrice(this,'.optPrice',sellingPrice)
	    updateSubTotal('.optPrice','#orderoptionsubtotal');
	});
	
	// quantity input event for additional details
	$('input[@type=text]',$('#addItemsContainer')).keyup(function(){
    	var uid = getObjIndex(this,'input');
    	var addItemPrice = 0;
    	t = 'additemtype[]';
        opt1 = $('select[@name=\''+t+'\']').eq(uid);
        addItemPrice = parseFloat(getAddItemsPrice(opt1.val(),json_additems));
        updatePrice(this,'.addItemsPrice',addItemPrice,'.addAvailable');
        updateSubTotal('.addItemsPrice','#additemsubtotal');
	});        	
	
	addKeypressListener();
}

function getQuantity(obj){
    var args = arguments;
    var uid = getObjIndex(obj,'select');
    var optQty = 0;
    opt1 = $('select[@name=\''+args[1]+'\']').eq(uid);
    optQty = getOptionQty(String(opt1.val()),args[3]);

    var inputQty = $('input[@name=\''+args[2]+'\']').eq(uid);
    if(optQty){
        inputQty.val(optQty);
        inputObj = inputQty.get(0);
    	inputObj.qty = optQty;    
        inputQty.trigger('keyup');        
        inputQty.removeAttr('disabled');
        inputObj.focus();
        inputObj.select();
    }else{
        inputQty.val("0");
        inputQty.trigger('keyup');
		inputQty.attr('disabled','disabled');
		optQty = '0';
    }
}   

function getOptionQty(opt1,json){
   for (var p in json) {
       var v = json[p];
       if(v['id']==opt1){
         return v['qty'];
       }
   }
}

function getAddItemsPrice(opt1,json){
   for (var p in json) {
       var v = json[p];
       if(v['id']==opt1){
         return v['price'];
       }
   }
}  

function getObjIndex(obj,type){
    return $(type + '[@name=\''+obj.name+'\']').index(obj);
}

function updatePrice(obj){
    var args = arguments;
    var uid = obj.guid | $(obj).attr('guid');
    var addQty;
    var availQty = obj.qty | $(obj).attr('qty');
    if(Number(obj.value)<=availQty){
        addQty = "+"+formatCurrency(parseFloat(args[2]) * parseFloat(obj.value));
        addQty = addQty.replace(/,/g,"");
    }else{
        addQty = "0";
    }   
    $(args[1]).eq(uid).text((isNaN(addQty) ? "":addQty));
//            if(addQty==""){ return false; } 
}

function updateSubTotal(obj,dest){
    var subPrice = 0;
    $(obj).each(function(){
        var p = $(this).text();
        subPrice += parseFloat(p.replace('+',""));
    });
    $(dest).val((isNaN(subPrice) ? "":formatCurrency(subPrice)));
    
    subp1 = parseFloat(RemStr(replaceZero($('#orderoptionsubtotal').val()),","));
    subp2 = parseFloat(RemStr(replaceZero($('#additemsubtotal').val()),","));
    
    totalPrice = ((isNaN(subp1) ? 0:subp1)+(isNaN(subp2) ? 0:subp2));
   
    custQty = Number($("#custQty").val()) * parseFloat(replaceZero(sellingPrice));
    if(!isNaN(custQty)){
        if(Number($("#custQty").val()) <= qtyRemaining){
            totalPrice = totalPrice + custQty;
        }else{
            $("#custQty").val("");
        }        
    }
    $('#b_qty').val(formatCurrency(totalPrice));
}

function replaceZero(val){
    if(val==""){
        return 0;
    }else{
        return val;
    }
}