
function showPage(url) {
	location.href=url;
}

function showNewPage(url) {
    window.open(url);
}

function showNewPage(newurl,url) {
    window.open(newurl);
    location.href=url;
}

function showNewPageSmall(newurl,url) {
    window.open(newurl,'RoadJack','');
    location.href=url;
}

function showMenu(src, fol, url) {
    fol.action.value = "gotonextpage";
    fol.page.value = url;
    fol.submit();
}

function showAddress(fo1,pointId)
{
    fo1.pointId.value = pointId;
    fo1.submit();
}

function button_over(x,id) {
	if (x.className=="menuitemmiddle") {
		document.getElementById("mil"+id).className="menuitemleftover";
		document.getElementById("mir"+id).className="menuitemrightover";
		document.getElementById("l"+id).className="menuitemlinkover";
		x.className="menuitemmiddleover";
	}
}

function button_off(x,id) {
	if (x.className=="menuitemmiddleover") {
		document.getElementById("mil"+id).className="menuitemleft";
		document.getElementById("mir"+id).className="menuitemright";
		document.getElementById("l"+id).className="menuitemlink";
		x.className="menuitemmiddle";
	}
}

function button_over2(x,id) {
	if (x.className=="menuitemmiddle2") {
		document.getElementById("mil"+id).className="menuitemleftover2";
		document.getElementById("mir"+id).className="menuitemrightover2";
		document.getElementById("l"+id).className="menuitemlinkover2";
		x.className="menuitemmiddleover2";
	}
}

function button_off2(x,id) {
	if (x.className=="menuitemmiddleover2") {
		document.getElementById("mil"+id).className="menuitemleft2";
		document.getElementById("mir"+id).className="menuitemright2";
		document.getElementById("l"+id).className="menuitemlink2";
		x.className="menuitemmiddle2";
	}
}



function Trim(s) 
{
// Remove leading spaces and carriage returns
  
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }

  // Remove trailing spaces and carriage returns

  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}





function alterEmployee(fo1)
{

  fo1.useraction.value = "initForAlter";
  fo1.submit();
}

function alterAccount(fo1)
{

  fo1.useraction.value = "init";
  fo1.submit();
}

function initForAlterAccount(fo1)
{
  fo1.useraction.value = "initForAlterAccount";
  fo1.submit();
}

function removeAccount(fo1)
{
  if (confirm('Wilt u het geselecteerde account verwijderen?')) 
  {
    fo1.useraction.value = "remove";
    fo1.submit();
    return true;
    }
    else
    {
        return false;
    }
}

function addExportItem(fo1)
{

  fo1.useraction.value = "addExportItem";
  fo1.submit();
}

function addImportItem(fo1)
{

  fo1.useraction.value = "addImportItem";
  fo1.submit();
}

function displayExportInfoItem(fo1)
{

//   fo1.action.value = "showExportInfoItem.do";
   fo1.useraction.value = "info";
   fo1.submit();
}

function displayImportInfoItem(fo1)
{

   fo1.useraction.value = "info";
   fo1.submit();
}

function removeMore(fo1)
{
    fo1.useraction.value = "removeMore";
    fo1.submit();
    return true;
}

function removeSelectedItems(fo1)
{
    if (confirm('Wilt u de geselecteerde items verwijderen?'))
    {
        fo1.useraction.value = "removeSelectedItems";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function cancelRemoveMore(fo1)
{
    fo1.useraction.value = "cancelRemoveMore";
    fo1.submit();
    return true;
}

function removeImportInfoItem(fo1)
{
    if (confirm('Wilt u het geselecteerde item verwijderen?'))
    {
        fo1.useraction.value = "remove";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function copyExport(fo1)
{
    fo1.useraction.value = "copyExport";
    fo1.submit();
    return true;
}

function removeEmployee(fo1)
{

  if (confirm('Wilt u de geselecteerde gebruiker verwijderen?')) 
  {
        fo1.useraction.value = "remove";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function sendApp(fo1)
{

  if (confirm('Wilt u de mobiele applicatie versturen?')) 
  {
        fo1.useraction.value = "sendApp";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function removeExportItem(fo1)
{

  if (confirm('Wilt u het geselecteerde item verwijderen?')) 
  {
        fo1.useraction.value = "removeItem";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function removeImportItem(fo1, id)
{

  if (confirm('Wilt u het geselecteerde item verwijderen?')) 
  {
        fo1.useraction.value = "removeImportItem";
        fo1.id.value = id;
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function removeItem(fo1, item)
{

  if (confirm('Wilt u het geselecteerde item verwijderen?')) 
  {
        fo1.useraction.value = "removeItem";
        fo1.id.value = item;
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function removeImportDefItem(fo1,num)
{
    if(num==0)
    {
        alert('Er is geen item geselecteerd');
    }
    else
    {
        if (confirm('Wilt u het geselecteerde item verwijderen?')) 
        {
            fo1.useraction.value = "removeImportDefItem";
            fo1.submit();
            return true;
        }
        else
        {
            return false;
        }
    }
}

function removeExportDefItem(fo1,num)
{
    if(num==0)
    {
        alert('Er is geen item geselecteerd');
    }
    else
    {
        if (confirm('Wilt u het geselecteerde item verwijderen?')) 
        {
            fo1.useraction.value = "removeExportDefItem";
            fo1.submit();
            return true;
        }
        else
        {
            return false;
        }
    }
}

function login(fo1)
{
    fo1.useraction.value = "login";
    fo1.submit();
    return true;
}

function showDetails(fo1)
{
    fo1.useraction.value = "showDetails";
    fo1.submit();
    return true;
}

function initForAlter(fo1)
{
    fo1.useraction.value = "initForAlter";
    fo1.submit();
    return true;
}

function initForAdd(fo1)
{
    fo1.useraction.value = "initForAdd";
    fo1.submit();
    return true;
}

function showDealer(fo1)
{
    fo1.useraction.value = "showDealer";
    fo1.submit();
    return true;
}

function removeDealer(fo1)
{
  if (confirm('Wilt u de geselecteerde dealer verwijderen?')) 
  {
    fo1.useraction.value = "remove";
    fo1.submit();
    return true;
    }
    else
    {
        return false;
    }
}

function search(fo1)
{
    fo1.useraction.value = "initForSearch";
    fo1.submit();
    return true;
}

function toStep1(fo1)
{
    fo1.useraction.value = "toStep1";
    fo1.submit();
    return true;
}

function toStep2(fo1)
{
    fo1.useraction.value = "toStep2";
    fo1.submit();
    return true;
}

function toStep3(fo1)
{
    fo1.useraction.value = "toStep3";
    fo1.submit();
    return true;
}

function toStep4(fo1)
{
    fo1.useraction.value = "toStep4";
    fo1.submit();
    return true;
}

function removeEmployeeFromAccount(fo1,num)
{
    if(num==0)
    {
        alert('Er is geen medewerker geselecteerd');
    }
    else
    {
        if (confirm('Wilt u de geselecteerde gebruiker verwijderen?')) 
        {
            fo1.useraction.value = "removeEmployeeFromAccount";
            fo1.submit();
            return true;
        }
        else
        {
            return false;
        }
    }
}

function alterEmployeeForAccount(fo1)
{
    fo1.useraction.value = "initForAlterEmployee";
    fo1.submit();
    return true;
}

function initForRoute(fo1)
{
    fo1.useraction.value = "initForRoute";
    fo1.submit();
    return true;
}

function showAllLocations(fo1,units)
{
    fo1.useraction.value = "showLocations";
    fo1.units.value = units;
    fo1.submit();
    return true;
}

function showLocations(fo1,detailsShowing,newEmployee,newEmployeeGroup,newCar,newCarGroup,large)
{
    fo1.useraction.value = "showLocations";
    fo1.detailsShowing.value = detailsShowing;
    fo1.newEmployee.value = newEmployee;
    fo1.newEmployeeGroup.value = newEmployeeGroup;
    fo1.newCar.value = newCar;
    fo1.newCarGroup.value = newCarGroup;
    fo1.large.value = large;
    if(fo1.large.value == true)
    {
        fo1.refresh.value = "large";
    }
    else
    {
        fo1.refresh.value = "small";
    }
    fo1.newMap.value = false;
    fo1.submit();
    return true;
}

function showLocationsMove(fo1,detailsShowing,newEmployee,newCar,left,top,large)
{
    fo1.useraction.value="showLocations";
    fo1.detailsShowing.value= detailsShowing;
    fo1.newEmployee.value = newEmployee;
    fo1.newCar.value = newCar;
    fo1.leftValue.value = parseInt(fo1.leftValue.value)+left;
    fo1.topValue.value = parseInt(fo1.topValue.value)+top;
    fo1.large.value = large;
    if(fo1.large.value == true)
    {
        fo1.refresh.value = "large";
    }
    else
    {
        fo1.refresh.value = "small";
    }
    fo1.submit();
    return true;
}

function showRoute(fo1)
{
    fo1.useraction.value = "showRoute";
    fo1.newRoute.value = false;
    fo1.submit();
    return true;
}

function showRouteMove(fo1,left,top)
{
    fo1.useraction.value="showRoute";
    fo1.leftValue.value = parseInt(fo1.leftValue.value)+left;
    fo1.topValue.value = parseInt(fo1.topValue.value)+top;
    fo1.newRoute.value = false;
    fo1.submit();
    return true;
}

function closestEmployeesMap(fo1,detailsShowing)
{
    fo1.useraction.value = "closestEmployeesMap";
    fo1.detailsShowing.value = detailsShowing;
    fo1.submit();
    return true;
}

function closestEmployeesMapMove(fo1,detailsShowing,left,top)
{
    fo1.useraction.value = "closestEmployeesMap";
    fo1.detailsShowing.value = detailsShowing;
    fo1.leftValue.value = parseInt(fo1.leftValue.value)+left;
    fo1.topValue.value = parseInt(fo1.topValue.value)+top;
    fo1.newSearch.value = false;
    fo1.submit();
    return true;
}

function findClosestEmployee(fo1)
{
    fo1.useraction.value = "findClosestEmployee";
    fo1.submit();
    return true;
}

function showHistory(fo1)
{
    fo1.useraction.value = "showHistory";
    fo1.submit();
    return true;
}

function initForHistory(fo1)
{
    fo1.useraction.value = "initForHistory";
    fo1.submit();
    return true;
}

function initForSearchClosest(fo1)
{
    fo1.useraction.value = "initForSearchClosest";
    fo1.submit();
    return true;
}

function searchClosest(fo1,detailsShowing,newSearch)
{
    fo1.useraction.value = "searchClosest";
    fo1.detailsShowing.value = detailsShowing;
    fo1.newSearch.value = newSearch;
    fo1.submit();
    return true;
}

function searchClosestMove(fo1,detailsShowing,left,top)
{
    fo1.useraction.value="searchClosest";
    fo1.detailsShowing.value = detailsShowing;
    fo1.leftValue.value = parseInt(fo1.leftValue.value)+left;
    fo1.topValue.value = parseInt(fo1.topValue.value)+top;
    fo1.newSearch.value = false;
    fo1.submit();
    return true;
}

function loadGroups(fo1)
{
    fo1.useraction.value = "loadGroups";
    fo1.submit();
    return true;
}

function doExport(fo1)
{
    fo1.useraction.value = "export";
    fo1.submit();
    return true;
}

function exportLocations(fo1)
{
    fo1.useraction.value = "exportLocations";
    fo1.submit();
    return true;
}

function toExportDate(fo1)
{
    fo1.useraction.value = "exportDate";
    fo1.submit();
    return true;
}

function alterCar(fo1)
{
    fo1.useraction.value = "initForAlter";
    fo1.submit();
    return true;
}

function removeCar(fo1)
{
    if (confirm('Wilt u het geselecteerde voertuig verwijderen?')) 
    {
        fo1.useraction.value = "remove";
        fo1.submit();
        return true;
    }
    else
    {
        return false;
    }
}

function initForNew(fo1)
{
    fo1.useraction.value= "initForNew";
    fo1.submit();
    return true;
}

function loadAll(fo1)
{
    fo1.useraction.value = "loadAll";
    fo1.submit();
    return true;
}

function removeMessage(fo1)
{
    if (confirm('Wilt u het geselecteerde bericht verwijderen?')) 
    {
      fo1.useraction.value = "remove";
      fo1.submit();
      return true;
    }
    else
    {
      return false;
    }
}

function setSelectedEmployee1(fo1,id)
{
    fo1.employeeId.value = id;
    return true;
}

function setSelectedEmployee0(fo1,id,appType)
{
    fo1.employeeId.value = id;
    fo1.apptype.value = appType;
    fo1.newSort.value = false;
    fo1.useraction.value = "selectEmployee";
    fo1.submit();

    return true;
}

function setSelectedEmployee(fo1,id,appType)
{
    fo1.employeeId.value = id;
    fo1.apptype.value = appType;
    return true;
}

function setSelectedCar0(fo1,id)
{
    fo1.useraction.value = "loadAll";
    fo1.selectedCarId.value = id;
    fo1.newSort.value = false;
    fo1.submit();
    return true;
}

function setSelectedCar(fo1,id)
{
    fo1.selectedCars.value = id;
    return true;
}

function setSelectedGroup(fo1,id)
{
    
    fo1.groupId.value = id;
    return true;
}

function alterGroup(fo1)
{
    fo1.useraction.value = "initForAlterGroup";
    fo1.submit();
    return true;
}

function removeGroup(fo1)
{
    if (confirm('Wilt u de geselecteerde groep verwijderen?')) 
    {
      fo1.useraction.value = "removeGroup";
      fo1.submit();
      return true;
    }
    else
    {
      return false;
    }
}

function sortEmployees(fo1,sortBy)
{
    fo1.useraction.value = "loadAll";
    fo1.sortBy.value = sortBy;
    fo1.newSort.value = true;
    fo1.submit();
}

function sortCars(fo1,sortBy)
{
    fo1.useraction.value = "loadAll";
    fo1.sortBy.value = sortBy;
    fo1.newSort.value = true;
    fo1.submit();
}

function sort(fo1,sortBy)
{
    fo1.useraction.value = "sort";
    
    ascending = true;
    if(fo1.currentSortBy.value == sortBy)
    {
        if(fo1.currentlyAscending.value == 'true')
        {
            ascending = false;
        }
        else
        {
            ascending = true;
        }
    }

    fo1.sortBy.value = sortBy;
    fo1.currentSortBy.value = sortBy;
    fo1.ascending.value = ascending;
    fo1.currentlyAscending.value = ascending;
    fo1.submit();
    return true;
}

function setStartWeekAndPeriod(startDateObject, startWeekObject, startYearObject)
{
  var datestring = startDateObject.value;
  var dateBits = datestring.split('-');
  if (dateBits.size < 3)
  {
      alert('Ongeldige datum');
  }
  else
  {
      var day = dateBits[0];
      var month = dateBits[1] - 1;
      var year = dateBits[2];
      if (isNaN(parseInt(day)) || day < 1 || day > 31 || isNaN(parseInt(month)) || month < 0 || month > 11 || isNaN(parseInt(year)) || year < 1970)
      {
          alert('Ongeldige datum');
      }
      else
      {
          var weeknum = getWeek(year, month, day);
          if (weeknum > 51 && month == 0)
          {
                year = year - 1;
          }

          startWeekObject.value = weeknum;
          startYearObject.value = year;
      }
  }
}

function setStartDateAndPeriod(startDateObject, startWeekObject, startYearObject)
{
  var startweek = startWeekObject.value;
  if (startweek > 53)
  {
     startweek = 53;
     startWeekObject.value = startweek;
  }
  else if (startweek < 1)
  {
      startweek = 1;
      startWeekObject.value = startweek;
  }
  var startyear = startYearObject.value;
  if (startyear < 1970)
  {
      startyear = 1970;
      startYearObject.value = startyear;
  }

  var date = getStartOfWeek(startweek, startyear);
  var day = (date.getDate() < 10 ? '0' : '') + date.getDate();
  var month = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
  startDateObject.value = day + '-' + month + '-' + date.getFullYear();
}

function setStartDateAndWeek(fo, startperiod, startDateObject, startWeekObject, startYearObject, endDateObject, endWeekObject, endYearObject)
{
  var startyear = startYearObject.value;
  var endyear = endYearObject.value;

  var timeperiods = fo.timeperiods.value;
  var weeksPerPeriod = 52 / timeperiods;

  if(timeperiods==12) //every period is a whole month
  {
      var startDate = new Date(startyear, startperiod - 1, 1); //first day of month
      var startWeek = getWeek(startyear, startperiod - 1, 1);

      if(startWeek == 1 && startperiod > 1)    //make sure year is set correctly
      {
          startYearObject.value = startyear + 1;
      }
      else if(startWeek > 52 && startperiod < 11)
      {
          startYearObject.value = startyear - 1;
      }

      var nextMonth = startperiod;
      var nextMonthYear = startyear;
      if (nextMonth == 13)
      {
          nextMonth = 1;
          nextMonthYear = nextMonthYear + 1;
      }
      var nextMonthFirstDay = new Date(nextMonthYear, nextMonth, 1); //first day of next month
      var endDate = new Date(nextMonthFirstDay.getTime() - (24 * 60 * 60 * 1000)); //last day of month
      var endWeek = getWeek(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());

      if(endWeek == 1 && startperiod > 1)    //make sure year is set correctly
      {
          endYearObject.value = startyear + 1;
      }
      else if(endWeek > 52 && startperiod < 11)
      {
          endYearObject.value = startyear - 1;
      }
  }
  else
  {
      var startWeek = 1 + ((startperiod - 1) * weeksPerPeriod);
      var startDate = getStartOfWeek(startWeek, startyear);
      var startWeek = getWeek(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());
      var periodDays = (weeksPerPeriod * 7) - 1;
      var endDate = new Date(startDate.getTime() + (periodDays * 24 * 60 * 60 * 1000));
      var endWeek = getWeek(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
  }

  var day = (startDate.getDate() < 10 ? '0' : '') + startDate.getDate();
  var month = ((startDate.getMonth() + 1) < 10 ? '0' : '') + (startDate.getMonth() + 1);
  startDateObject.value = day + '-' + month + '-' + startDate.getFullYear();
  startWeekObject.value = startWeek;

  day = (endDate.getDate() < 10 ? '0' : '') + endDate.getDate();
  month = ((endDate.getMonth() + 1) < 10 ? '0' : '') + (endDate.getMonth() + 1);
  endDateObject.value = day + '-' + month + '-' + endDate.getFullYear();
  endWeekObject.value = endWeek;

  if (startWeek > 50 && startperiod == 1)
  {
    startyear = startyear - 1;
  }
  else if (startWeek == 1 && startperiod > 1)
  {
    startyear = startyear + 1;
  }
  startYearObject.value = startyear;

  if (endWeek > 50 && startperiod == 1)
  {
    endyear = endyear - 1;
  }
  else if (endWeek == 1 && startperiod > 1)
  {
    endyear = endyear + 1;
  }
  endYearObject.value = endyear;
}

function setEndWeekAndPeriod(endDateObject, endWeekObject, endYearObject)
{
  var datestring = endDateObject.value;
  var dateBits = datestring.split('-');
  if (dateBits.size < 3)
  {
      alert('Ongeldige datum');
  }
  else
  {
      var day = dateBits[0];
      var month = dateBits[1] - 1;
      var year = dateBits[2];
      if (isNaN(parseInt(day)) || day < 1 || day > 31 || isNaN(parseInt(month)) || month < 0 || month > 11 || isNaN(parseInt(year)) || year < 1970)
      {
          alert('Ongeldige datum');
      }
      else
      {
          var weeknum = getWeek(year, month, day);
          if (weeknum > 51 && month == 0)
          {
                year = year - 1;
          }

          endWeekObject.value = weeknum;
          endYearObject.value = year;
      }
  }
}

function setEndDateAndPeriod(endDateObject, endWeekObject, endYearObject)
{
  var endweek = endWeekObject.value;
  if (endweek > 53)
  {
     endweek = 53;
     endWeekObject.value = endweek;
  }
  else if (endweek < 1)
  {
      endweek = 1;
      endWeekObject.value = endweek;
  }
  var endyear = endYearObject.value;
  if (endyear < 1970)
  {
      endyear = 1970;
      endYearObject.value = endyear;
  }

  var date = getEndOfWeek(endweek, endyear);
  var day = (date.getDate() < 10 ? '0' : '') + date.getDate();
  var month = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
  endDateObject.value = day + '-' + month + '-' + date.getFullYear();
}

function getWeek(year, month, day)
{
    var when = new Date(year, month, day);
    var newYear = new Date(year, 0, 1);
    var modDay = newYear.getDay();
    if (modDay == 0)
    {
        modDay=6;
    }
    else
    {
        modDay--;
    }
    var daynum = ((Date.UTC(year, when.getMonth(), when.getDate(), 0, 0, 0) -
                 Date.UTC(year, 0, 1, 0, 0, 0)) /1000/60/60/24) + 1;
    if (modDay < 4 )
    {
        var weeknum = Math.floor((daynum + modDay - 1)/7) + 1;
    }
    else
    {
        var weeknum = Math.floor((daynum + modDay - 1)/7);
        if (weeknum == 0)
        {
            year--;
            var prevNewYear = new Date(year, 0, 1);
            var prevmodDay = prevNewYear.getDay();
            if (prevmodDay == 0) prevmodDay = 6; else prevmodDay--;
            if (prevmodDay < 4) weeknum = 53; else weeknum = 52;
        }
    }

    return weeknum;
}

function getStartOfWeek(weeknum, year)
{
    var newYear = new Date(year, 0, 1);
    var modDay = newYear.getDay();
    if (modDay == 0)
    {
        modDay=6;
    }
    else
    {
        modDay--;
    }
    //week 1 has at least 4 days in new year
    if (modDay < 4)
    {
        var firstMonday = new Date(newYear.getTime() - (modDay * 24 * 60 * 60 * 1000));
    }
    else
    {
        var firstMonday = new Date(newYear.getTime() + ((7 - modDay) * 24 * 60 * 60 * 1000));
    }

    var startOfWeek = new Date(firstMonday.getTime() + ((weeknum - 1) * 7 * 24 * 60 * 60 * 1000));

    return startOfWeek;
}

function getEndOfWeek(weeknum, year)
{
    var startOfWeek = getStartOfWeek(weeknum, year);
    var endOfWeek = new Date(startOfWeek.getTime() + (6 * 24 * 60 * 60 * 1000));
    return endOfWeek;
}
