/*
  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;

    //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';
			if (temp == 'print') {
				td1.appendChild (document.createTextNode ("FROM"));
			} else {
				createImg (td1, '/images/general/start.gif', '37', '11', '', '', 'FROM');
			}
        	td1.appendChild (document.createTextNode (" "));
            var td1B = document.createElement ('td');
                td1B.className = 'gap';
        	mq_display_address_location_single_line(td1B, av.origin.getAt[0], '', '', '', '');
        	td1B.appendChild (document.createTextNode (" "));
            var td1C = document.createElement ('td');
                td1C.className = 'manNum';
      			td1C.appendChild (document.createTextNode ("Distance"));
        tr1.appendChild (td1);
        tr1.appendChild (td1B);
        tr1.appendChild (td1C);
        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.colSpan = '3';
                td2.className = 'gap';
                createImg (td2, '/images/general/icon_warning_small.gif', '17', '17', '', '', 'warning');
                td2.appendChild (document.createTextNode (maneuvers.prequel));
        td2.appendChild (document.createTextNode (""));
        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);

            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, '');
            }
        }
        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 = '3';
                createImg (td3, '/images/general/icon_warning_small.gif', '17', '17', '', '', 'warning');
                td3.appendChild (document.createTextNode (maneuvers.sequel));
        td3.appendChild (document.createTextNode (" "));
        tr3.appendChild (td3);
        tbody.appendChild (tr3);
    }

    //display the ending destination
        var tr4 = document.createElement ('tr');
            var td4 = document.createElement ('td');
                td4.className = 'gapto';
			if (temp == 'print') {
				td4.appendChild (document.createTextNode ("TO"));
			} else {
				createImg (td4, '/images/general/end.gif', '37', '11', '', '', 'TO');
			}
        	td4.appendChild (document.createTextNode (" "));
            var td4B = document.createElement ('td');
                td4B.className = 'gapto';
        	mq_display_address_location_single_line(td4B, av.destination.getAt[0], '', '', '', '');
        	td4B.appendChild (document.createTextNode (" "));
        tr4.appendChild (td4);
        tr4.appendChild (td4B);
        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.pWidth) && av.parameters.pWidth.length)
        createHiddenInput (form, '', 'pWidth', av.parameters.pWidth);

    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.pWidth) && av.parameters.pWidth.length)
        createHiddenInput (form, '', 'pWidth', 360);

    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(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);
}
