// Tabs

var hideLoader = function () {
  $(".loader").css({
    bottom : "7px",
    opacity: 1
  }).stop().animate({
    bottom : "-47px",
    opacity: 0
  },450,"linear",function () {
    window.requestCounter = 0;
    clearInterval(window.intv);
  });
};

var hideGenerateTabs = function (data) {
  $(".kartyWrap .karta").filter(":visible").fadeOut("fast",function () {
    $(".infoRel").stop().animate({
      bottom : -($(".infoRel").height()+7)+"px",
      opacity: 0
    },450,function () {
      $(".kartyWrap .karta, .kartyWrap .karta .kartaInner").show();
      $(".menu li a").filter(".active").removeClass('active');
      $(".menu li a:eq(0)").addClass('active');    
    });
  });
};

var showGenerateTabs = function (json) {
  //name
  $(".infoRel h2").text(json.data.place.name);
  
  // popis lokality
  var popisLokalityData = [json.data.place.measurementplace,json.data.place.stationtype,json.data.measurementdate,json.data.place.description,json.data.descriptionphoto];
  
  for(i = 0; i<=3; i++) {
    var $p = $("#popis-lokality .fl p:eq("+i+")");
    var $pStrong = $("strong",$p).html();
    $p.html('<strong>'+$pStrong+'</strong> '+popisLokalityData[i]);  
  }
  
  $("#popis-lokality").show('fast');
  
  if(popisLokalityData[4]!=="")
  {
    $("#popis-lokality .fr").html('<img src="'+popisLokalityData[4]+'" alt="'+popisLokalityData[0]+'" />');
  }
  
  // fotografie  
  var $fotog = $("#fotografie .kartaInner .clearfix");
  $fotog.empty();
  for(j = 0; j<json.data.gallery.length; j++) {
      $fotog.append('<div><a class="blank" title="'+json.data.gallery[j].name+'" href="'+json.data.gallery[j].src_big+'"><img alt="'+json.data.gallery[j].name+'" src="'+json.data.gallery[j].src+'"/><br/><span>'+json.data.gallery[j].name+'</span></a></div>');
  }
  
  // documents
  if(typeof json.data.documents[1] !== "undefined") $(".downloads a:eq(1)").attr({
    "href":json.data.documents[0].link,
    "title":json.data.documents[0].name
  }).text(json.data.documents[0].name).addClass("blank");
  if(typeof json.data.documents[0] !== "undefined") $(".downloads a:eq(0)").attr({
    "href":json.data.documents[1].link,
    "title":json.data.documents[1].name
  }).text(json.data.documents[1].name).addClass("blank");    
  
  // limity
  var d2 = json.data.place.limits.split(";");
  $("#limity-mereni .kartaInner p").html(d2[0]);

  var attributes = {};
  var flashvars = {};
 	flashvars.component_path = "/flash/limity/FlexChart.swf";
 	flashvars.area = d2[1];
 	flashvars.xml_path = "/flash/limity/limity.xml";
 	
 	var params = {};
 	params.allowscriptaccess = "always";
 	params.wmode = "opaque";
 	
 	swfobject.embedSWF("/flash/limity/limity.swf", "limityFlash", "270", "174", "9.0.0", false, flashvars, params, attributes);
   
  // celkova expozice
  
  var d = json.data.place.graph.split(";");

  if(d.length>0) {
  
    $("#celkova-expozice .fl p").html(d[0]);
  
    var attributes = {};
    var flashvars = {};
   	flashvars.component_path = "/flash/expozice/FlexChart.swf";
   	flashvars.area = d[1];
   	flashvars.xml_path = "/flash/expozice/expozice.xml";
   	
   	var params = {};
   	params.allowscriptaccess = "always";
   	params.wmode = "opaque";
   	
   	swfobject.embedSWF("/flash/expozice/expozice.swf", "graphFlash", "478", "174", "9.0.0", false, flashvars, params, attributes);
  
  }
  
  $(".infoRel").removeClass("hidden").css({
    opacity: 0,
    bottom : -($(".infoRel").height()+7)+"px"
  }).stop().animate({    
    opacity: 1,
    bottom : "7px"
  },450,function () {
    $("#popis-lokality .kartaInner").fadeIn('fast');
  });
};

var generateTabs = function (dom,id) {
  $(".loader h2").html("Nahrávám informace o měření<span></span>");
    
    var generateTabQueeManager = $.manageAjax.create('generateTabQuee', {
      queue: true, 
      maxRequests: 2, 
      abortOld: true,
      cacheResponse: true
    });
    
    $.manageAjax.add('generateTabQuee', {
      cache: false,      
      type: "GET",
      dataType: "json",
      timeout: 15*1000,
      error: function (XMLHttpRequest, textStatus, errorThrown) {
        switch(textStatus) {
          case "timeout":
            $(".loader h2").html("Načítání informací o měření trvá déle než je obvyklé. <br />Zkontrolujte si svoje připojení k internetu.");
          break;
          case "error":
            $(".loader h2").html("Aplikace nepracuje správně prosím zkuste to prosím později. <br />Pokud budou problémy přetrvávat kontaktujte naši podporu.");
          break;
          case "parsereror":            
            $(".loader h2").html("Aplikace obdržela nesprávný formát dat. <br />Pokud budou problémy přetrvávat kontaktujte naši podporu.");
          break;
          default:
            $(".loader h2").html("Neočekavaná chyba při běhu aplikace. <br />Kontaktujte naši podporu.");
          break;
        }
      },
      beforeSend: function () {
        hideGenerateTabs();
        
        $(".loader").css({
          bottom : "-47px",
          opacity: 0,
          display: "block"
        }).animate({
          bottom : "7px",
          opacity: 1
        },450);
        
        window.intv = setInterval(function () {
          var $span = $(".loader h2 span");
          if($span.text().length<=3)
          {
            $span.append(".");
          }
          else
          {
            $span.empty();
          }
        },250);
      },
      success: function(json) {
        hideLoader();
        showGenerateTabs(json); 
      }, 
      url: "/public/index?id="+id 
    });
    
    $(".abort").click(function () {
      $(".loader h2").text("Načítání dat bylo přerušeno.");
      setTimeout(function () {
        hideLoader();
      },450);
      generateTabQueeManager.abort();
      return false;
    });
};

$(window).load(function () {
  // Tabs menu
   $(".webSite .menu a").click(function() {
      var kartaID = $(this).attr("href");
      $(".webSite .info .karta").fadeOut(200);
      $(kartaID).fadeIn(500);
      $(".webSite .menu a").removeClass("active");
      $(this).addClass("active");
      return false;
   });
  
  $("a.close").click(function () {
    hideGenerateTabs();
    return false;
  });
});
