﻿blockUIHTML="<div id='Loading'><p>Pobieranie danych, proszę czekać...</p></div>";
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;
    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;
    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
if(!jQuery.fn.data){
 jQuery.fn.data = function( key, value ){
  var parts = key.split(".");
  parts[1] = parts[1] ? "." + parts[1] : "";
  if ( value === undefined ) {
   var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
   if ( data === undefined && this.length )
    data = jQuery.data( this[0], key );
   return data === undefined && parts[1] ?
    this.data( parts[0] ) :
    data;
  } else
   return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
    jQuery.data( this, key, value );
   });
 }
};
/*
  * autoTabs v.0.3
  */
  (function($) {
   $.fn.autoTabs = function(eo, f) {
    // Tab constructor
    function Tab(cc) {
     this.handlers = new Array();
     this.contentContainer = cc;
     this.label = cc.attr("title");
     this.visible = function(b){
      if(b === true) {
       this.contentContainer.show();
      };
      if(b === false) {
       this.contentContainer.hide();
      };
      return this;
     };
     this.setHandler = function(h) {
      this.handlers.push(h);
     };
     this.getHandlers = function() {
      return this.handlers;
     };
     this.addReaction = function(e, f) {
      $(this.handlers).each(function(){
       $(this).bind(e, f)
      });
     };
    };
    // Tab group constructor
    function TabGroup() {
     this.tabs = new Array();
     this.addTab = function(tab) {
      var group = this;
      $(tab.handlers).each(function(){
       $(this).click(function(){
        group.activateTab(tab);
       });
      });
      this.tabs.push(tab);
     };
     this.activateTab = function(tab) {
      $(this.tabs).each(function(){
       if(this == tab) {
        $(this.visible(true).getHandlers()).each(function(){$(this).addClass("active")});
       } else {
        $(this.visible(false).getHandlers()).each(function(){$(this).removeClass("active")});
       };
      });
      return tab;
     };
    };
    if($.isFunction(eo)){
     f = eo;
     eo = null;
    }else if(!$.isFunction(f)){
     f = function(){};
    };
    // extend defaults by explicitly declared options
    var options = $.extend({}, $.fn.autoTabs.defaults, eo);    
    
    //size of selection
    var length = this.length;
    return this.each(function(index){
     // save scope
     var $this = $(this);
     // support for the meta plugin
     var o = $.meta ? $.extend({}, options, $this.data()) : options;
     // create DOM object representing tab group
     var $container = o.container.clone().attr('class', o.className);
     // construct tab and tab group objects
     $this.t = new TabGroup();
     var tabCount = $this.children().length;
     $this.children().each(function(i){
      var thisTab = new Tab($(this));
      // create DOM object representing tab
      var DOMtab = o.tab.clone().css(o.css);
      if(i == 0) DOMtab.addClass("first");
      if(i+1 == tabCount) DOMtab.addClass("last");
      // find elements with no children, select the first of them, and set the text for it
      DOMtab.find("*").add(DOMtab).filter(function(){
       return $(this).children().length == 0;
      }).filter(function(i){
       return i == 0;
      }).text(thisTab.label || o.label + " " + (i + 1));
      thisTab.setHandler(DOMtab);
      $this.t.addTab(thisTab);
      DOMtab.appendTo($container);
     });
     $container.prependTo($this);
     $this.t.activateTab($this.t.tabs[o.active]);
     
     // execute callback only once, at the end of the last iteration
     if(index+1 == length)
      f();
    });
   };
   $.fn.autoTabs.defaults = {
    className: "tabs",
    active: 0,
    container: $("<ul></ul>"),
    tab: $("<li class='tab'></li>"),
    label: "Tab",
    css: {
     cursor: "pointer"
    }
   };
  })(jQuery);
// get HTML to be injected on specific user actions:START
function blockInterface() {
 $.blockUI(blockUIHTML, {marginLeft: "-131px"}) ;
} ;
/*
 * table.js
 * start
*/
var tableHTML = "<ul class='tabs'></ul><table cellpadding='0' cellspacing='0' class='search_result'><thead><tr><td colspan='666' class='first'>&nbsp;</td></tr><tr></tr><tr><td colspan='666' class='second'>&nbsp;</td></tr></thead><tbody></tbody></table><div class='pagination'><ol></ol></div>"; 
var standards = new Array("Basic offer", "Standard I", "Standard II", "Standard III");
var tabContainer = $("<li class='tab'><div></div></li>");
var UIBlocked = false;
var priceList;
var priceListText;
$(function(){
  priceListText = $("#priceListText").remove();
  priceList = $("<div id='priceList'></div>").prependTo("#content div.project").hide();
});
function prepareTable(standard){
 blockInterface();
 UIBlocked = true;
 $.ajax({
  url: '/tableInfo.html',
  type: 'POST',
  data: 'p_id='+p_id+'&standard='+standard,
  begin: function(){priceList.hide()},
  success: function(data){
   eval("var data = "+data);
   priceList.html(tableHTML).append(priceListText);
   var tabs = $(".tabs", priceList);
   if(data.standards.length>1){
    for(i=0;i<data.standards.length;i++){
     tabs.append(tabContainer.clone().addClass(standard == data.standards[i] ? "active" : "").find('div').text(standards[data.standards[i]]).end());
    };
    $(".tabs div", priceList).click(function(){
     prepareTable(data.standards[$(".tabs div", priceList).index(this)]);
    });
    $("li:last", tabs).addClass("last");
   }
   for(j=0;j<data.th.length;j++){
    $("thead tr:eq(1)", priceList).append($("<th></th>").append((j+1) != data.th.length ? "<a href='#' class='desc'></a>" : "").find('a').text(data.th[j]).click(function(){
      $(this).parent().siblings().find("a").removeClass("desc").addClass("asc").removeClass("activeSort");
   $(this).toggleClass("desc").toggleClass("asc").addClass("activeSort");
   $(".pagination ol li", priceList).removeClass("active").slice(0,1).addClass("active");
   getPage(
  1, //page
  data.standards[$(".tabs div", priceList).index($(".tabs .active div", priceList).get(0))], //standard
  $("thead th a", priceList).index(this), //column to be sorted by
  $(this).hasClass("asc") ? "asc" : "desc", //sort mode
  $("ul.tabs li", priceList).length ? $("ul.tabs li.active", priceList).data("tabID") : null
 );
    }).end());
   };
   for(k=0;k<data.pages;k++){
    $(".pagination ol", priceList).append(
     $("<li></li>").addClass(data.pages-1==k ? "last" : "").addClass(k == 0 ? "active" : "").append(
      $("<a href='#'></a>").click(
       function(){
        var clickedObj = $(this);
        $(".pagination ol li", priceList).each(function(i){
         $("a", this).get(0) == clickedObj.get(0) ?
          $(this).addClass("active") :
          $(this).removeClass("active");
        });
        $("tbody", priceList).empty();
  getPage(
         parseInt($(this).text(), 10), //page
         data.standards[$(".tabs div", priceList).index($(".tabs .active div", priceList).get(0))], //standard
         $("th a", priceList).index($("thead th a.activeSort", priceList).get(0)), //column to be sorted by
         ($("th a.activeSort", priceList).attr("class") || "").match(/(asc)|(desc)/gi), //sort mode
   $("ul.tabs li", priceList).length ? $("ul.tabs li.active", priceList).data("tabID") : null
        );
        return false;
       }
      ).text(k > 8 ? (k + 1) : "0" + (k + 1))
     )
    )
   };
   if(data.tabs) {
    for(t=0;t<data.tabs.length;t++) {
     var currentTab = tabContainer.clone().find("div").text(data.tabs[t].name).end();
  if(data.tabs[t]["default"]){
  currentTab.addClass("active");
     };
     if(t == 0) {
      currentTab.addClass("first");
     };
     if(t == data.tabs.length-1) {
      currentTab.addClass("last");
     };
     currentTab.data("tabID", data.tabs[t].id).click(function(){
      getPage(1,standard,null,null,$(this).data("tabID"));
      $("ul.tabs li", priceList).removeClass("active");
      $("div.pagination li", priceList).removeClass("active").slice(0,1).addClass("active");
   $(this).addClass("active");
     });
     $("ul.tabs", priceList).append(currentTab);
    };
   };
   getPage(1,standard);
  }
 });
}
function getPage(page, standard, sort, dir, tab){
 if(!UIBlocked) {
  blockInterface();
 }
 $.ajax({
  url: '/tableData.html',
  type: 'POST',
  /*
  * int page - number of page
  * int standard - index of standard, relevant to the standards array (standards[])
  * int sort - index of table column by which data is sorted
  * String dir - asc || desc
  */
  begin: function(){
   priceList.hide();
  },
  data: '&page='+page+'&p_id='+p_id+'&standard='+standard+'&sort='+sort+'&dir='+dir+'&tab='+ (tab ? tab: null),
  success: function(data){
   eval("var data = "+data);
   $("tbody", priceList).empty();
   for(i=0;i<data.length;i++){    
    var row = $("<tr></tr>");
    for(j=0;j<data[i].length;j++){
     if((j+1)!=data[i].length) {
      row.append($("<td></td>").text(data[i][j]));
     } else {
      row.append($("<td></td>").html("<a class='more' href='javascript:"+data[i][j]+"'></a>"));
     }
    };
    $("tbody", priceList).append(row);
   };
   $("tbody tr:odd", priceList).addClass("odd");
   $.unblockUI();
   UIBlocked = false;
   priceList.animate({opacity:"show"},333);
  }
 });
}
/*
 * table.js
 * end
*/
$(function() {
 if($.browser.mozilla) {
  $(window).unload(function() {
   $("*").unbind() ;
  } ) ;
 } ;
// main navigation dynamics
var navgroupCounter = $("#navigation .navgroup").size();
var imgCounter = $('#navigation').find('h2, .navgroup li').size();
var imgLoaded = 0;
var measureArr = new Array();
var measureUnit = $('<img />');
var measureContainer = $("<div id='measureContainer'></div>").prependTo('body');
$('#navigation').find('h2, ul.navgroup').each(function(i){
    measureArr[i] = new Array();
    $(".imgReplacement", this).each(function(j){
      measureArr[i][j] = measureUnit.clone(); 
      measureArr[i][j].appendTo(measureContainer).load(function(){
        imgLoaded++;
        if(imgLoaded == imgCounter){
          $('#navigation').find('h2, ul.navgroup').each(function(i){
            var maxWidth = 0;
            $(measureArr[i]).each(function(){
                maxWidth = Math.max(maxWidth, this.width());
            });
            $(".imgReplacement", this).width(maxWidth);
          }).end().css({left: 0})
        };
      }).attr('src', $(this).attr('style').match(/\/img.*\.gif/)[0]);
    });
}).not('h2').css({display:"none"}).end().not('.navgroup').parent().hover(function(){ 
 $('.navgroup', this).fadeIn(100);
}, function(){
 $('.navgroup', this).fadeOut(100);
}).find("h2,li").hover(function(){
  $(this).toggleClass('hover');
}, function(){
  $(this).toggleClass('hover');
});
// smooth scrolling to top
 $("#footer").
 find("a.ToTop").click(function() {
  $(this).blur();
  $("html,body").animate({scrollTop: 0}, 666);
  return false;
 } );
// history back on "back" links
 $(".back a, a.back").click(function() {
  window.history.back() ;
 } ) ;
// user actions menu
 $("#content .print").click(function() {
  window.print() ;
  this.blur() ;
  return false ;
 } ) ;
 if(!$.browser.safari) {
  $("#content .AddToFavourites").click(function(){
   if (window.sidebar) { // Mozilla Firefox
    window.sidebar.addPanel(document.title, document.location.href,"");
   } else if(window.external) { // IE
    window.external.AddFavorite( document.location.href, document.title);
   } else if(window.opera && window.print) { // Opera
    $(this).attr("rel", "sidebar");
    return true;
   }
   return false
  });
 } else {
  $("#content .AddToFavourites").remove()
 }
$("#MainContainer").filter(function(){
    return $(this).is('.mainPage');
}).find("#content .emphasizedSections li").hover(function() {
 $(this).find("h2").stop().fadeTo(400, 0.65) ; 
}, function() {
 $(this).find("h2").stop().fadeTo(400, 0.9) ;
} )
// MANAGERS
 if($('#content .managementList').size()){
  $('#content .managementList a.desc').click(function(){
        $('#content a.descActive').removeClass('descActive').addClass('desc');
        $('#content .additionalDescription.visible').hide();
        $(this).removeClass('desc').addClass('descActive').next().animate({opacity:"toggle"},200).addClass('visible');
        if($.browser.msie){
            $(this).parents('li:eq(0)').removeClass('zIndexFix').siblings().addClass('zIndexFix');
        };
        this.blur();
      });
      $('#content .managementList a.close').click(function(){
       $(this).parent().animate({opacity:"toggle"},200);
       $('#content a.descActive').removeClass('descActive').addClass('desc');
       this.blur();
      });
 }
}
);
