var AllTripDistance = "";
var AllTripPassengers = "";
var AllTripBusOrRail = "";
var AllTripRoundTripOrNot = "";

var objtblTrips;
var objDiv;
var AllRows = 0;
var CurRow = 0;
var Counter = 0;

ton_mul = 10.0;
z_mul = 2.5;
veh_mul = 0.00887;	// 8.87/1000

function RoundAndInt(n)
{
    if((n- parseInt(n)) > 0.5)
        return parseInt(n) + 1;
    else
        return parseInt(n);
}


function round2d(n) {

var tem = new String(Math.round(100*n)/100);
var pos = tem.lastIndexOf(".");
if (pos >= 0) {
    tem1 = tem.substring(0, pos);
    tem2 = tem.substring(pos+1, tem.length);
    //alert("tem1 " + tem1 + ", tem2 " + tem2);
    if (tem2.length == 0) {
	    tem2 = "00";
    }
    else if (tem2.length == 1) {
	    tem2  += "0";
    }
    tem = tem1 + "." + tem2;
}
else {
    tem = tem + ".00";
}
return(tem);
}

function SubmitShopForm()
{
    alert(444);
    frmShop.submit();
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function


function CaptureKey(objTextbox)
{
//    alert(event.keyCode)
    switch (event.keyCode) {
    case 13: //Enter
        SelectSuggest();
        break	
    case 38: //Up Arrow
        GoToUp();
        break	
    case 40: //Down Arrow
        GoToDown();
        break	
    default:
        Suggest(objTextbox);
    }
}

function GetPersons(Num)
{
    Result = "";
    for(i = 1 ; i <= Num; i++)
    {
        Result = Result + "&lt;option value=\"" + i + " \"&gt;" + i + "&lt;/option&gt;"
    }
    return Result;
}


//    google.load('maps', '2');
var googleDirection;
function handleErrors()
{ 
    if (googleDirection.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
    {
        FromCity = document.getElementById("From").value;
        ToCity = document.getElementById("To").value;
        alert("No corresponding geographic location could be found (" + FromCity + " or " + ToCity + ")")
    }
}


function GotoAssumption()
{

window.location.href = 'http://www.carbonfund.org/site/pages/carbon_calculators/category/Assumptions/'

 //   alert('Please visit the Carbonfund.org Assumptions page\nat http://www.carbonfund.org/assumptions');
}

function ResetForm()
{
    objtblResults = document.getElementById("tblResults")

    document.getElementById("From").value = "";
    document.getElementById("To").value = "";

    document.getElementById("txtTotalMiles").value = "";
    document.getElementById("txtTotalCO2").value = "";
    document.getElementById("txtTotalCost").value = "";

    TripNums = objtblResults.rows.length;
    for(i = 0 ; i < TripNums ; i++)
    {
        objtblResults.deleteRow(0)
//        objtblResults.rows[0].removeNode(true);
    }
    
}
////////////////////////////////////////////////////////////////////////////////////////////////
function CalcCurrentDistance()
{
    FromCity = document.getElementById("From").value;
    ToCity = document.getElementById("To").value;

    //debugger
    objtblResults = document.getElementById("tblResults")
    for(i = 0 ;i < objtblResults.rows.length; i++)
    {
        if(objtblResults.rows[i].cells[0].From == FromCity && objtblResults.rows[i].cells[0].To == ToCity)
        {
                alert('You have added this trip before!')
                return;
        }
    }


    if (GBrowserIsCompatible()) {
        googleDirection = new google.maps.Directions();
        google.maps.Event.addListener(googleDirection, 'load', GetResults);
        google.maps.Event.addListener(googleDirection, "error", handleErrors); 
        strDistance = "from: " + FromCity + " to: " + ToCity
        googleDirection.load(strDistance, {getSteps: true});
    }
}

function GetResults()
{
    //debugger
    FromCity = document.getElementById("From").value;
    ToCity = document.getElementById("To").value;

    if(googleDirection.getDistance() == null)
        return;
    CurrentMileage = googleDirection.getDistance().html ;
    CurrentMileage = CurrentMileage.replace("&nbsp;mi", "")
    CurrentMileage = CurrentMileage.replace(",", "")
    CurrentMileage = parseFloat(CurrentMileage);

    
    
    if(document.getElementById("RoundTrip").checked)
        IsRoundTrip = true;
    else
        IsRoundTrip = false;
    objRadioButton = document.getElementsByName("rdBR");
    BusOrRail = 2;//set variable to 2 for train only!!!  All other functions remain unchanged JK - 2/18/09
    objComboBox = document.getElementById("PassengerNum");
    PassengerNumber = objComboBox.options[objComboBox.selectedIndex].value


    CurCO2 = 0
    if(IsRoundTrip) //Round Trip
        CurrentMileage = CurrentMileage * 2;
        
    if(BusOrRail == "2") // Rail
    {
        CurrentMileage = CurrentMileage + CurrentMileage * 0.1; //nature of railroad tracks
        if(CurrentMileage > 20)
            MultNum = 0.42
        else
            MultNum = 0.35;
        CurCO2 = RoundAndInt(PassengerNumber) * CurrentMileage * MultNum;
    }
    else if(BusOrRail == "1") // Bus
    {
        CurrentMileage = CurrentMileage + CurrentMileage * 0.1; // non-linear roads
        if(CurrentMileage > 20)
            MultNum = 0.18
        else
            MultNum = 0.66;
        CurCO2 = RoundAndInt(PassengerNumber) * CurrentMileage * MultNum;
    }
    CurCO2 = CurCO2 * 0.00045359237;//convert to Tone
    CurCost = CurCO2 * 10.0; // hardcoded ton price
    CurCost = parseFloat(CurCost);
    CurCost = round2d(CurCost);



    objtblResults = document.getElementById("tblResults")

    myTbody = document.createElement("tbody");
    newRow = document.createElement("tr");
    MileageCell = document.createElement("td");
    
    MileageCell.setAttribute("From", FromCity);
    MileageCell.setAttribute("To", ToCity);
    
    CO2Cell = document.createElement("td");
    CostCell = document.createElement("td");
    RemoveCell = document.createElement("td");

    MileageCell.innerHTML = RoundAndInt( CurrentMileage);
    CO2Cell.innerHTML = round2d(CurCO2);
    CostCell.innerHTML = "$" + CurCost;
    RemoveCell.innerHTML = "<img src=\"images/btnRemove.jpg\" class=\"cBtns\" alt=\"Remove This Trip (" + FromCity + " to " + ToCity + ")\" onclick=\"RemoveRow(this)\" />";

    newRow.appendChild(MileageCell);
    newRow.appendChild(CO2Cell);
    newRow.appendChild(CostCell);
    newRow.appendChild(RemoveCell);
    
    objtblResults.appendChild(myTbody);
    myTbody.appendChild(newRow);
    
    CalculateTotal();

}

function CalculateTotal()
{
    objtblResults = document.getElementById("tblResults")
    TotalMiles = 0;
    TotalCO2 = 0;
    TotalCost = 0;
    
    //debugger
    for(i = 0 ; i < objtblResults.rows.length; i++)
    {
        Miles = RoundAndInt(objtblResults.rows[i].cells[0].childNodes[0].data);
        CO2 = parseFloat(objtblResults.rows[i].cells[1].childNodes[0].data);
        Cost = parseFloat(objtblResults.rows[i].cells[2].childNodes[0].data.replace('$', ''));

        TotalMiles += Miles;
        TotalCO2 += CO2;
        TotalCost += Cost;
    }
    TotalMiles = RoundAndInt(TotalMiles);
    TotalCO2 = round2d(TotalCO2);
    TotalCost = round2d(TotalCost);
    
    TotalMiles = addCommas(TotalMiles);

    document.getElementById("txtTotalMiles").value = TotalMiles;
    document.getElementById("txtTotalCO2").value = TotalCO2;
    document.getElementById("txtTotalCost").value = "$" + TotalCost;
  	document.getElementById("Price").value = TotalCost; // price for shopping cart form
    if(objtblResults.rows.length == 0)
        ResetForm();
}
    
function RemoveRow(objImage)
{
    //objImage.parentNode.parentNode.removeNode(true)
    RowIndex = objImage.parentNode.parentNode.rowIndex;
    //objImage.parentNode.parentNode.parentNode.deleteRow(RowIndex)
    objtblResults = document.getElementById("tblResults");
    objtblResults.deleteRow(RowIndex)
    CalculateTotal();
}    

var CurTextBox = null;
function Suggest(objTextBox)
{
    //debugger
    CurTextBox = objTextBox;
    InpulVal = objTextBox.value;
    InpulVal = InpulVal + " USA";
    if (GBrowserIsCompatible()) {
        address = InpulVal;
        geocoder = new GClientGeocoder();
        geocoder.getLocations(address, SuggestToUser);
    }
}

function SuggestToUser(response)
{
  ObjSuggestDiv = document.getElementById("SuggestDiv");
  ObjSuggestDiv.className = 'cVisible';

  ChildLen = ObjSuggestDiv.childNodes.length;
  for(j = 0 ; j < ChildLen; j++)
  {
    ObjSuggestDiv.childNodes[0].removeNode(true);
  }
  // Retrieve the object
  //debugger
  if(response == null || response.Status.code != "200")
    return;

  
  ObjSuggestDiv.className = 'cSuggestDive';
  for(i =0; i < response.Placemark.length; i++)
  {
    CurAddress = response.Placemark[i].address;
    divObj = document.createElement("DIV");
    if(i == 0)
        divObj.className = 'cSelectedSuggest';
    divObj.innerHTML = CurAddress;
    ObjSuggestDiv.appendChild(divObj);
  }
  ObjSuggestDiv.style.left = CurTextBox.offsetLeft;
  ObjSuggestDiv.style.top = CurTextBox.offsetTop + 17;
  
}

function GoToDown()
{
    ObjSuggestDiv = document.getElementById("SuggestDiv");
    ChildLen = ObjSuggestDiv.childNodes.length;
    SelectedIndex = 0;
    //debugger

    for(j = 0 ; j < ChildLen; j++)
    {
        if(ObjSuggestDiv.childNodes[j].className == 'cSelectedSuggest')
        {
            SelectedIndex = j;
            break;
        }
    }

    for(c = 0 ; c < ChildLen; c++)
    {
        ObjSuggestDiv.childNodes[c].className = ''       
    }

    if(SelectedIndex + 1 < ChildLen)
        NextIndex = SelectedIndex + 1;
    else
        NextIndex = SelectedIndex;
    ObjSuggestDiv.childNodes[NextIndex].className = 'cSelectedSuggest'
        
}


function GoToUp()
{
    ObjSuggestDiv = document.getElementById("SuggestDiv");
    ChildLen = ObjSuggestDiv.childNodes.length;
    SelectedIndex = 0;
    //debugger

    for(j = 0 ; j < ChildLen; j++)
    {
        if(ObjSuggestDiv.childNodes[j].className == 'cSelectedSuggest')
        {
            SelectedIndex = j;
            break;
        }
    }

    for(c = 0 ; c < ChildLen; c++)
    {
        ObjSuggestDiv.childNodes[c].className = ''       
    }

    if(SelectedIndex > 0)
        NextIndex = SelectedIndex - 1;
    ObjSuggestDiv.childNodes[NextIndex].className = 'cSelectedSuggest'
}

function SelectSuggest()
{
    ObjSuggestDiv = document.getElementById("SuggestDiv");
    ChildLen = ObjSuggestDiv.childNodes.length;
    SelectedIndex = 0;
    //debugger

    for(j = 0 ; j < ChildLen; j++)
    {
        if(ObjSuggestDiv.childNodes[j].className == 'cSelectedSuggest')
        {
            SelectedIndex = j;
            break;
        }
    }
    CurTextBox.value = ObjSuggestDiv.childNodes[SelectedIndex].innerHTML;
    ObjSuggestDiv.className = 'cHidden';
}


//ss = 34;
//alert(round2d(ss))