window.onload = init;

String.prototype.trim=function(){
return this.replace(/^\s*|\s*$/g,'');
}

function init()
{
    if (document.getElementsByTagName('A'))
    {
        a_tags = document.getElementsByTagName('A');
        for (loop=0; loop<a_tags.length; loop++)
        {
            if (a_tags[loop].className.indexOf('external') != -1) { a_tags[loop].target = '_blank'; }
        }
    }
    if ($('product_application_make')) {
        Event.observe('product_application_make', 'focus', clearFields);
        Event.observe('product_application_model', 'focus', clearFields);
        Event.observe('product_application_series', 'focus', clearFields);
    }
    if ($('product_xref_part')) {
        Event.observe('product_xref_part', 'focus', clearFields);
    }
    if ($('product_search_part')) {
        Event.observe('product_search_part', 'focus', clearFields);
    }
}

function insertFlash(div, w, h, url)
{
    if (document.all) {
        tags = ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + 
               ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"';
    } else {
        tags = '';
    }
    document.getElementById(div).innerHTML = '<object ' + tags +
                                             ' width="' + w + '"' + 
                                             ' height="' + h +'"' + 
                                             ' data="' + url + '">' + 
                                             '<param name="movie" value=' + url + '>' +
                                             '<param name="quality" value="best" />' +
                                             '<param name="scale" value="exactfit" />' +
                                             '<param name="wmode" value="transparent" />' +
                                             '<param name="movie" value="' + url + '" />' +
                                             '<param name="width" value="' + w + '" />' +
                                             '<param name="height" value="' + h + '" />' +
                                             '</object>';
}

function clearFields(obj)
{
    target = (obj.target) ? obj.target : obj.srcElement;
    switch(target.id) {
        case 'product_application_make':
            flag = (target.value == 'Enter make');
            break;

        case 'product_application_model':
            flag = (target.value == 'Enter model');
            break;

        case 'product_search_part':
        case 'product_xref_part':
            flag = (target.value == 'Part');
            break;
    }
    if (flag) {
        target.value = '';
    }
    Event.stopObserving(target.id, 'focus', clearFields);
}

function isSelected(element)
{
    return ($(element) && selectValue(element));
}

function selectValue(element)
{
    return ($(element)) ? $(element).options[$(element).selectedIndex].value : '';
}

function panelOn(panel)
{
    if ($(panel) && !Element.visible(panel)) {
        Effect.BlindDown(panel, {duration:0.25, queue:'end'});
    }
}

function panelOff(panel, el)
{
    if ($(panel)) {
        if (el) {
            $(el).selectedIndex = 0;
        }
        Effect.BlindUp(panel, {duration:0.15, queue:'end', afterFinish:function(element)
            {
                element.innerHTML = '&nbsp;';
            }});
    }
}

function checkDimensions(lvl)
{
    switch(lvl) {
        case 3:
            Effect.BlindUp($('product_dimensions_panel_measurements'), {duration:0.07, queue:'end', afterFinish:function()
                {
                    var req3 = new Ajax.Request('/ajax/hasdimen',
                                        {parameters:'type=' + selectValue('product_dimensions_category') +
                                                    '&sales=' + selectValue('product_dimensions_sales') +
                                                    '&style=' + selectValue('product_dimensions_style'),
                                         onSuccess:populateStyle,
                                         onFailure:populateStyle});
                }});
            break;

        case 2:
            Effect.BlindUp($('product_dimensions_panel_measurements'), {duration:0.07, queue:'end', afterFinish:function()
                {
                    $('product_dimensions_style').selectedIndex = 0;
                    Effect.BlindUp($('product_dimensions_panel_style'), {duration:0.07, queue:'end', afterFinish:function()
                    {
                        var req2 = new Ajax.Request('/ajax/hasstyle',
                                        {parameters:'type=' + selectValue('product_dimensions_category') +
                                                    '&sales=' + selectValue('product_dimensions_sales'),
                                         onSuccess:populateSales,
                                         onFailure:populateSales});
                    }})
                }});
            break;

        case 1:
            Effect.BlindUp($('product_dimensions_panel_measurements'), {duration:0.07, queue:'end', afterFinish:function()
                {
                    $('product_dimensions_style').selectedIndex = 0;
                    Effect.BlindUp($('product_dimensions_panel_style'), {duration:0.07, queue:'end', afterFinish:function()
                    {
                        $('product_dimensions_sales').selectedIndex = 0;
                        Effect.BlindUp($('product_dimensions_panel_sales'), {duration:0.07, queue:'end', afterFinish:function()
                        {
                            var req1 = new Ajax.Request('/ajax/hassales',
                                        {parameters:'type=' + selectValue('product_dimensions_category'),
                                         onSuccess:populateCategory,
                                         onFailure:populateCategory});
                        }})
                    }})
                }});
            break;
    }
    return false;
}

function checkMeasurements()
{
    var req = new Ajax.Request('/ajax/hasdimen',
                               {parameters:'type=' + selectValue('product_dimensions_category') +
                                           '&sales=' + selectValue('product_dimensions_sales') +
                                           '&style=' + selectValue('product_dimensions_style'),
                                onSuccess:populateDimensions,
                                onFailure:populateDimensions});
}

function populateCategory(r)
{
    if (r.responseText.trim()) {
        var req = new Ajax.Updater('product_dimensions_panel_sales',
                                   '/ajax/fetchsalesoptions',
                                   {parameters:'type='+r.responseText.trim(),
                                    onSuccess:function () {
                                        panelOn('product_dimensions_panel_sales');
                                        checkMeasurements();
                                    }});
    } else if (isSelected('product_dimensions_category')) {
        checkMeasurements();
    }
}

function populateSales(r)
{
    if (r.responseText.trim()) {
        var req = new Ajax.Updater('product_dimensions_panel_style',
                                   '/ajax/fetchstyleoptions',
                                   {parameters:'type='+selectValue('product_dimensions_category')+'&sales='+r.responseText.trim(),
                                    onSuccess:function () {
                                        panelOn('product_dimensions_panel_style');
                                        checkMeasurements();
                                    }});
    } else if (isSelected('product_dimensions_sales')) {
        checkMeasurements();
    }
}

function populateStyle(r)
{
    if (isSelected('product_dimensions_style')) {
        checkMeasurements();
    }
}

function populateDimensions(r)
{
    if (r.responseText.trim()) {
        var req = new Ajax.Updater('product_dimensions_panel_measurements',
                                   '/ajax/fetchmeasurementsoptions',
                                   {parameters:'type=' + selectValue('product_dimensions_category') +
                                               '&sales=' + selectValue('product_dimensions_sales') +
                                               '&style=' + selectValue('product_dimensions_style'),
                                    onSuccess:panelOn('product_dimensions_panel_measurements')});
    }
}

function validateDimensions()
{
    alert('aa');
    return true;
}
