/*
  functions for route & routesearch templates
  common_dom.js also needs to be included
*/
// designate alternating styles for rows
function mq_rowColor(num)  {
    if (num % 2) {
        return "o";
    } else {
        return "n";
    }
}

//displays the maneuvers table results page
function mq_display_ddir_maneuvers_table(container, maneuvers, temp) {
    var colorCount = 1;
    if (av.parameters.routeMaps == 3) {
    	var tdcolSpan = 4;
    }
    else {
    	var tdcolSpan = 3;
    }

    //display table header
    var mTable = document.createElement ('table');
        mTable.id = 'mqManList';
        mTable.cellPadding = '0';
        mTable.cellSpacing = '0';
        mTable.border = '0';
        mTable.summary = 'Direction Maneuvers';

    var tbody = document.createElement ('tbody');

    //display the start address line
        var tr1 = document.createElement ('tr');
            var td1 = document.createElement ('td');
                td1.className = 'gap';
                td1.colSpan = tdcolSpan;
        if (temp == 'print') {
            mq_display_address_location_single_line(td1, av.origin.getAt[0], '', '', '', 'FROM');
        } else {
            mq_display_address_location_single_line(td1, av.origin.getAt[0], "general/start.gif", '37', '11');
        }
        tr1.appendChild (td1);
        tbody.appendChild (tr1);

    //check if there is a prequel string that needs to be displayed
    if (mq_ParamExists(maneuvers.prequel))   {
        var tr2 = document.createElement ('tr');
            var td2 = document.createElement ('td');
                td2.className = 'gap';
               	td2.colSpan = tdcolSpan;
                createImg (td2, '/images/general/icon_warning_small.gif', '17', '17', '', '', 'warning');
                td2.appendChild (document.createTextNode (maneuvers.prequel));

        tr2.appendChild (td2);
        tbody.appendChild (tr2);
    }

    //output the actual maneuvers alternating colors of the background

    for (var count=0; count < eval(maneuvers.count); count++) {
        var maneuver = maneuvers.getAt[count];

        var tr = document.createElement ('tr');
            tr.className = mq_rowColor(colorCount);
            
            if (av.parameters.routeMaps == 3) {
            
                    var tdt = document.createElement ('td');
	                tdt.width = '15%';
	                tdt.className = 'manThumb';
	                createImg (tdt, maneuver.thumbnailMap.request, maneuver.thumbnailMap.width, maneuver.thumbnailMap.height, '', '', maneuver.number);

                    var tdn = document.createElement ('td');
	                tdn.width = '5%';
	                tdn.className = 'manNum';
	                tdn.appendChild (document.createTextNode (maneuver.number + ':'));
	    
	            var tdm = document.createElement ('td');
	                tdm.width = '70%';
	                tdm.className = 'manText';
	                tdm.appendChild (document.createTextNode (maneuver.text));

            }
            else {
	        var tdn = document.createElement ('td');
                	tdn.width = '5%';
	                tdn.className = 'manNum';
                	tdn.appendChild (document.createTextNode (maneuver.number + ':'));
                		
            	var tdm = document.createElement ('td');
                	tdm.width = '80%';
	                tdm.className = 'manText';
	                tdm.appendChild (document.createTextNode (maneuver.text));
	    }
            var tdd = document.createElement ('td');
                tdd.width = '15%';
                tdd.className = 'dist';
                tdd.appendChild (document.createTextNode (maneuver.distance.value + (maneuver.distance.units == "mi" ? " miles" : " kilometers")));

        if(mq_ParamExists(maneuver.searchResults) && eval(maneuver.searchResults.count) > 0) {
            for (var locCount=0; locCount < eval(maneuver.searchResults.count); locCount++)  {
                var loc = maneuver.searchResults.getAt[locCount];

                var div = createDiv (tdm, 'search', '');
                    if (mq_ParamExists (av.proxIconId)) {
                        createImg (div, '/images/icons/' + av.proxIconId + '_' + loc.number + '.gif', '', '', '', '', loc.number);
                    } else {
                        var nDiv = createDiv (div, '', '');
                        nDiv.appendChild (document.createTextNode (loc.number));
                    }
                    mq_display_address_location (div, loc, '');
            }
        }
        if (av.parameters.routeMaps == 3) {
        	tr.appendChild (tdt);
  	        tr.appendChild (tdn);
          	tr.appendChild (tdm);
  	        tr.appendChild (tdd);
        	tbody.appendChild (tr);
        }
        else {
	        tr.appendChild (tdn);
        	tr.appendChild (tdm);
	        tr.appendChild (tdd);
        	tbody.appendChild (tr);
        }

        colorCount++;
    }

    //check if there is a sequel string that needs to be displayed
    if (mq_ParamExists(maneuvers.sequel)) {
        var tr3 = document.createElement ('tr');
            var td3 = document.createElement ('td');
                td3.className = 'gap';
                td3.colSpan = tdcolSpan;
                createImg (td3, '/images/general/icon_warning_small.gif', '17', '17', '', '', 'warning');
                td3.appendChild (document.createTextNode (maneuvers.sequel));

        tr3.appendChild (td3);
        tbody.appendChild (tr3);
    }

    //display the ending destination
        var tr4 = document.createElement ('tr');
            var td4 = document.createElement ('td');
                td4.className = 'gap';
                td4.colSpan = tdcolSpan;
        if (temp == "print") {
            mq_display_address_location_single_line(td4, av.destination.getAt[0], '', '', '', 'TO');
        } else {
            mq_display_address_location_single_line(td4, av.destination.getAt[0], "general/end.gif", '37', '11');
        }
        tr4.appendChild (td4);
        tbody.appendChild (tr4);

        mTable.appendChild (tbody);
        container.appendChild (mTable);
}

//this function is used to create the reverse directions form
function mq_output_reverse_ddir_hidden(form, av) {

    if(!mq_ParamExists(av) || !mq_ParamExists(av.origin) || !mq_ParamExists(av.destination) || !mq_ParamExists(av.parameters))
        return;

    createHiddenInput (form, '', 'transaction', 'route');

    if(mq_ParamExists(av.parameters.latwWidth) && av.parameters.latwWidth.length)
        createHiddenInput (form, '', 'latwWidth', av.parameters.latwWidth);

    if(mq_ParamExists(av.parameters.latw) && av.parameters.latw.length)
        createHiddenInput (form, '', 'latw', av.parameters.latw);

    if(mq_ParamExists(av.parameters.search1) && av.parameters.search1.length)
        createHiddenInput (form, '', 'search1', av.parameters.search1);

    if(mq_ParamExists(av.parameters.search2) && av.parameters.search2.length)
        createHiddenInput (form, '', 'search2', av.parameters.search2);

    if(mq_ParamExists(av.parameters.search3) && av.parameters.search3.length)
        createHiddenInput (form, '', 'search3', av.parameters.search3);
        
    if(mq_ParamExists(av.parameters.routeMaps) && av.parameters.routeMaps.length)
        createHiddenInput (form, '', 'routeMaps', av.parameters.routeMaps);

    if(mq_ParamExists(av.parameters.routeType) && av.parameters.routeType.length)
        createHiddenInput (form, '', 'routeType', av.parameters.routeType);

    if(mq_ParamExists(av.parameters.avoidLimitedAccess) && av.parameters.avoidLimitedAccess.length)
        createHiddenInput (form, '', 'avoidLimitedAccess', av.parameters.avoidLimitedAccess);

    if(mq_ParamExists(av.parameters.avoidTolls) && av.parameters.avoidTolls.length)
        createHiddenInput (form, '', 'avoidTolls', av.parameters.avoidTolls);

    if(mq_ParamExists(av.parameters.avoidFerry) && av.parameters.avoidFerry.length)
        createHiddenInput (form, '', 'avoidFerry', av.parameters.avoidFerry);
        
    if(mq_ParamExists(av.parameters.tempset) && av.parameters.tempset.length)
        createHiddenInput (form, '', 'tempset', av.parameters.tempset);

    if(av.origin.count > 0)
        mqOutputHidden(form, av.origin.getAt[0], 'dest');

    if(av.destination.count > 0)
        mqOutputHidden(form, av.destination.getAt[0], 'orig');

}

//this function is used to create the print directions form
function mq_output_print_ddir_hidden(form, av) {

    if(!mq_ParamExists(av) || !mq_ParamExists(av.origin) || !mq_ParamExists(av.destination) || !mq_ParamExists(av.parameters))
        return;

    createHiddenInput (form, '', 'transaction', 'route');
    createHiddenInput (form, '', 'imageQuality', 'print');

    if(mq_ParamExists(av.parameters.latwWidth) && av.parameters.latwWidth.length)
        createHiddenInput (form, '', 'latwWidth', av.parameters.latwWidth);

    if(mq_ParamExists(av.parameters.latw) && av.parameters.latw.length)
        createHiddenInput (form, '', 'latw', av.parameters.latw);

    if(mq_ParamExists(av.parameters.search1) && av.parameters.search1.length)
        createHiddenInput (form, '', 'search1', av.parameters.search1);

    if(mq_ParamExists(av.parameters.search2) && av.parameters.search2.length)
        createHiddenInput (form, '', 'search2', av.parameters.search2);

    if(mq_ParamExists(av.parameters.search3) && av.parameters.search3.length)
        createHiddenInput (form, '', 'search3', av.parameters.search3);
        
    if(mq_ParamExists(av.parameters.routeMaps) && av.parameters.routeMaps.length)
        createHiddenInput (form, '', 'routeMaps', av.parameters.routeMaps);

    if(mq_ParamExists(av.parameters.routeType) && av.parameters.routeType.length)
        createHiddenInput (form, '', 'routeType', av.parameters.routeType);

    if(mq_ParamExists(av.parameters.avoidLimitedAccess) && av.parameters.avoidLimitedAccess.length)
        createHiddenInput (form, '', 'avoidLimitedAccess', av.parameters.avoidLimitedAccess);

    if(mq_ParamExists(av.parameters.avoidTolls) && av.parameters.avoidTolls.length)
        createHiddenInput (form, '', 'avoidTolls', av.parameters.avoidTolls);

    if(mq_ParamExists(av.parameters.avoidFerry) && av.parameters.avoidFerry.length)
        createHiddenInput (form, '', 'avoidFerry', av.parameters.avoidFerry);
        
    if(mq_ParamExists(av.parameters.tempset) && av.parameters.tempset.length)
        createHiddenInput (form, '', 'tempset', av.parameters.tempset);

    if(av.origin.count > 0)
        mqOutputHidden(form, av.origin.getAt[0], 'orig');

    if(av.destination.count > 0)
        mqOutputHidden(form, av.destination.getAt[0], 'dest');
}


//function used to generate hidden values for the ddir back form
function mq_output_back_ddir_hidden(form, av) {

    if(!mq_ParamExists(av) || !mq_ParamExists(av.origin) || !mq_ParamExists(av.destination) || !mq_ParamExists(av.parameters))
        return;

    createHiddenInput (form, '', 'transaction', 'route');

    if(mq_ParamExists(av.parameters.latwWidth) && av.parameters.latwWidth.length)
        createHiddenInput (form, '', 'latwWidth', av.parameters.latwWidth);

    if(mq_ParamExists(av.parameters.latw) && av.parameters.latw.length)
        createHiddenInput (form, '', 'latw', av.parameters.latw);

    if(mq_ParamExists(av.parameters.search1) && av.parameters.search1.length)
        createHiddenInput (form, '', 'search1', av.parameters.search1);

    if(mq_ParamExists(av.parameters.search2) && av.parameters.search2.length)
        createHiddenInput (form, '', 'search2', av.parameters.search2);

    if(mq_ParamExists(av.parameters.search3) && av.parameters.search3.length)
        createHiddenInput (form, '', 'search3', av.parameters.search3);

    if(mq_ParamExists(av.parameters.routeMaps) && av.parameters.routeMaps.length)
        createHiddenInput (form, '', 'routeMaps', av.parameters.routeMaps);

    if(mq_ParamExists(av.parameters.routeType) && av.parameters.routeType.length)
        createHiddenInput (form, '', 'routeType', av.parameters.routeType);

    if(mq_ParamExists(av.parameters.avoidLimitedAccess) && av.parameters.avoidLimitedAccess.length)
        createHiddenInput (form, '', 'avoidLimitedAccess', av.parameters.avoidLimitedAccess);

    if(mq_ParamExists(av.parameters.avoidTolls) && av.parameters.avoidTolls.length)
        createHiddenInput (form, '', 'avoidTolls', av.parameters.avoidTolls);

    if(mq_ParamExists(av.parameters.avoidFerry) && av.parameters.avoidFerry.length)
        createHiddenInput (form, '', 'avoidFerry', av.parameters.avoidFerry);
        
    if(av.origin.count > 0)
      mqOutputHidden(form, av.origin.getAt[0], 'orig');

    if(av.destination.count > 0)
      mqOutputHidden(form, av.destination.getAt[0], 'dest');
}

//this function is used to output the origin or dest as hidden fields on a form
function mqOutputHidden(form, loc, prefix) {
    if(!mq_ParamExists(loc))
        return;

    if (mq_ParamExists(loc.name) && loc.name.length)
        createHiddenInput (form, '', prefix + 'name', loc.name);

    if (mq_ParamExists(loc.address) && loc.address.length)
        createHiddenInput (form, '', prefix + 'address', loc.address);

    if (mq_ParamExists(loc.city) && loc.city.length)
        createHiddenInput (form, '', prefix + 'city', loc.city);

    if (mq_ParamExists(loc.county) && loc.county.length)
        createHiddenInput (form, '', prefix + 'county', loc.county);

    if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length)
        createHiddenInput (form, '', prefix + 'stateProvince', loc.stateProvince);

    if (mq_ParamExists(loc.postalCode) && loc.postalCode.length)
        createHiddenInput (form, '', prefix + 'postalCode', loc.postalCode);

    if (mq_ParamExists(loc.country) && loc.country.length)
        createHiddenInput (form, '', prefix + 'country', loc.country);

    if (mq_ParamExists(loc.latitude) && loc.latitude.length)
        createHiddenInput (form, '', prefix + 'latitude', loc.latitude);

    if (mq_ParamExists(loc.longitude) && loc.longitude.length)
        createHiddenInput (form, '', prefix + 'longitude', loc.longitude);
}

//function used to preserve hidden values of misc route parameters for ambiguity or errors
function mq_output_misc_ddir_hidden(form, av) {

    if(!mq_ParamExists(av) || !mq_ParamExists(av.origin) || !mq_ParamExists(av.destination) || !mq_ParamExists(av.parameters))
        return;

    createHiddenInput (form, '', 'transaction', 'route');

    if(mq_ParamExists(av.parameters.latwWidth) && av.parameters.latwWidth.length)
        createHiddenInput (form, '', 'latwWidth', av.parameters.latwWidth);

    if(mq_ParamExists(av.parameters.latw) && av.parameters.latw.length)
        createHiddenInput (form, '', 'latw', av.parameters.latw);

    if(mq_ParamExists(av.parameters.search1) && av.parameters.search1.length)
        createHiddenInput (form, '', 'search1', av.parameters.search1);

    if(mq_ParamExists(av.parameters.search2) && av.parameters.search2.length)
        createHiddenInput (form, '', 'search2', av.parameters.search2);

    if(mq_ParamExists(av.parameters.search3) && av.parameters.search3.length)
        createHiddenInput (form, '', 'search3', av.parameters.search3);

    if(mq_ParamExists(av.parameters.routeMaps) && av.parameters.routeMaps.length)
        createHiddenInput (form, '', 'routeMaps', av.parameters.routeMaps);

    if(mq_ParamExists(av.parameters.routeType) && av.parameters.routeType.length)
        createHiddenInput (form, '', 'routeType', av.parameters.routeType);

    if(mq_ParamExists(av.parameters.avoidLimitedAccess) && av.parameters.avoidLimitedAccess.length)
        createHiddenInput (form, '', 'avoidLimitedAccess', av.parameters.avoidLimitedAccess);

    if(mq_ParamExists(av.parameters.avoidTolls) && av.parameters.avoidTolls.length)
        createHiddenInput (form, '', 'avoidTolls', av.parameters.avoidTolls);

    if(mq_ParamExists(av.parameters.avoidFerry) && av.parameters.avoidFerry.length)
        createHiddenInput (form, '', 'avoidFerry', av.parameters.avoidFerry);
        
    if(mq_ParamExists(av.parameters.tempset) && av.parameters.tempset.length)
        createHiddenInput (form, '', 'tempset', av.parameters.tempset);

}
