/******************************************
Name:			mapfinder.js
Description:	Validation and additional
				functionality for map finder
				form
Date:			13/06/2006
Author:			James Condliffe
******************************************/

// Setup on page load
addLoadEvent(mapfinderSetup)

// Fieldsets
var fieldsets;

function mapfinderSetup()
{
	// Grab the form
	var form = document.getElementById("mapfinder");
	
	// Validation
	form.onsubmit=validateMapFinder;
	
	// Add event handlers to fieldsets
	fieldsets = getElementsByClassName(form,"fieldset","line");	
	for (var i=0; i<fieldsets.length; i++)
	    if (getElementsByClassName(fieldsets[i],"input","radiobutton")[0])
	    {
	        //fieldsets[i].addEventListener("click",lineChange,true);
	        fieldsets[i].onclick = lineChange;
	    }
	        
	// Click the first fieldset
	fieldsets[0].onclick();
	
	// Add event handlers to text boxes for submitting the form
	var inputs = getElementsByClassName(form,"input","textfield");
	for (var i=0; i<inputs.length; i++)
	{
	    inputs[i].onkeypress = checkEnter;
	    inputs[i].onclick = function() {this.focus();};
	}
}

function validateMapFinder()
{    
    // Check the fields
    var fields = getElementsByClassName(this,"input","textfield");
	for ( var i=0; i<fields.length; i++)
	{
		if (isBlank(fields[i].value) && fields[i].disabled == false)
		{
			alert("Please ensure you have completed the search fields correctly");
			return false;
		}
	}
	
	// Check the checkboxes
	var checkboxes = getElementsByClassName(this,"input","checkbox");
	var checkboxesvalid;

	for(var i=0; i<checkboxes.length; i++)
	{
	    checkboxesvalid = checkboxes[i].checked;
	    
	    if(checkboxesvalid)
	        break;
    }
    
    if(!checkboxesvalid)
    {
        alert("Please choose at least one product type");
	    return false;
    }
	
	// Return if we're all good
	return true;
}

function lineChange()
{    
    // Disable all the fieldsets except the selected one
    for (var i=0; i<fieldsets.length; i++)
        if(this != fieldsets[i])
            disableFieldset(fieldsets[i]);
        
    // Enable the correct fieldset
    enableFieldset(this);
}

function enableFieldset(fs)
{    
    // Click the radio button
    var radio = getElementsByClassName(fs,"input","radiobutton")[0];
    radio.checked = true;
    
    // Highlight the fieldset
    fs.style.backgroundColor = "#EBEBE4";
    
    // Enable the fields
    var inputs = getElementsByClassName(fs,"input","textfield");
    for (var i=0; i<inputs.length; i++)
    {
        inputs[i].disabled = false;
        inputs[i].style.backgroundColor = "#FFFFFF";
    }
}

function disableFieldset(fs)
{    
    // Highlight the fieldset
    fs.style.backgroundColor = "#FFFFFF";
    
    // Disable the fields
    var inputs = getElementsByClassName(fs,"input","textfield");
    for (var i=0; i<inputs.length; i++)
    {
        inputs[i].disabled = true;
        inputs[i].style.backgroundColor = "#EBEBE4";
    }
}

function checkEnter(e)
{
    if(e)
        return;
    else
        e=window.event;
        
    key = e.keyCode ? e.keyCode : e.which;
    
    if(key == "13")        
        document.getElementById("mapfinder_submit").click();
}
