/*
  $Id: locdir.js,v 1.1 2005/05/23 23:31:51 proy Exp $
  Project:     Web AP Search
  Author:      Suresh Randawa & Paramita Roy

  Description:
    Functions to be used by the form during the Web AP Search
*/



var isIE=document.all?true:false;
var isDOM=document.getElementById?true:false;
var isNS4=document.layers?true:false;





function toggleT(_w,_h, selectedValue) {

/* _w : which ID (1) or (2) */
/* _h : (h)ide or (s)how */
  if (isDOM)
  {
    if (_h=='s' && document.getElementById(_w) != null)
	{
		document.getElementById(_w).style.visibility='visible';
		document.getElementById(_w).style.zIndex='2';
	}
    if (_h=='h' && document.getElementById(_w) != null)
	{
		document.getElementById(_w).style.visibility='hidden';
		document.getElementById(_w).style.zIndex='1';
	}
  }
  else if (isIE) {
    //alert(_w, _h);
    if (_h=='s')
	{
		eval("document.all."+_w+".style.visibility='visible';");
		eval("document.all."+_w+".style.zIndex='2';");
	}
    if (_h=='h')
	{
		eval("document.all."+_w+".style.visibility='hidden';");
		eval("document.all."+_w+".style.zIndex='1';");
	}
  }
  else if(isNS4)
  {
    //alert(_w, _h);
    if (_h=='s')
	{
		eval("document.layers['"+_w+"'].visibility='show';");
		eval("document.layers['"+_w+"'].width='25';");
	}
    if (_h=='h')
	{
		eval("document.layers['"+_w+"'].visibility='hide';");
		eval("document.layers['"+_w+"'].width='0';");
	}
  }
}





function setFormParams()
{
    //alert("Setting Form");
    if(document.forms["TOP_FORM"] == null)
    {
        //alert("Form is NULL");
        return;
    }



    var state_index = document.forms["TOP_FORM"].ste.selectedIndex;
    var state_abbr = state_index > 0 ? document.forms["TOP_FORM"].ste.options[state_index].value : "";
    var country_index = document.forms["TOP_FORM"].cnty.selectedIndex;
    var country_abbr = country_index > 0 ? document.forms["TOP_FORM"].cnty.options[country_index].value : "";


    //alert(state_abbr+" "+country_abbr);

    if(country_abbr.length && country_abbr != "US")
    {
        document.forms["TOP_FORM"].dm.checked = false;
    }
    else
    {
        document.forms["TOP_FORM"].dm.checked = true;
    }

    if(state_abbr.length)
    {
        //alert("Setting Focus on cty dropdown");
        toggleT('cty', 's');
        toggleT('ste', 's');
        toggleT('ctystr', 'h');
        toggleT('stestr', 'h');
        document.forms["TOP_FORM"].cty.focus();
    }
    else
    {
        //alert("Setting Focus on ctystr");
        //toggleT('ctystr', 's');
        toggleT('stestr', 's');
        if(document.forms["TOP_FORM"].cty != null)
            toggleT('cty', 'h');
        toggleT('ste', 'h');
        document.forms["TOP_FORM"].ctystr.focus();
    }

    //alert("Form Set");
    return;
}





function cteChangeHandler(selectedValue, state_abbr, country_abbr)
{
    if(state_abbr.length)
        document.forms["TOP_FORM"].cty.focus();
    else
        document.forms["TOP_FORM"].ctystr.focus();
}





function ctyChangeHandler(selectedValue, state_abbr, country_abbr)
{
    return;
}





function steChangeHandler(selectedValue, country_abbr)
{
    if(navigator.platform == "Mac")
      return;

    if(selectedValue.length)
    {
        document.forms["TOP_FORM"].submit();
    }
    else
    {
        toggleT('ctystr', 's');
        toggleT('cty', 'h');
    }
    
}





function cntyChangeHandler(selectedValue, ste_null_string, cte_null_string, max_string_length, sub_end_text)
{
    var stateLength = document.forms["TOP_FORM"].ste.length;
  

    if(navigator.platform == "Mac")
      return;

    if(selectedValue == "US" || selectedValue.length == 0) 
    {
        document.forms["TOP_FORM"].dm.checked = true;
    }
    else
    {
        document.forms["TOP_FORM"].dm.checked = false;
    }

    while(document.forms["TOP_FORM"].cte.options[0] != null)
        document.forms["TOP_FORM"].cte.options[0] = null;


    if(selectedValue == 0)
    {
        toggleT('ctystr', 's');
        toggleT('stestr', 's');
        toggleT('cty', 'h');
        toggleT('ste', 'h');

        var num_cats = category_name.length;
        //alert("num_cats: "+ num_cats);
        addOption(document.forms["TOP_FORM"].cte, "", cte_null_string);
        for(var i=0; i<num_cats; i++)
        {
            if(category_name[i] != null)
                addOption(document.forms["TOP_FORM"].cte, category_name[i], category_name[i], max_string_length, sub_end_text);
        }
        sortOptions(document.forms["TOP_FORM"].cte, 0, document.forms["TOP_FORM"].cte.options.length-1);
        document.forms["TOP_FORM"].ctystr.focus();
        return;
    }


    toggleT('ctystr', 's');
    toggleT('cty', 'h');
    toggleT('ste', 's');
    toggleT('stestr', 'h'); 
    //alert('"'+selectedValue+'"');
	
    for(var i=0; i<stateLength; i++)
        document.forms["TOP_FORM"].ste.options[0] = null;

    addOption(document.forms["TOP_FORM"].ste, "", ste_null_string);
    for (var ste_abbr in countries[selectedValue])
	{
	    addOption(document.forms["TOP_FORM"].ste, ste_abbr, countries[selectedValue][ste_abbr], max_string_length, sub_end_text);
    }


    var num_cats = categories[selectedValue].length;
    //alert(num_cats);
    addOption(document.forms["TOP_FORM"].cte, "", cte_null_string);
    for(var i=0; i<num_cats; i++)
    {
        var cat_id = categories[selectedValue][i];
        //alert(cat_id+" "+category_name[cat_id]);
        addOption(document.forms["TOP_FORM"].cte, category_name[cat_id], category_name[cat_id], max_string_length, sub_end_text);
    }

    document.forms["TOP_FORM"].ste.selectedIndex = null;
    sortOptions(document.forms["TOP_FORM"].ste, 0, document.forms["TOP_FORM"].ste.options.length-1);


    document.forms["TOP_FORM"].ctystr.focus();
}





function addOption(obj, value, text, maxlength, sub_end_text) {

    var new_option = new Option;
    var eol = obj.options.length;


    if(text.length > maxlength)
    {
        text = text.substr(0, (maxlength-sub_end_text.length));
        text += sub_end_text;
    }

    new_option.text = text;
    new_option.value = value;
    obj.options[obj.options.length] = new_option;
}





function openMapWindow(url, name, width, height)
{
    var new_window = window.open(url, name, "resizable,scrollbars,width=" + width + ",height=" + height + ",left=100, top=50");
    new_window.focus();
    void(0);
}





function sortOptions(selectObject, p, r)
{
//
//  perform a quicksort on selectObjects comparing the values of 
//  selectObject.options[n].text
//

    if(p < r)
    {
        var x = selectObject.options[p].text;
        var i = p - 1;
        var j = r + 1;
        var q;

        while(true)
        {
            do
            {
                j--;
            } while(selectObject.options[j].text > x);

            do
            {
                i++;
            } while(selectObject.options[i].text < x);

            if(i < j)
            {
                var text = selectObject.options[j].text;
                var value = selectObject.options[j].value;

                selectObject.options[j].text = selectObject.options[i].text;
                selectObject.options[j].value = selectObject.options[i].value;

                selectObject.options[i].text = text;
                selectObject.options[i].value = value;
            }
            else
            {
                q = j;
                break;
            }
        }

        sortOptions(selectObject, p, q);
        sortOptions(selectObject, q+1, r);
    }
}






