//<![CDATA[
var last_view       = "";
var initial_load    = true;

var sq_displayFilterRadios;
var sq_connectionFilterRadios;
var sq_messageDiv;

var sq_gratsDiv;
var sq_numberFormLineRadios;
var sq_notAvailDivs;
var sq_planRadios;

var elementsToShow	= [ ];
var selected_plan;

var last_plantype   = "";
var last_connection = "";
var last_service    = "";

// This function only runs once and builds lists of elements for later manipulation.
//		"cpu? omnomnom!"
function initVars()
{
	// toggle phone line
	sq_displayFilterRadios    = $$('#displayFilters input[name="displayFilter"]');
	sq_connectionFilterRadios = $$('#displayFilters input[name="connectionTypeFilter"]');
	sq_serviceFilterRadios    = $$('#displayFilters input[name="serviceTypeFilter"]');
	sq_numberFormLineRadios   = $$('#sq_number_form input[name="lineType"]');
	sq_filterRadios           = $$('#displayFilters input[type="radio"]');
	sq_toggleElements         = $$('div.sq_toggle', 'span.sq_toggle');
	sq_notAvailDivs           = $$('#displayFilters span.sq_not_available');
	sq_messageDiv             = $('message');

	sq_gratsDiv               = $('sq_grats');
	sq_planRadios             = $$('input[name=planChoice]');
}

function updateDisplay(flush_selection)
{
    if (flush_selection == null)
        flush_selection = true;
    
    var contract_period;
    var plan_monthly_cost;
    var plan_setup_cost;
    var total_cost;

	var show_warning    = false;

	var plan            = "";
	var connection      = "";
	var service         = "";
	var contract        = "";

	elementsToShow      = [];

    var flush           = false;

	if (sq_filterRadios)
	{
		sq_toggleElements.invoke('addClassName', 'sq_hidden');

		sq_filterRadios.each(
			function(item)
			{
				if (item.checked)
				{
					switch(item.name)
					{
						case 'displayFilter':
							if (item.value == "sq_all")
							{
								sq_notAvailDivs.invoke('removeClassName', 'sq_hidden');
								if ( (item.value != last_view) && !initial_load )
									show_warning = true;
							} else {
								sq_notAvailDivs.invoke('addClassName', 'sq_hidden');
							}
							last_view = item.value;
						break;

						case 'connectionTypeFilter':
							connection = item.value;
							if (connection != last_connection)
							{
							    last_connection = connection;
							    flush = true;
							}
						break;

						case 'serviceTypeFilter':
							service = item.value;
							if (service != last_service)
							{
							    last_service = service;
							    flush = true;
							}
						break;

						case 'planTypeFilter':
							plantype = item.value;
							if (plantype != last_plantype)
							{
							    last_plantype = plantype
							    flush = true;
							}
						break;

						case 'contractType':
							contract = item.value;
						break;
					}
				}
			}
		);

		if (connection == "ADSL1")
			service = connection;
		
		$$('#sq_' + plantype + '-' + connection + '-' + service + ' span.sq_contract').invoke('addClassName', 'sq_hidden');
		$$('#sq_' + plantype + '-' + connection + '-' + service + ' span.' + contract).invoke('removeClassName', 'sq_hidden');

		elementsToShow.push('sq_' + plantype);
		elementsToShow.push('sq_' + plantype + '-' + connection);
		elementsToShow.push('sq_' + plantype + '-' + connection + '-' + service);
		elementsToShow.push('serviceTypeFilter_' + connection);
		elementsToShow.push('sq_' + plantype + '_Desc');
		
		elementsToShow.each(
			function(element)
			{
				var ele = $(element);
				if (ele) { ele.removeClassName('sq_hidden'); }
			}
		);

        if (flush_selection && flush)
        {
            sq_planRadios.each(
                function(element)
                {
                    element.checked = false;
                }
            );
            selected_plan = 0;
            $('mini_div').fade({duration:0.5});
            $('mini_div_placeholder').appear({duration:0.5});
        }

		if (show_warning)
			alert("Please note: By selecting to view 'all' plans, there may be services shown that are not available on your line. Take note of the availability column to aid your decision.");

        // mini-summary-display
        if (selected_plan != null && selected_plan != 0)
        {
            var bundled = (service == "Bundled");
    
            if (bundled)
                $('mini_bundled').innerHTML = "&nbsp;+ Monthly Telephone Service ($29)";
            else
                $('mini_bundled').innerHTML = "";
    
            contract_period   = Number(contract.replace("sq_", ""));
            plan_monthly_cost = Number(pc[selected_plan]);
            plan_setup_cost   = Number(sc[selected_plan][contract.replace("sq_", "")]);
            total_cost        = Number(( (contract_period>0?contract_period:1) * (plan_monthly_cost + (bundled?29:0)) ) + plan_setup_cost);
            
            $('mini_plan').innerHTML = $("plan_"+selected_plan+"_name").innerHTML;
            $('mini_contract_period').innerHTML = contract_period + " Months";
            $('mini_monthly').innerHTML = "$" + plan_monthly_cost;
            $('mini_setupcost').innerHTML = "$" + plan_setup_cost;
            $('mini_totalcost').innerHTML = "$" + total_cost;
            $('mini_div_placeholder').fade({duration:0.5});
            $('mini_div').appear({duration:0.5});
        }

		initial_load = false;
	}
}

function selectPlan()
{
    // undesirable, but no real other way..
    for(i=0; i < sq_planRadios.length; i++)
        if (sq_planRadios[i].checked == true)
            selected_plan = sq_planRadios[i].value;

    updateDisplay(false);
}

function togglePhoneLine()
{
	if (sq_numberFormLineRadios[1].checked)
	{
		// new phone line
		sq_displayFilterRadios.invoke('disable');
		sq_messageDiv.addClassName('sq_warning');
		sq_messageDiv.innerHTML = "Please Note: There is no gurantee that you will be able to receive the services listed below on a newly provisioned line.";
		sq_displayFilterRadios[1].checked = true;
		sq_displayFilterRadios[0].disabled = true;
		sq_connectionFilterRadios[1].checked = true;
		sq_connectionFilterRadios[0].disabled = true;
		if (sq_serviceFilterRadios[0].checked)
			sq_serviceFilterRadios[1].checked = true;
		sq_serviceFilterRadios[0].disabled = true;
        initial_load = true;
	} else if (sq_numberFormLineRadios[0].checked) {
		// existing phone line
		sq_displayFilterRadios.invoke('enable');
		sq_messageDiv.addClassName('sq_warning');
		sq_messageDiv.innerHTML = "Please enter your phone number and click 'check' to determine which services are available on your line.";
		sq_connectionFilterRadios[0].disabled = false;
		sq_serviceFilterRadios[0].disabled = false;
		if ( sq_gratsDiv )
		{
			sq_displayFilterRadios[1].disabled = false;
			if ( (sq_displayFilterRadios[0].checked) == true)
			{
				if (sq_connectionFilterRadios[1].parentNode.getAttribute('class') == "sq_not_available")
					sq_connectionFilterRadios[0].checked = true;
					
				if ( sq_serviceFilterRadios[1].parentNode.getAttribute('class') == "sq_not_available" && sq_serviceFilterRadios[2].parentNode.getAttribute('class') == "sq_not_available" )
					sq_serviceFilterRadios[0].checked = true;
			}
		} else {
			sq_displayFilterRadios[1].checked = true;
			sq_displayFilterRadios[0].disabled = true;
		}
	}
	updateDisplay(true);
}

function focusExisting()
{
	$$('#sq_number_box input[type="radio"][value="existing"]')[0].checked = true;
}

function autotab(event)
{
	// partially based on fragments of Autotab (http://www.lousyllama.com/sandbox/jquery-autotab)
	var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];
	var keystring = keys.toString();
	var key = event.keyCode;
	if ( (keystring.indexOf(key) == -1) && ($F('area').length == 2) )
		$('number').activate();
}

function checkBackspace(event)
{
	var key = event.keyCode;
	if( (key == 8) && ($F('number').length == 0) )
		$('area').activate();
}

function setCheckBtn(value)
{
	if(value == "enable")
	{
		document.getElementById('checkBtn').removeAttribute("disabled");
	}
	else
	{
		document.getElementById('checkBtn').setAttribute("disabled","disabled");
	}
}

document.observe("dom:loaded", function()
{
	initVars();

	sq_planRadios.each( function(item){ item.observe('click', selectPlan); } );
	var sq_number_form = $$('#sq_number_box input[type="radio"]', '#displayFilters input[type="radio"]');
	if (sq_number_form)
	{
		sq_number_form.each( function(item){ item.observe('click', togglePhoneLine); } );
		togglePhoneLine();
	}
	var sq_area = $('area');
	if (sq_area)
	{
		sq_area.observe('click', focusExisting);
		sq_area.observe('keyup', autotab);
	}
	var sq_number = $('number');
	if (sq_number)
	{
		sq_number.observe('click', focusExisting);
		sq_number.observe('keyup', checkBackspace);
	}
});

function toggleCheckAvailabilityBtn()
{
	var theBtn = document.getElementById("check-availability-button");
	if(document.getElementById("lineType_New").checked == true)
	{
		//alert(theBtn.value + " DISABLED");
		theBtn.disabled = true;
	}
	else
	{
		//alert(theBtn.value + " ENABLED");
		theBtn.disabled = false;
	}
}

function validateNumber()
{
	var area = document.getElementById("area");
	var number = document.getElementById("number");
	var isValid = false;
	
	if(area.value == "")
	{
		alert("Please enter your area code");
		area.style.backgroundColor = "#FFFFA3";
	}
	else if(area.value.length != 2)
	{
		alert("Please enter your area code");
		area.style.backgroundColor = "#FFFFA3";
	}
	else if(number.value == "")
	{
		alert("Please enter your phone number");
		number.style.backgroundColor = "#FFFFA3";
	}
	else if (number.value.length != 8)
	{
		alert("Please enter your phone number");
		number.style.backgroundColor = "#FFFFA3";
	}
	else
	{
		isValid = true;
	}
	
	return isValid;
}

function isInt(x) 
{ 
   var y=parseInt(x); 
   if (isNaN(y)) 
   return false; 
   
   return true; 
}

function checkNumber(inTextbox)
{
	for(var i=0; i < inTextbox.value.length; i++)
	{
		if(!isInt(inTextbox.value.charAt(i)))
		{
			inTextbox.value = inTextbox.value.substring(0,inTextbox.value.length-1);
		}
	}

}

function checkTelephoneNumber()
{
    var rad_existing = $("lineType_Existing");
    var rad_new = $("lineType_New");
 
    if(rad_existing.checked == true)
    {
        var area = $("area");
        var number = $("number");
        var notify_box = $("sq_grats");

        if(!notify_box || notify_box.innerHTML == "")
        {
            alert("Please enter your existing Telephone number");
            area.style.backgroundColor = "#FFFFA3";
            number.style.backgroundColor = "#FFFFA3";
        }
        else
        {
            $('continueSignup').value = '1'; 
            $('sq_number_form').submit();  
        }

    }
    else if(rad_new.checked == true)
    {
        $('continueSignup').value = '1'; 
        $('sq_number_form').submit();   
    }
    
}
//]]>