YAHOO.namespace('vpi');

YAHOO.vpi.calculate = function()
{
    if(YAHOO.util.Dom.get('pcbsize_x').value!='' && YAHOO.util.Dom.get('pcbsize_y').value!='')
    {
        var formObject = document.getElementById('estimator_form');
        YAHOO.util.Connect.setForm(formObject);
        var callback =
        {
          success: function(o) { 
                var analysis = eval( "(" + o.responseText + ")" );
                
                YAHOO.util.Dom.get('total_components').innerHTML = analysis.components;
                YAHOO.util.Dom.get('setup_quick').innerHTML = analysis.setup_fee_quick;
                YAHOO.util.Dom.get('setup_discount').innerHTML = analysis.setup_fee_discount;
                YAHOO.util.Dom.get('drawings_quick').innerHTML = analysis.drawings_cost_quick;
                YAHOO.util.Dom.get('drawings_discount').innerHTML = analysis.drawings_cost_discount;
                YAHOO.util.Dom.get('total_pins').innerHTML = analysis.pins;
                YAHOO.util.Dom.get('layout_cost_quick').innerHTML = analysis.layout_cost_quick;
                YAHOO.util.Dom.get('layout_cost_discount').innerHTML = analysis.layout_cost_discount;
                YAHOO.util.Dom.get('total_area').innerHTML = analysis.total_area;
                YAHOO.util.Dom.get('component_density').innerHTML = analysis.component_density;
                YAHOO.util.Dom.get('density_cost_discount').innerHTML = analysis.component_density_cost_discount;
                YAHOO.util.Dom.get('density_cost_quick').innerHTML = analysis.component_density_cost_quick;
                YAHOO.util.Dom.get('netlist_discount').innerHTML = analysis.netlist_discount_discount;
                YAHOO.util.Dom.get('netlist_quick').innerHTML = analysis.netlist_discount_quick;
                YAHOO.util.Dom.get('package_discount').innerHTML = analysis.package_discount_discount;
                YAHOO.util.Dom.get('package_quick').innerHTML = analysis.package_discount_quick;
                YAHOO.util.Dom.get('duplication_discount').innerHTML = analysis.duplication_discount_discount;
                YAHOO.util.Dom.get('duplication_quick').innerHTML = analysis.duplication_discount_quick;
                YAHOO.util.Dom.get('routing_discount').innerHTML = analysis.autorouting_discount_discount;
                YAHOO.util.Dom.get('routing_quick').innerHTML = analysis.autorouting_discount_quick;
                YAHOO.util.Dom.get('total_quick').innerHTML = analysis.total_quick;
                YAHOO.util.Dom.get('total_discount').innerHTML = analysis.total_discount;
                YAHOO.util.Dom.get('completion_discount').innerHTML = analysis.completion_discount;
                YAHOO.util.Dom.get('completion_quick').innerHTML = analysis.completion_quick;
            },
          failure: function(o) {
                
            },
          timeout: 5000
        }
        
        var cObj = YAHOO.util.Connect.asyncRequest('GET', 'http://www.vpipcb.com/live_estimate.php', callback);
    }
}

YAHOO.vpi.init = function()
{
    YAHOO.util.Dom.get('Company').focus();
}

YAHOO.vpi.toggleHelp = function()
{
    var elements = YAHOO.util.Dom.getElementsByClassName('help','p');
    for(var i=0; i<elements.length; i++)
    {
        if(YAHOO.util.Dom.hasClass(elements[i], 'shown'))
        {
            YAHOO.util.Dom.removeClass(elements[i], 'shown');
        }
        else
        {
            YAHOO.util.Dom.addClass(elements[i], 'shown');
        }
    }
}

YAHOO.vpi.checkForm = function(e)
{
    YAHOO.util.Event.stopEvent(e);
    
    var elements = YAHOO.util.Dom.getElementsByClassName('required','input');
    for(var i=0; i<elements.length; i++)
    {
        if(elements[i].value.length == 0)
        {
            alert("Please make sure you fill in all required fields.");
            return false;
        }
    }
    
    var pcbsize_x = 0;
    var pcbsize_y = 0;
    var cutoutsize_x = 0;
    var cutoutsize_y = 0;
    var additionalsize_x = 0;
    var additionalsize_y = 0;
    
    var tmp = 0;
    
    tmp = parseFloat(YAHOO.util.Dom.get('pcbsize_x').value);
    if(!isNaN(tmp))
    {
        pcbsize_x = tmp;
    }
    tmp = parseFloat(YAHOO.util.Dom.get('pcbsize_y').value);
    if(!isNaN(tmp))
    {
        pcbsize_y = tmp;
    }
    tmp = parseFloat(YAHOO.util.Dom.get('cutoutsize_x').value);
    if(!isNaN(tmp))
    {
        cutoutsize_x = tmp;
    }
    tmp = parseFloat(YAHOO.util.Dom.get('cutoutsize_y').value);
    if(!isNaN(tmp))
    {
        cutoutsize_y = tmp;
    }
    tmp = parseFloat(YAHOO.util.Dom.get('additionalsize_x').value);
    if(!isNaN(tmp))
    {
        additionalsize_x = tmp;
    }
    tmp = parseFloat(YAHOO.util.Dom.get('additionalsize_y').value);
    if(!isNaN(tmp))
    {
        additionalsize_y = tmp;
    }
    
    var total_area = (pcbsize_x * pcbsize_y) - (cutoutsize_x * cutoutsize_y) - (additionalsize_x * additionalsize_y);
    if(total_area < 0)
    {
        alert("The area can't be a negative number- please check your work.");
        return false;
    }
    
    this.submit();
}

YAHOO.util.Event.on('other_hole_components', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('other_components', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('ics_hole_components', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('ics_components', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('discretes_hole_components', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('discretes_components', 'change', YAHOO.vpi.calculate);

YAHOO.util.Event.on('other_hole_pins', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('other_pins', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('ics_hole_pins', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('ics_pins', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('discretes_hole_pins', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('discretes_pins', 'change', YAHOO.vpi.calculate);

YAHOO.util.Event.on('CompatibleNetlist', 'click', YAHOO.vpi.calculate);
YAHOO.util.Event.on('NetlistPCB', 'click', YAHOO.vpi.calculate);
YAHOO.util.Event.on('DuplicateCircuits', 'click', YAHOO.vpi.calculate);
YAHOO.util.Event.on('AutoRouting', 'click', YAHOO.vpi.calculate);

YAHOO.util.Event.on('pcbsize_x', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('pcbsize_y', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('cutoutsize_x', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('cutoutsize_y', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('additionalsize_x', 'change', YAHOO.vpi.calculate);
YAHOO.util.Event.on('additionalsize_y', 'change', YAHOO.vpi.calculate);

YAHOO.util.Event.on('help_btn', 'click', YAHOO.vpi.toggleHelp);
YAHOO.util.Event.on('estimator_form', 'submit', YAHOO.vpi.checkForm);
YAHOO.util.Event.onDOMReady(YAHOO.vpi.init);
