$(function() {
    item_initialize();
    init_checkout();
});


/**** item functions ******************/
function item_initialize()
{
    item_bindMenuEvents();
    cart_bindEvents();
}

function item_bindMenuEvents()
{
    item_bindItemEvents();
    item_bindVegNonVegSelEvents();
    item_bindCategoryEvents();
}

function item_bindItemEvents()
{
    hide_cart_wait();
    $(".iadd").click(item_handleAdd);
    $(".item_step_cust").click(item_handleCustomize);
    $(".iqty").focus(function(e) { 
        $(e.target).val('');
    });
    $(".iqty").blur(function(e) { 
        var txt = $(e.target).val();
        txt = trim(txt); 
        if(txt.length == 0) { 
            $(e.target).val('1');
        }
    });
}

function item_bindVegNonVegSelEvents()
{
    $("#sel_veg").click(cat_handleSelectVeg);
    $("#sel_nveg").click(cat_handleSelectNonVeg);
}

function item_bindCategoryEvents()
{
    $(".sel_cat").click(cat_handleSelectCat);
}

function item_handleAdd(e)
{
    if( ! hb_hasClass(e.target, 'iadd') ) {
        return false;
    }
    var item_id = hb_getId(e.target, 'iadd_');
    var quantity = $.trim($('#iqty_'+item_id).val());
    cart_add(item_id, quantity);
    return false;
}

function show_item_wait(id)
{
    $iaddstatus = $('#item-add-status-'+id); 
    $iaddstatus.html('Please wait ..'); 
    $iaddstatus.show();
}

function hide_item_wait(id)
{
    $iaddstatus = $('#item-add-status-'+id); 
    $iaddstatus.html('');
    $iaddstatus.hide();
}

function item_pullItemsFromServer(restaurantId, catId)
{
    show_cat_wait();
    $("#normal_item_list").load('/menu/items/'+restaurantId+'/'+catId, item_bindItemEvents);
}

/**** category functions *****/

function show_cat_wait()
{
    $('#cat-wait').show();
}
function hide_cat_wait()
{
    $('#cat-wait').hide();
}
function cat_handleSelectVeg(e)
{
    if( $("#menu_container").hasClass('veg')) { 
        /*nothing to do */ 
        return false;
    }
    $("#menu_container").removeClass('nveg');
    $("#menu_container").addClass('veg');
    $("#m_veg_categories").removeClass('hidden');
    $("#m_nveg_categories").addClass('hidden');
    cat_selectFirstCat('m_veg_categories');
    return false;
}

function cat_handleSelectNonVeg(e)
{
    if( $("#menu_container").hasClass('nveg')) { 
        /*nothing to do */ 
        return;
    }
    $("#menu_container").removeClass('veg');
    $("#menu_container").addClass('nveg');
    $("#m_veg_categories").addClass('hidden');
    $("#m_nveg_categories").removeClass('hidden');
    cat_selectFirstCat('m_nveg_categories');
    return false;
}

function cat_handleSelectCat(e)
{
    if(!$(e.target).hasClass('sel_cat')) { 
        return false;
    }
    var catId = hb_getId(e.target, 'sel_cat_');
    cat_selectCat(catId);
    return false;
}

function cat_selectFirstCat(catContainer)
{
    var firstCat = $('#'+catContainer).find('a.sel_cat:first').get(0);
    var catId = hb_getId(firstCat, 'sel_cat_');
    cat_selectCat(catId);
}

function cat_selectCat(catId)
{
    $('a.sel_cat').removeClass('cat_selected');
    $('a#sel_cat_'+catId).addClass('cat_selected');
    step_handleCancelCustomize();
    item_pullItemsFromServer(g_restaurant_id, catId);
}
/** end menu functions */

/*** checkout form handler ***/

function init_checkout()
{
    position_checkout();
    $("#homedelivery-checkout").jqm({modal:true, overlay:0});
    $("#homedelivery-checkout #checkout-date").datepicker({duration:'', dateFormat:'yy-mm-dd', minDate:new Date()});
    $("#hd-checkout-button").click(handle_hd_checkout);
    $('a#p-u-clear').click(clear_od_contact);
    if(!(G_USER_ADDRESS === false)) { 
        $('a#p-u-primary').click(pop_from_primary);
        $('a#p-u-secondary').click(pop_from_secondary);
    }
    $('#homedelivery-checkout #checkout-asap').click(asap_clicked);
    if(g_menu_referrer.length > 0) { 
        $('p#co-save-order').hide();
    }
}

function asap_clicked(e)
{
    if($(e.target).attr('checked')) {
        disable_time(true);
    }
    else { 
        disable_time(false);
    }
}

function disable_time(val)
{
    $('#homedelivery-checkout #checkout-date').attr('disabled',val); 
    $('#homedelivery-checkout #checkout-hours').attr('disabled',val); 
    $('#homedelivery-checkout #checkout-mins').attr('disabled',val); 
    $('#homedelivery-checkout #checkout-ampm').attr('disabled',val); 
}

function position_checkout()
{
    $pos = $("#l_b_left").position();
    var X1 = $("#l_b_left").width() + $pos.left;
    var X2 = X1 - $("#homedelivery-checkout").width();
    $("#homedelivery-checkout").css({position:"absolute",top:$pos.top, left:X2}); 
}


function init_checkout_display()
{
    populate_checkout();
    $addressbox = $("#homedelivery-checkout .checkout-address");
    $asapfield = $("li#of-asap");
    $("#homedelivery-checkout #hd-checkout-button").attr('disabled',false);
    if(! cart_is_delivery() )
    {
        $addressbox.hide();
        $asapfield.hide();
    }
    else
    {
        $addressbox.show();
        $asapfield.show();
    }
    pop_from_cookie();
    $("#homedelivery-checkout .checkout-success").hide();
    $("#homedelivery-checkout .checkout").show();
    if(typeof _gaq != "undefined")
    {
        _gaq.push(['_trackEvent','order','orderopen']);
    }
}

function show_checkout()
{
    init_checkout_display();
    $("#homedelivery-checkout").jqmShow();
}

function handle_hd_checkout()
{
    var time_ok = validate_checkout_time();
    if(! time_ok)
    {
        show_checkout_final_error('The restaurant does not function at the requested time.'); 
        return false;
    }
    var contact_ok = validate_checkout_contact();
    if(! contact_ok)
    {
        return false; 
    }
    checkout_send_order();
    return false;
}

function checkout_send_order()
{
    $("#homedelivery-checkout #hd-checkout-button").attr('disabled',true);
    var post_data = get_checkout_data();
    $.post('/ajax/hdcheckout/website', 
    post_data , 
    function(data) {
        if(! (data.success) ) {
            show_checkout_final_error(data.error);
            $("#homedelivery-checkout #hd-checkout-button").attr('disabled',false);
        }
        else {
            G_HB_C.set(post_data);
            show_checkout_success(data.order_id);
            if(typeof _gaq != "undefined")
            {
                _gaq.push(['_trackEvent','order','ordercomplete']);
            }
        }
    }, 
    'json'
    );
}

function show_checkout_success(order_id)
{
    $sucbox = $("#homedelivery-checkout .checkout-success"); 
    $delsuc = $("#delsuc"); 
    $picksuc = $("#picksuc");
    $("#homedelivery-checkout .checkout-success .csorderid").text(order_id);
    $("#homedelivery-checkout .checkout").hide();
    $('#tell-order').attr('href','/user/saveorder/'+order_id); 
    if(cart_is_delivery())
    {
        $delsuc.show();
        $picksuc.hide();
    }
    else
    {
        $picksuc.show(); 
        $delsuc.hide();
    }
    $sucbox.show();
    cart_refresh();
    
    ifrm = document.createElement("IFRAME");
    ifrm.setAttribute("src", "http://www.vizury.com/analyze/analyze.php?account_id=VIZ-VRM-1120&param=6000");
    ifrm.style.width = 0+"px";
    ifrm.style.height = 0+"px";
    document.body.appendChild(ifrm); 

//    var data = Object();
 //   $.post('http://www.vizury.com/analyze/analyze.php?account_id=VIZ-VRM-1120&param=6000', 
 //   data , 
 //   function(data) {var vizury='';},'html');
}

function populate_checkout()
{
    var sub_total = $(".cart-sub-total span.val").text();
    var tax = $(".cart-taxes span.val").text();
    var grand_total = $(".cart-grand-total span.val").text();
    var delivery_type = $(".cart-options .delivery-option:checked").val();
    $("#homedelivery-checkout .checkout-delivery-type").text(delivery_type);
    $("#homedelivery-checkout .checkout-subtotal").text(sub_total);
    $("#homedelivery-checkout .checkout-taxes").text(tax);
    $("#homedelivery-checkout .checkout-total").text(grand_total);
}

function validate_checkout_time()
{
    var time_arr = hb_parsetime(g_delivery_timings); 
    if(time_arr == false) 
    {
        return false; 
    }
    var data = get_checkout_data();
    var hours = 0;
    var mins = 0; 
    var ampm = 'AM'; 
    if(data.asap == 'true')
    {
        var d = new Date();
        hours = d.getHours();
        mins = d.getMinutes();
    }
    else
    {
        hours = parseInt(data.hours); 
        mins = parseInt(data.mins); 
        ampm = data.ampm; 
        if(ampm == 'PM') 
        {
            if(hours !=12 ) { 
                hours +=12;
            }
        }
    }
    var mins_tot = hours*60+mins;
    var time_ok = false;
    for(var i=0; i < time_arr.length; i++) 
    {
        if( (mins_tot >= time_arr[i][0]) && (mins_tot <= time_arr[i][1]))
        {
            time_ok = true;
            break;
        }
    }
    return time_ok;
}

function validate_checkout_contact()
{
    var data = get_checkout_data();
    var error_str = '';
    var validate = true;
    if(is_blank(data.name))
    {
        error_str += li_wrap('Name is blank');
        validate = false;
    }
    if( ! is_email(data.email) )
    {
        error_str += li_wrap('Incorrect email format');
        validate = false;
    }
    if( is_blank(data.cellno) && is_blank(data.landno) )
    {
        error_str += li_wrap('We need at least one contact. Either cell or landline');
        validate = false;
    }
    if( ( ! is_blank(data.cellno) ) && ( ! is_cellno(data.cellno)) )
    {
        error_str += li_wrap('Incorrect cellphone number');
        validate = false;
    }
    if( ( ! is_blank(data.landno) ) && ( ! is_landline(data.landno) ) )
    {
        error_str += li_wrap('Landline number should be 8 digits');
        validate = false;
    }
    if( ( ! is_blank(data.landno_ext) ) && ( ! is_landline_ext(data.landno_ext) ) )
    {
        error_str += li_wrap('Incorrect landline extension');
        validate = false;
    }
    if(cart_is_delivery() )
    {
        var data = get_checkout_address(); 
        if( is_blank(data.add1) )
        {
            error_str += li_wrap('Plot/Apt/Door is blank');
            validate = false;
        }
        if( is_blank(data.add2) )
        {
            error_str += li_wrap('Street/locality is blank'); 
            validate = false;
        }
        if( is_blank(data.landmark) )
        {
            error_str += li_wrap('Landmark is blank'); 
            validate = false;
        }
        if( is_blank(data.area) ) 
        {
            error_str += li_wrap('Area is blank');
            validate = false;
        }
    }
    error_str = ul_wrap(error_str);
    if( ! validate ) 
    {
        show_checkout_contact_error(error_str);
        return false;
    }
    return true;
}

function pop_from_cookie()
{
    var data = G_HB_C.get();
    $("#homedelivery-checkout #checkout-name").val(data.name);
    $("#homedelivery-checkout #checkout-email").val(data.email); 
    $("#homedelivery-checkout #checkout-cellno").val(data.cellno);
    $("#homedelivery-checkout #checkout-landline").val(data.landno);
    $("#homedelivery-checkout #checkout-landline-ext").val(data.landno_ext);
    $("#homedelivery-checkout #checkout-address-first").val(data.add1);
    $("#homedelivery-checkout #checkout-address-second").val(data.add2);
    $("#homedelivery-checkout #checkout-address-landmark").val(data.landmark);
    $("#homedelivery-checkout #checkout-address-area").val(data.area);
}

function clear_od_contact()
{
    $("#homedelivery-checkout #checkout-name").val('');
    $("#homedelivery-checkout #checkout-email").val(''); 
    $("#homedelivery-checkout #checkout-cellno").val('');
    $("#homedelivery-checkout #checkout-landline").val('');
    $("#homedelivery-checkout #checkout-landline-ext").val('');
    $("#homedelivery-checkout #checkout-address-first").val('');
    $("#homedelivery-checkout #checkout-address-second").val('');
    $("#homedelivery-checkout #checkout-address-landmark").val('');
    $("#homedelivery-checkout #checkout-address-area").val('');
    return false;
}
function pop_from_primary()
{
    return pop_from_generic();
}
function pop_from_secondary() 
{
    return pop_from_generic(true);
}
function pop_from_generic(getSec)
{
    var data = {}, contact = {}; 
    contact = G_USER_ADDRESS.contact; 
    if(getSec == undefined) { 
        data = G_USER_ADDRESS.primary; 
    }
    else { 
        data = G_USER_ADDRESS.secondary; 
    }
    $("#homedelivery-checkout #checkout-name").val(contact.first_name);
    $("#homedelivery-checkout #checkout-email").val(contact.email); 
    $("#homedelivery-checkout #checkout-cellno").val(contact.cellno);
    var stdcode = $("#homedelivery-checkout #checkout-std-code").val();
    $("#homedelivery-checkout #checkout-landline").val(contact.landno.substring(stdcode.length));
    $("#homedelivery-checkout #checkout-landline-ext").val(contact.landno_ext);
    $("#homedelivery-checkout #checkout-address-first").val(data.line1);
    $("#homedelivery-checkout #checkout-address-second").val(data.line2);
    $("#homedelivery-checkout #checkout-address-landmark").val(data.landmark);
    $("#homedelivery-checkout #checkout-address-area").val(data.area);
    return false;
}
function get_checkout_address()
{
    var data = Object();
    data.add1 = $("#homedelivery-checkout #checkout-address-first").val();
    data.add2 = $("#homedelivery-checkout #checkout-address-second").val();
    data.landmark = $("#homedelivery-checkout #checkout-address-landmark").val();
    data.area = $("#homedelivery-checkout #checkout-address-area").val();
    return data;
}
function get_checkout_data()
{
    var data =  Object(); 
    data.referrer = g_menu_referrer;
    data.name = $("#homedelivery-checkout #checkout-name").val();
    data.email = $("#homedelivery-checkout #checkout-email").val(); 
    data.instructions = $("#homedelivery-checkout .checkout-instructions").val();
    var cellno = $("#homedelivery-checkout #checkout-cellno").val();
    var landno = $("#homedelivery-checkout #checkout-landline").val();
    var stdcode = $("#homedelivery-checkout #checkout-std-code").val();
    var cityid = $("#homedelivery-checkout #checkout-city-id").val();
    data.stdcode = stdcode;
    data.cityid= cityid;
    var landno_ext = $("#homedelivery-checkout #checkout-landline-ext").val();
    if(! is_blank(cellno) )
    {
        data.cellno = cellno; 
    }
    if(! is_blank(landno) ) 
    {
        data.landno = landno; 
    }
    if(! is_blank(landno_ext) )
    {
        data.landno_ext = landno_ext;
    }
    data.delivery_type = $(".cart-options .delivery-option:checked").val();
    if(cart_is_delivery() )
    {
        data.add1 = $("#homedelivery-checkout #checkout-address-first").val();
        data.add2 = $("#homedelivery-checkout #checkout-address-second").val();
        data.landmark = $("#homedelivery-checkout #checkout-address-landmark").val();
        data.area = $("#homedelivery-checkout #checkout-address-area").val();
    }
    data.hours = $("#homedelivery-checkout #checkout-hours").val();
    data.mins = $("#homedelivery-checkout #checkout-mins").val(); 
    data.ampm = $("#homedelivery-checkout #checkout-ampm").val(); 
    data.ddate = $("#homedelivery-checkout #checkout-date").val();
    $asapbox = $("#homedelivery-checkout #checkout-asap");
    data.asap = 'false';
    if ($asapbox.attr('checked') )
    {
        data.asap = 'true';
    }
    return data;
}

function show_checkout_contact_error(str)
{
    $errorbox = $("#homedelivery-checkout .checkout-contact .error");
    $errorbox.html(str);
    $errorbox.show();
    setTimeout(function() { 
        $errorbox.hide();}, 8000);
}

function show_checkout_final_error(str)
{
    $errorbox = $(".checkout-final-error");
    $errorbox.html(str);
    $errorbox.show();
    setTimeout(function() { 
        $errorbox.hide();}, 8000);
}

/**** cart functions ***************/

function cart_prevalidate()
{
    var sub_total = $(".cart-sub-total span.val").text();
    sub_total = sub_total.replace("Rs",'');
    sub_total = sub_total.replace(' ','');
    sub_total = parseInt(sub_total);
    var sub_total_error = sub_total < g_minimum_delivery; 
    var is_delivery = cart_is_delivery();
    if(is_delivery && sub_total_error)
    {
        show_cart_error('Your order amount is less than minimum order amount for delivery. Please add some more items.');
        return false;
    }
    return true;
}

function cart_bindEvents()
{
    $(".cart_item_remove").click(cart_handleRemove);
    $(".cart_item_update").click(cart_handleUpdate);
    $("#cart_order").click(cart_checkout);
}

function cart_is_delivery()
{
    var delivery_type = $(".cart-options .delivery-option:checked").val();
    return ( delivery_type == 'delivery');
}

function show_cart_error(msg)
{
    $(".cart-checkout-error-content").text(msg);
    $(".cart-checkout-error").show();
    setTimeout(function(){ 
        $(".cart-checkout-error").hide();
    }, 8000);
}

function cart_checkout()
{
    var is_cart_ok = cart_prevalidate();
    if(! is_cart_ok)
    {
        return false;
    }
    show_checkout();
    return false;
}

function cart_handleRemove(e)
{
    if( ! hb_hasClass(e.target, 'cart_item_remove') ) { 
        return false;
    }
    var item_id = hb_getId(e.target, 'cart_item_remove_');
    cart_remove(item_id);
    return false;
}

function cart_handleUpdate(e)
{
    if( ! hb_hasClass(e.target, 'cart_item_update') ) { 
        return false; 
    }
    var item_id = hb_getId(e.target, 'cart_item_update_');
    var qt_str = '#cart_item_qty_'+ hb_getJQId(item_id);
    var quantity = $.trim($(qt_str).val());
    cart_update(item_id, quantity);
    return false;
}

function cart_add(item_id, quantity)
{
    show_item_wait(item_id);
    $.post('/ajax/cart/add', 
    {"item_id":item_id, "quantity":quantity, "restaurant_id":g_restaurant_id} , 
    function(data) {
        hide_item_wait(item_id);
        if(! (data.success) ) {
            show_cart_error("error in adding");
        }
        else {
           cart_refresh(); 
        }

    }, 
    'json'
    );
}

function show_cart_wait()
{
    $('#view_cart .cart-wait').show(); 
}

function hide_cart_wait()
{
    $('#view_cart .cart-wait').hide(); 
}

function cart_update(item_id, quantity)
{
    show_cart_wait();
    $.post('/ajax/cart/update', 
    {"item_id":item_id, "quantity":quantity,"restaurant_id":g_restaurant_id}, 
    function(data) { 
        hide_cart_wait();
        if(! (data.success) ) { 
            show_cart_error("error in updating"); 
        }
        else { 
            cart_refresh();
        }
    }, 
    'json'
    );
}

function cart_remove(item_id)
{
    show_cart_wait();
    $.post('/ajax/cart/remove', 
    {"item_id":item_id, "restaurant_id":g_restaurant_id}, 
    function(data) { 
        hide_cart_wait();
        if( ! (data.success) ) { 
            show_cart_error("error in removing"); 
        }
        else { 
            cart_refresh();
        }
    }, 
    'json'
    );
}

function cart_refresh()
{
    $.post('/ajax/cart/view', function(resp) { 
        $('#view_cart').html(resp); 
        cart_bindEvents();
    });
}

/***** step item functions **************/
var g_step_cache = {}; 
var g_step_item_name = '';
var g_step_item_price = 0;
var g_step_item_id = '';
var g_item_id = null;
var g_item_name = null;
var g_item_desc = null;
var g_sd = null;
var g_s = null;
var g_s1 = null;
var g_od = null;
var g_step_container = 'step_item_list';

function step_resetGlobals()
{
    g_step_cache = {}; 
    g_step_item_name = '';
    g_step_item_price = 0;
    g_step_item_id = '';
    g_item_id = null;
    g_item_name = null;
    g_item_desc = null;
    g_sd = null;
    g_s = null;
    g_s1 = null;
    g_od = null;
    g_step_container = 'step_item_list';
}

function item_handleCustomize(e)
{
    if( ! hb_hasClass(e.target, 'item_step_cust') ) { 
        return;
    }
    g_item_id = parseInt(hb_getId(e.target, 'item_step_cust_'));
    g_item_name = $('#item_name_'+g_item_id).text();
    g_item_desc = $('#item_desc_'+g_item_id).text();
    step_pullDataFromServer(g_item_id); 
    return false;
}

function step_handleAdd(e)
{
    var quantity = $.trim($('#cust_item_qty').val());
    var item_id = g_step_item_id;
    cart_add(item_id, quantity);
    return false;
}

function step_handleCancelCustomize()
{
    step_resetGlobals();
    $("#normal_item_list").show();
    $('#'+g_step_container).html('');
    return false;
}

function step_pullDataFromServer(item_id)
{
    show_item_wait(item_id);
    $.post('/ajax/itemsteps/get', 
    {'item_id':item_id} , 
    function(data) {
        hide_item_wait(item_id);
        if(! (data.success) ) {
            show_cart_error("error in getting steps");
            return false;
        }
        else {
            g_sd = data.sd;
            g_s = data.s;
            g_s1 = data.s1; 
            g_od = data.od;
            $("#normal_item_list").hide();
            step_initialize();
        }
    }, 
    'json'
    );
}

function step_initialize()
{
    step_drawInitial(g_sd, g_s1, g_od);
    step_drawChildren(1,g_s, g_od);
    step_disableEmptySteps();
    step_updateItemData();
    step_bindEvents();
}

function step_bindEvents()
{
    $("#cust_cancel").click(step_handleCancelCustomize);
    $("#cust_item_add").click(step_handleAdd);
}

function step_handleOptionChange1(e)
{
    if( ! hb_hasClass(e.target, 'step_select') ) { 
        return false;
    }
    var stepid = parseInt(hb_getId(e.target, 'step')); 
    return step_handleOptionChange(stepid);
}

function step_handleOptionChange(stepid)
{
    if(stepid == 1) { 
        var $step1_option = $('select#step'+stepid).children("option:selected");
        var step1_option = parseInt(hb_getId($step1_option.get(0), 'option'));
        step_drawChildren(step1_option, g_s,g_od);
        step_disableEmptySteps();
    }
    step_updateItemData();
    return false;
}

function step_drawInitial(m_sd, m_s1, m_o)
{
    g_step_cache = {};
    var render_str =''; 
    render_str += '<div class="customize_item_heading">Select options for &quot;'+g_item_name+'&quot;</div>';
    render_str += '<div class="cust_item_options">';
    for(var i in m_sd) { 
        render_str += '<div class="step_row">'
        render_str += '<p class="step_title">'+m_sd[i]+'</p>'+'<div><select id="step'+i+'" class="step_select" onchange="step_handleOptionChange('+i+')">'+"\n";
        if(parseInt(i) == 1) { 
            for(var j in m_s1) {
                var option_id = parseInt(j);
                g_step_cache[option_id] = {};
                g_step_cache[option_id]['price'] = parseInt(m_s1[j].p);
                g_step_cache[option_id]['itemid'] = m_s1[j].is;
                g_step_cache[option_id]['name'] = m_o[j];
                render_str += step_renderOption(j, m_o[j]);
            }
        }
        render_str += '</select></div>';
        render_str += '</div';
    }
    render_str += '</div>';
    var item_img = $('#item_img_'+g_item_id).attr('src');
    if(item_img != undefined){
        item_img = item_img.replace(/\/small\//g,'/big/');
        render_str += '<div class="cust_item_img"><img src="'+item_img+'"/></div>';
    }
    render_str += '<div class="cboth"></div>'; 
    render_str += step_renderQuantitySel();
    $('#'+g_step_container).html(render_str);
}

function step_renderQuantitySel()
{
    var render_str = '';
    render_str += '<div class="cust_item_display">';
    render_str += '<div class="cust_item_qty_title">Quantity</div><input type="text" id="cust_item_qty" value="1"/>';
    render_str += ' <div class="cust_item_price_title">Price: </div><div id="cust_item_price"></div> ';
    render_str += '<a href="#" id="cust_item_add">+</a>';
    render_str += '<div class="cboth"></div>';
    render_str += '</div>';
    render_str += '<div class="cust_cancel_div"><a href="#" id="cust_cancel">Cancel</a></div>';
    return render_str;
}

function step_renderOption(option_id, title) 
{
    var render_str='';
    render_str += '<option id="option'+option_id+'" class="option_select">';
    var onum = parseInt(option_id);
    render_str += title + ' - Rs '+ g_step_cache[onum]['price'];
    render_str += '</option>'+"\n";
    return render_str;
}

function step_updateItemDisplay()
{
    $("#cust_item_price").html('Rs '+g_step_item_price);
}

function step_resetChildren()
{
    var m_sd = g_sd; 
    for(var i in m_sd) { 
        if(parseInt(i) == 1) { 
            continue;
        }
        $('#step'+i).html('');
    }
}

function step_drawChildren(sel_opt, m_s, m_o)
{
    step_resetChildren();
    var data = m_s[sel_opt];
    for(step in data) {
        var $step_cont = $("#step"+step);
        var render_str = "<option>Select an Option</option>"; 
        var options = data[step];
        for(var i=0; i < options.length; i++) { 
            var option_id = options[i].o;
            var price = options[i].p;
            var oitemid = options[i].is;
            var title = m_o[option_id];
            var option_id_num = parseInt(option_id);
            g_step_cache[option_id_num] = {};
            g_step_cache[option_id_num]['price'] = parseInt(price);
            g_step_cache[option_id_num]['itemid'] = oitemid;
            g_step_cache[option_id_num]['name'] = title;
            render_str += step_renderOption(option_id,title);
        }
       $step_cont.html(render_str); 
       $step_cont.children("option:first").attr('selected','selected');
    }
}

function step_disableEmptySteps()
{
    var $steps = $("select.step_select");
    $steps.each(function(){ 
        var $options = $(this).children("option");
        if($options.size() == 0 ) { 
            $(this).attr('disabled', true);
        }
        else { 
            $(this).attr('disabled', false);
        }
    });
}

function step_updateItemData()
{
    if(g_item_id == null) { 
        return false;
    }
    var itemid_str = '';
    var price = 0;
    var name_str ='';
    var $steps = $("select.step_select");
    var not_first = false;
    $steps.each(function() { 
        var step_value = step_getStepData(this);
        if(! step_value['itemid']=='') {
            if(not_first) {
                itemid_str += ':';
            }
            else {
                not_first=true;
            }
            itemid_str+= step_value['itemid'];
        }
        price+=parseInt(step_value['price']);
        if( ! step_value['name']=='') { 
            name_str+='-'+step_value['name'];
        }
    });
    g_step_item_price = price; 
    g_step_item_id = g_item_id+'.'+itemid_str; 
    g_step_item_name = g_item_name + name_str;
    step_updateItemDisplay();
    return true;
}

function step_getStepData(selectDom)
{
    var retval = {};
    var $option = $(selectDom).children("option:selected");
    var option_id_str = $option.attr('id');
    if(option_id_str == undefined || option_id_str=='') { 
        retval['price']=0;
        retval['itemid']='';
        retval['name']='';
        return retval;
    }
    var option_id = parseInt(option_id_str.replace('option',''));
    retval['price'] = g_step_cache[option_id]['price'];
    retval['itemid'] = g_step_cache[option_id]['itemid'];
    retval['name'] = g_step_cache[option_id]['name'];
    return retval;
}

/*** end step item functions ***/
