/* Utility functions specific for Photo Gallery page */
var pgBaseUrl = "photogallery.jsp";
var viBaseUrl = "/go/evox/evox.jsp";
var yearDropdownRef = null;
var vehicleDropdownRef = null;
var yearList = new Array();  // not needed ?
var currYear = "";
var referrer = "";
var currVehicle = "";
var years = new Array(); 
var yearsVI = new Array(); 

function setYearDropdown(ref)
{
    yearDropdownRef = ref;
}
function setVehicleDropdown(ref)
{
    vehicleDropdownRef = ref;
}
function setYear(yr)
{
	 currYear = yr;
}
function setReferrer(ref)
{
    referrer = ref;
}
function setVehicle(v)
{
    currVehicle = v;
}

/* Year constructor */
function Year(year)
{
	this.year = year;
	this.vehicles = new Array();
}
/* Vehicles constructor */
function Vehicle(name, url)
{
	this.name = name;
	this.url = url;
}
/* Checks if selection is valid and returns true if so. 
    @param selectRef reference to a SELECT object
*/
function selectionIsGood(selectRef)
{
    if (null != selectRef && selectRef.selectedIndex > 0)
        return true;
    return false;
}

/* 
 * pg is called for each vehicle that needs to be in the dropdown
 * @param year year of the vehicle
 * @param vehicle description for the vehicle
 * @param qparams query parameter string for the photo gallery
*/
var _year = "";
function pg(year, vehicle, qparams)
{
   // var url = pgBaseUrl + "?" + qparams + "&vname=" + vehicle + "&referer=" + referer;
	var url = pgBaseUrl + "?" + qparams + "&vname=" + vehicle;	 
    /* Look for new year */
    if (year != _year)
    {
        // sort the previous year
        sortVehicles(_year);
        // place new year in year dropdown
        _year = year;

        var yr = new Option(_year, url);
       // yearDropdownRef.options.add(yr);
        
     yearDropdownRef.options[yearDropdownRef.options.length] = yr;//SS -- to address Netscape 6's ignorance of add()
        
        if (_year == currYear)
        {
            yr.selected = true;
            yearDropdownRef.selectedIndex = yearDropdownRef.options.length - 1;
        }
        years[year] = new Year(year);
    }
    if (year == currYear)
    {
        // place new URL in the vehicle dropdown
        /*
        var vOption = new Option(vehicle, url);
        vehicleDropdownRef.options.add(vOption);
        if (vehicle == currVehicle)
        {
            vOption.selected = true;
            vehicleDropdownRef.selectedIndex = vehicleDropdownRef.options.length - 1;
        }
        */
    }
    years[year].vehicles[years[year].vehicles.length] = new Vehicle(vehicle, url);
}

var _year = "";
function vi(year, vehicle, qparams)
{

   // var url = pgBaseUrl + "?" + qparams + "&vname=" + vehicle + "&referer=" + referer;
	var url = viBaseUrl + "?" + qparams + "&vname=" + vehicle;	 
    /* Look for new year */
    if (year != _year)
    {
        // sort the previous year
 	  // sortVehicles(_year);
        // place new year in year dropdown
        _year = year;

        var yr = new Option(_year, url);
       // yearDropdownRef.options.add(yr);
        
     yearDropdownRef.options[yearDropdownRef.options.length] = yr;//SS -- to address Netscape 6's ignorance of add()
        
        if (_year == currYear)
        {
            yr.selected = true;
            yearDropdownRef.selectedIndex = yearDropdownRef.options.length - 1;
        }
        yearsVI[year] = new Year(year);
    }
	 
    if (year == currYear)
    {
        // place new URL in the vehicle dropdown
        /*
        var vOption = new Option(vehicle, url);
        vehicleDropdownRef.options.add(vOption);
        if (vehicle == currVehicle)
        {
            vOption.selected = true;
            vehicleDropdownRef.selectedIndex = vehicleDropdownRef.options.length - 1;
        }
        */
    }
    yearsVI[year].vehicles[yearsVI[year].vehicles.length] = new Vehicle(vehicle, url);
}


/* sortVehicles puts the vehicles for given year in alphabetical order */
function sortVehicles(year)
{
    var yrObj = years[year];
    if (null != yrObj && null != yrObj.vehicles)
    {
        var tempVehs = sort(yrObj.vehicles, "name", "N");
        yrObj.vehicles = tempVehs;
    }
}

/* populateVehicleDropdown populates the Vehicle dropdown according to year
 * @param year new year 
 */
function populateVehicleDropdown(year, type)
{

	var yearArray = years;
	
	if (type == 'VI'){
		yearArray = yearsVI;
	}
	
    if (null == year) year = currYear;
    vehicleDropdownRef.options.length = 1;
    var i = 1;

 
    for (vix in yearArray[year].vehicles)
    {
        var vOption = new Option(yearArray[year].vehicles[vix].name, yearArray[year].vehicles[vix].url);
        //vehicleDropdownRef.options.add(vOption);
        vehicleDropdownRef.options[i] = vOption; i++; //SS -- to address Netscape 6's ignorance of add()
        if (vOption.text == currVehicle || "("+vOption.text+")" == currVehicle)
        {
            vOption.selected = true;
            vehicleDropdownRef.selectedIndex = vehicleDropdownRef.options.length - 1;
        }
    }
}

/* newYearSelected is called whenever a new Year is selected in dropdowns 
 * @param dref dropdown reference
 */
function newYearSelected(dref, vref, type)
{
    setVehicleDropdown(vref);
    var selix = dref.selectedIndex;
	 
		 
    var selYear = "";
    //alert(selix +': ' +dref.options[selix].text + " --> " + dref.options[selix].value);
    if (selix > 0)
    {
        selYear = dref.options[selix].text;
    }
    else
    {
        for (var yix=0; selYear != currYear && yix < yearDropdownRef.options.length; yix++)
        {
            if (currYear == yearDropdownRef.options[yix].text)
            {
                yearDropdownRef.selectedIndex = yix;
                selYear = currYear;
            }
        }
    }


	populateVehicleDropdown(selYear, type);	 
    
    vehicleDropdownRef.selectedIndex = 0;
}

/* gotoGallery just sets the document location */
function gotoGallery(url, intermediatePage)
{
    var newUrl;
    if (null == intermediatePage || "" == intermediatePage)
        newUrl = url.replace(/[\/][a-zA-Z_]+\.jsp/, "/photogallery.jsp");
    else
        newUrl = url.replace(/photogallery.jsp/, intermediatePage);
    //alert(newUrl);
    document.location.href = newUrl;
}

/* newVehilce is called whenever a new Vehicle is selected in dropdowns 
 * @param dref dropdown reference
 */
function newVehicle(dref, asPopup)
{
    var selix = dref.selectedIndex;
    //alert(dref.options[selix].text + " --> " + dref.options[selix].value);
    var newUrl = dref.options[selix].value;
    if (asPopup)
        openGallery(newUrl);  //defined in utility.js
    else
        document.location.href = newUrl;
}

/* prev gets the next vehicle in dropdown */
function prev()
{
    var len = vehicleDropdownRef.length;
    var currix = vehicleDropdownRef.selectedIndex;
    var newix = (currix <= 1 ? len - 1 : currix - 1);
    document.location.href = vehicleDropdownRef.options[newix].value;
}
/* next gets the next vehicle in dropdown */
function next()
{
    var len = vehicleDropdownRef.length;
    var currix = vehicleDropdownRef.selectedIndex;
    var newix = (currix >= len - 1 ? 1 : currix + 1);
    document.location.href = vehicleDropdownRef.options[newix].value;
    //gotoGallery(vehicleDropdownRef.options[newix].value, "launchPG.jsp");
}

/* sort was ripped from mym.js */
function sort(arry, proprty, descending)
{
	var order = new Array();
	i = 0;
	for (idx in arry)
	{
		order[i++] = idx;
	}
	n = order.length;
	for (i=0; i < n-1; i++)
	{
		for (j=i+1; j < n; j++)
		{
			if (descending == "Y")
			{
				if (arry[order[i]][proprty].toLowerCase() < arry[order[j]][proprty].toLowerCase())
				{
					temp = order[i];
					order[i] = order[j];
					order[j] = temp;
				}
			}
			else
			{
				if (arry[order[i]][proprty].toLowerCase() > arry[order[j]][proprty].toLowerCase())
				{
					temp = order[i];
					order[i] = order[j];
					order[j] = temp;
				}
			}
		}
	}
	var ret = new Array();
	for (i=0; i < n; i++)
	{
		ret[order[i]] = arry[order[i]];
	}
	return ret;
}

function populate(listBox)
{
	openGallery(listBox[listBox.selectedIndex].value);
}

