var modal_green_cart = new modal_block('green_cart');
modal_green_cart.set_show_hook(modal_show);

var modal_alert_box = new modal_block('modal_alert');
modal_alert_box.blocker_close_on_click = false;
modal_alert_box.blocker_opacity = 0;
modal_alert_box.blocker_zindex = 10000;
modal_alert_box.set_show_hook(select_tags_hide);
modal_alert_box.set_hide_hook(select_tags_show);

var modal_sending = new modal_block('modal_sending');
modal_sending.blocker_close_on_click = false;
modal_sending.blocker_opacity = 0;
modal_sending.blocker_zindex = 10000;
modal_sending.set_show_hook(select_tags_hide);
modal_sending.set_hide_hook(select_tags_show);

//Event.observe(window, 'load', function() { modal_green_cart.show(); green_cart_action_next(); });

function text_area_limit(eid, limit, counter_eid)
{
	if($(eid).value.length > limit)
	{
		$(eid).value = $(eid).value.substring(0, limit);
        $(counter_eid).value = 0;
	}
	else
	{
		$(counter_eid).value = limit - $(eid).value.length;
	}

	return true;
}

function select_tags_hide()
{
	var i;
	var objects = document.getElementsByTagName('select');
	
	for(i = 0; i < objects.length; i++)
	{
		objects[i].style.visibility = 'hidden';
	}
	
	return true;
}

function select_tags_show()
{
	var i;
	var objects = document.getElementsByTagName('select');
	
	for(i = 0; i < objects.length; i++)
	{
		objects[i].style.visibility = 'visible';
	}
	
	return true;
}

function modal_show()
{
    green_cart_form_change();
	//select_tags_hide();

    return true;
}

function modal_hide()
{
	//return(select_tags_show());

    return true;
}

function modal_alert(message)
{
	$('modal_alert_message').innerHTML = message;
	modal_alert_box.show();
	$('modal_alert_button').focus();
	return true;
}

function ajax_fail()
{
	modal_sending.hide();
	modal_alert('Ajax request failed!');

	return true;
}

function ajax_request(params)
{
	//Cache breaker
	params.r = Math.floor(Math.random()*65535);
	
	new Ajax.Request('../green_cart/green_cart_ajax.php', 
	{
		method: 'post',
		onSuccess: function(transport) { ajax_success(transport) },
		onFailure: function() { ajax_fail() },
		evalJS: false,
		evalJSON: false,
		sanitizeJSON: false,
		parameters: params
	});

	return true;
}

function ajax_success(transport)
{
	var i;
	var f;
	var response = transport.responseText;
	var json;
	var ticket;
	var error;
	var message;

	//Hide the loading animation.
	modal_sending.hide();
	
	if(json = response.evalJSON(false))
	{
		if(json && json.code == '0')
		{
			if(json.mode == 'green_cart_submit')
			{
				if(json.request_code == 0)
				{
                    green_cart_form_reset();
                    green_cart_form_change();
                    modal_green_cart.hide();
					modal_alert('<div style="text-align: center">Your request has been sent!<br><br>Thank you for your submission.<br><br></div>');
				}
				else
				{
					error = '<table border="0" cellpadding="5" cellspacing="0"><tr><td style="vertical-align: middle">';
					error += "<img style=\"float: left\" src=\"green_cart/images/error_icon2.png\" alt=\"Error!\">\n";
					error += '</td><td style="padding-left: 10px">';
					error += "<b>There was a problem with your submission!</b><br>\n";
					for(i = 0; i < json.request_error_count; i++)
					{
						error += "<br>\n- "+json.request_error_strings[i];
					}
					error += "</td></tr></table>";
					
					modal_alert(error);
				}
			}
			else
			{
				modal_alert('Invalid mode specified in Ajax response!');
			}
		}
		else
		{
			if(!json.error_count)
			{
				modal_alert("Failed to parse JSON data!");
			}
			else
			{
				error = "Critical error encountered while requesting data from server!";
				error += "<br>\n<br>\nError count: "+json.error_count;
				
				for(i = 0; i < json.error_count; i++)
				{
					error += "<br>\nError "+(i+1)+": "+json.error_strings[i];
				}

				modal_alert(error);
			}
		}
	}
	else
	{
		modal_alert('Ajax request returned invalid data!');
	}
	return true;
}

function green_cart_form_reset()
{
	var f = $('green_cart_form');

    $('green_cart_form').reset();

    for(i = 0; i < f.containers_available.value; i++)
    {
        f['order_'+i].value = '0';
    }

    green_cart_action_back();
    green_cart_form_change();
    
    return true;   
}

function green_cart_submit()
{
    var i;
	var f = $('green_cart_form');
	var params = Object();
	params['mode'] = 'green_cart_submit';

	params['first_name'] = f.first_name.value;
	params['last_name'] = f.last_name.value;
	//params['company_id'] = f.company_id.value;
	params['account_number'] = f.account_number.value;
	params['phone'] = f.phone.value;
	params['phone_ext'] = f.phone_ext.value;
	params['email'] = f.email.value;
	params['address_1'] = f.address_1.value;
	params['address_2'] = f.address_2.value;
	params['city'] = f.city.value;
	params['state'] = f.state.value;
	//params['zipcode'] = f.zipcode.value;
	params['notes'] = f.notes.value;

    params['containers_available'] = f.containers_available.value;
    params['container_count'] = 0;

    for(i = 0; i < f.containers_available.value; i++)
    {
        if(f['order_'+i].value == '1')
        {
            c = params['container_count']++;
            params['container_'+c+'_size'] = f['container_'+i+'_size'].value;
            params['container_'+c+'_type'] = f['container_'+i+'_type'].value;
        }
    }

	modal_sending.show();
	ajax_request(params);

	return true;
}

function green_cart_form_change()
{
    green_cart_button_update();
    green_cart_selector_update();

    return true;
}

function green_cart_button_update()
{
    var i;
	var f = $('green_cart_form');
    var selected = 0;

    for(i = 0; i < f.containers_available.value; i++)
    {
        if(f['order_'+i].value == 1)
        {
            selected++;
        }
    }

    if(selected > 0)
    {
        $('green_cart_button_next').enable();
        $('green_cart_button_next').addClassName('modal_button');
        $('green_cart_button_next').removeClassName('modal_button_disabled');
    }
    else
    {
        $('green_cart_button_next').disable();
        $('green_cart_button_next').removeClassName('modal_button');
        $('green_cart_button_next').addClassName('modal_button_disabled');
    }

    return true;
}


function green_cart_action_back()
{
    $('green_cart_selector_wrapper').show();
    $('green_cart_form_wrapper').hide();
    $('green_cart_button_back').hide();
    $('green_cart_button_next').show();
    $('green_cart_button_submit').hide();

    return true;
}

function green_cart_action_next()
{
    $('green_cart_selector_wrapper').hide();
    $('green_cart_form_wrapper').show();
    $('green_cart_button_back').show();
    $('green_cart_button_next').hide();
    $('green_cart_button_submit').show();

    return true;
}

function green_cart_selector_update()
{
   	var f = $('green_cart_form');
    var c;

    for(i = 0; i < f.containers_available.value; i++)
    {
        c = $("green_cart_selector_checkbox_"+i);

        if(f['order_'+i].value == 1)
        {
            c.src = '/green_cart/images/checkbox_checked.gif';
        }
        else
        {
            c.src = '/green_cart/images/checkbox_unchecked.gif';
        }
    }

    return true;
}

function green_cart_selector_toggle(id)
{
    var f = $('green_cart_form')['order_'+id];

    f.value =  (f.value == '0') ? f.value = '1' : f.value = '0';

    green_cart_form_change();

    return true;
}

