function FormatNumber(num) {
   var s = num;
   var n = parseFloat(num);
   if(!isNaN(n)) {
      n = Math.round(n*100)/100;
      s = n.toString();
      var i = s.length;
      if(i > 3) {
         var ip = s.indexOf('.');
         if(ip >= 0) i -= (i - ip);
         i -= 3;
         while(i > 0) {
            s = s.substr(0,i)+','+s.substr(i);
            i -= 3;
         }
      }
   }
   return s;
}

var detailsName = "";
var detailsWindow;
var unicId = 10;
var distanceBack = 0;

function AddFlypoint(id, name, iataicao, city, countrystate, distance, distance2, distance_back, nplace, priceTakeoff, priceLand, priceIntermediate) {
   if(distance_back > 0)
      distanceBack = distance_back * 1.6093;
   //alert("AddFlypath("+id+", "+name+", "+nplace+")");
   var reg = new RegExp("^"+city);
   name = String(name).replace(reg, "");
   name = String(name).replace(/^%s-%s/, "");
   if(nplace ==3)
      $("#fp").append(flypath_separator);
   var content = "";
   var idname = unicId++;
   var d = new Date();
   var price = {takeoff:priceTakeoff, land:priceLand, intermediate:priceIntermediate};
   if(nplace == 1) {
      d.addDays(1);
      arrivalDate[0] = d;
      airportIATA[0] = iataicao;
      cityId[0] = idname;
      countries[0] = countrystate;
      airportPrice[0] = price;
      content = "<td nowrap valign='top'><div class='city'>"+city+"</div><table class='flypoint' border='0' cellspacing='1' cellspacing='1' width='100%'><tr><td class='airport' colspan='2'>"+name+"</td></tr><tr><td width='85' valign='top'>Departure&nbsp;date:</td><td nowrap='true'><input id='date"+idname+"' type='text' class='date-pick' /></td></tr></table></td>";
   }else {
      var l = cityId.length;
      if(nplace==3) {
         d.setTime(arrivalDate[l-1].getTime());
         d.addDays(1);
         arrivalDate[l] = d;
         airportIATA[l] = iataicao;
         cityId[l] = idname;
         countries[l] = countrystate;
         airportPrice[l] = price;
      }else {
         d = arrivalDate[l-2];
         arrivalDate[l] = arrivalDate[l-1];
         airportIATA[l] = airportIATA[l-1];
         cityId[l] = cityId[l-1];
         countries[l] = countries[l-1];
         airportPrice[l] = airportPrice[l-1];
         d.addDays(1);
         arrivalDate[l-1] = d;
         airportIATA[l-1] = iataicao;
         cityId[l-1] = idname;
         countries[l-1] = countrystate;
         airportPrice[l-1] = price;
      }
      var fdistance = FormatNumber(distance);
      content = "<td nowrap valign='top'><img src='/images/x.gif' width='16' height='16' class='clickable' align='right' id='x"+l+"' onclick='RemoveFP(this,"+id+")' alt='Remove Flypoint' title='Remove Flypoint'/><div class='city'>"+city+"</div><table class='flypoint' border='0' cellspacing='1' cellspacing='1' width='100%'><tr><td colspan='2' nowrap class='airport'>"+name+"</td></tr><tr><td width='70'>Distance:</td><td><strong>"+fdistance+"</strong>&nbsp;ml</td></tr><tr"+(nplace==3?" style='display:none'":"")+"><td>Departure&nbsp;date:</td><td nowrap='true'><input id='date"+idname+"' name='date"+idname+"' type='text' class='date-pick' onchange='SetTotal()' /><input id='price"+idname+"' name='price"+idname+"' type='hidden' value='' /></td></tr></table></td>";
   }
   if(nplace == 2) {
      tdlast = $("#fp > td:last");
      tdlast.before(content);
      tdlast.before(flypath_separator);
      tdlast.find("strong").text(distance2);
   }else {
      if(cityId.length > 2)
         $("#date"+cityId[cityId.length-2]).parent().parent().show();
      $("#fp").append(content);
   }
   $('#date'+idname).datePicker();  //.val(d.asString()).trigger('change');
   $('#date'+idname).dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_RIGHT);
     
   SetTotal();
   /*
   if($("#planner").css("display") == "none" && $("#fp").children().length > 1) {
      //alert("show jet list");
      $("#planner").animate({width:"show"}, 600);
      $("#jetlist").animate({width:"show"}, 600);
      //$("#world_map").css("zIndex",1);
   }
   if($("#flypath").css("display") == "none") {
      $("#flypath").animate({height: "show"}, 600);
   }
   */
}

/////////////////////
function SetTotal() {
   var priceAir = 1000;
   var priceLand = 500;
   var priceIntermediate = 400;
   var speed = 500;
   var price = 0;
   
   if(airSel != undefined) {
      if(airSel[5]) {
         var v = parseFloat(airSel[5]);
         priceAir = isNaN(v)?priceAir:v;
      }
      if(airSel[6]) {
         var v = parseFloat(airSel[6]);
         priceLand = isNaN(v)?priceLand:v;
      }
      if(airSel[7]) {
         var v = parseFloat(airSel[7]);
         speed = isNaN(v)?speed:v;
      }
   }else
      price = 'Choose aircraft type';
   
   var tds = $("#fp").children();
   var d = 0;
   if(tds.length > 1) {
      var p = 0;
      for(i=0; i<tds.length; i+=2) {
         var j = Math.floor(i / 2);
         if(i > 0) {
            var s = parseInt(String(tds.eq(i).find("strong").text()).replace(',',''));
//alert("s="+s);
            d += s;  // дистанция
            if(airSel != undefined) {
               var airtime = (s * 1.6093) / speed;
               if(airtime < 2) airtime = 2;
               var v = Math.round(airtime * priceAir);
//alert("v = round(("+s+"*1.6093)/"+speed+"*"+priceAir+") = "+v);
               p += v;
               if(tds.length - i > 1) {   // промежуточная остановка
                  var land = parseFloat(airportPrice[j].land);
                  //var d1 = Date.fromString($("#date"+cityId[j]).val());
                  //var d2 = Date.fromString($("#date"+cityId[j+1]).val());
                  //alert(d2.asString() +" - "+ d1.asString() +" = "+ ((d2-d1)/86400000));
                  p += (isNaN(land) ? priceLand : land); // * ((d2-d1)/86400000);

                  if(i > 0) {
                     var iprice = parseFloat(airportPrice[j].intermediate);
                     p += (isNaN(iprice) ? priceIntermediate : iprice)
                  }
               }
               price += Math.round(p);
               $("#price"+cityId[j]).val(p);
            }
         }
         if(airSel != undefined) {
            p = parseFloat(airportPrice[j].takeoff);
            if(isNaN(p))
               p = 500;
         }
      }
      var airtime = distanceBack / speed;
      if(airtime < 2) airtime = 2;
      price += Math.round(airtime * priceAir);
      if(airtime >= 12) {
         price += Math.floor(airtime / 12) * 750;
      }
   }
   price += 1500; // Always add $1500 for crew
   document.forms[0].price.value = price;
   document.forms[0].distance.value = d;
   d = FormatNumber(d);
   price = FormatNumber(price);
   $("#totaldist").text(d);
   $("#totalprice").text(price);
}
//////////////////////

function RemoveFP(obj, id) {
   if(!confirm('Delete Flypoint. Are you sure?')) return;
   var n = parseInt(String(obj.id).substr(1));
   var td = $(obj).parent().eq(0);
   if(td.next().get(0))
      td.next().remove();
   else
      td.prev().remove();
   td.remove();
   if(!isNaN(n)) {
      for(var i=n+1; i<cityId.length; i++) {
         $("#x"+i).get(0).id = "x"+(i-1);
         arrivalDate[i-1] = arrivalDate[i];
         airportPrice[i-1] = airportPrice[i];
         cityId[i-1] = cityId[i];
      }
      arrivalDate.length--;
      airportPrice.length--;
      cityId.length--;
   }
   SetTotal();
   getWM().removeFlypoint(id);
}
function ClearFlypath() {
   if(!confirm('Clear Flypath. Are you sure?')) return;
   document.getElementById('fp').innerHTML = "";
   SetTotal();
   getWM().clearFlypath();
   unicId = 10;
   arrivalDate.length = 0;
   cityId.length = 0;
   airportPrice.length = 0;
}

function ShowJets(id) {
   //alert("ShowJets("+id+")");
   var t = $("#"+id);
   if(t.css("display") == "none") {
      show = "show";
      t.prev().find("span").html("&#9660;");
   }else {
      show = "hide";
      t.prev().find("span").html("&#9658;");
   }
   $("#"+id).animate({height:show}, 600);
}
function ShowPopupJet(img) {
   //img.style.backgroundColor = "#FFFFFF";
   
   var jet = jets[$(img).attr("name")];
   if(jet) {
      var popup = $("#popup");
      popup.find("img").get(0).src = $(img).attr("src");
      popup.find("strong").text(jet[0]);
      var s = " ";
      popup.find("b").each(function(i) { this.innerHTML = jet[i+1]; s+=jet[i+1] });
      //alert(s);
      document.onmousemove = MovePopup;
   }else
      alert("ERROR: Not fount jet model '"+img.name+"'");
}
function HidePopupJet(img) {
   //img.style.backgroundColor = "transparent";
   document.onmousemove = null;
   $("#popup").css("display", "none");
}
function MovePopup(e) {
   var popup = $("#popup");
   popup.css("top", (mozilla ? e.clientY : event.clientY)+20);
   popup.css("left", (mozilla ? e.clientX : event.clientX)-popup.width()-20);
   if(!popup.is(':visible')) {
      popup.show();
   }
}
function SelectPlanner(img) {
   var planner = $("#planner");
   var name = $(img).attr("name");
   planner.empty().parent().eq(0).css("verticalAlign", "middle");
   //$(img).clone(true).css("backgroundColor", "transparent").removeAttr("onclick").appendTo("#planner");
   planner.html("<img src=\""+$(img).attr("src")+"\" alt=\""+name+"\" /><br />Click for details");
   planner.wrapInner("<span name=\""+name+"\" onClick=\"PlannerDetail('"+name+"')\" onMouseOver=\"ShowPopupJet(this)\" onMouseOut=\"HidePopupJet(this)\" class=\"clickable\"></span>");
   airSel = jets[name];
   SetTotal();
}
function PlannerDetail(name) {
   if(detailsName != name) {
      //alert(detailsName+" != "+name);
      detailsName = name;
      detailsWindow = window.open("getairdetails.asp?jet="+escape(airSel[0]), 
         "jetDetails",
         "width=650,height=450,menubar=no,resizable=yes,toolbar=no");
   }
   detailsWindow.focus();
}

function getWM() {
   if($.browser.msie) {
      return window['world_map'];
   }else {
      return document['world_map'];
   }
}
