$(function()
{
  if ($.browser.msie && $.browser.version == 6)
  {
    fixAllPNG();
    fixbgpng.fnLoadPngs();
  }
  
  /**
   * Kezdő oldali scrollbar
   */
  setScrollbar();
  
  /**
   * Topmenu hover, submenu open
   */
  var topmenuTimer = null;
  var openTopmenu = null;
  $('.topMenu > ul > li').hover(function()
  {
    if (topmenuTimer)
    {
      clearTimeout(topmenuTimer);
      topmenuTimer = null;
    }

    if (openTopmenu && openTopmenu != this)
    {
      $('ul', openTopmenu).hide();
      $('.bgDiv', openTopmenu).hide();
      openTopmenu = null;
    }
    openTopmenu = this;
    
    var width = 0;
    var $ul = $('> ul', this);
    if ($ul.width() < 150) $ul.css('width', '150px');
    $ul.show();
    
    if ($.browser.msie && $.browser.version < 7)
    {
      $ul.css('width', '120px');
      $('li', $ul).css('width', '120px');
    }

    var ulMargin = parseInt($ul.css('margin-left'));
    if ($.browser.msie && $.browser.version < 7)
    {
      ulMargin += parseInt($('> a:eq(0)', this).css('padding-left'));
      ulMargin += parseInt($('> a:eq(0)', this).css('padding-right'));
    }

    width = $ul.width();
    width += ulMargin;
    

    var margin = $('> a', $ul).outerWidth() - $('> a', $ul).width()
    $('> a', $ul).css('width', $ul.width() - margin);

    if ($.browser.msie && $.browser.version < 7)
      width -= margin;
      
    $('> .bgDiv', this)
      .css({'width': (width+5) + 'px', 'height': $ul.height() + 'px'})
      .show();
      
  }, function()
  {
    var li = this;
    
    if (topmenuTimer)
    {
      clearTimeout(topmenuTimer);
      topmenuTimer = null;
    }
    
    topmenuTimer = setTimeout(function()
    {
      $('ul', li).hide();
      $('.bgDiv', li).hide();
      if (topmenuTimer)
        topmenuTimer = null;
      openTopmenu = null;
    }, 1000);
  });
  
  
  /**
   * Submenu hover, second submenu open
   */
  var openSubmenu = null;
  $('.topMenu > ul > li > ul > li').hover(function()
  {
    if (topmenuTimer)
    {
      clearTimeout(topmenuTimer);
      topmenuTimer = null;
    }

    if (openSubmenu && openSubmenu != this)
    {
      $('ul', openSubmenu).hide();
      $('.bgDiv', openSubmenu).hide();
      openSubmenu = null;
    }
    openSubmenu = this;

    var width = 0;
    var $ul = $('> ul', this);
    if ($ul.width() < 150) $ul.css('width', '150px');
    $ul.show();

    
    
    var ulMargin = 6;
    if ($.browser.msie && $.browser.version < 7)
    {
      ulMargin += parseInt($('> a:eq(0)', this).css('padding-left'));
      ulMargin += parseInt($('> a:eq(0)', this).css('padding-right'));
    }

    width = $ul.width();
    width += ulMargin;


    var margin = $('> a', $ul).outerWidth() - $('> a', $ul).width()
    $('> a', $ul).css('width', $ul.width() - margin);

    if ($.browser.msie && $.browser.version < 7)
      width -= margin;

    $('> .bgDiv', this)
      .css({'width': (width+5) + 'px', 'height': $ul.height() + 'px'})
      .show();
    
  });


  /**
   * Kék <label> elemek
   */
  $('.designCheckbox').click(function()
  {
    var meta = $(this).metadata();
    var chk = $(meta.elem, this);
    var checked = chk.hasClass(meta['class'][1]);

    if (meta.type == 'checkbox')
    {
      chk
        .removeClass(checked ? meta['class'][1] : meta['class'][0])
        .addClass(checked ? meta['class'][0] : meta['class'][1]);

      if (meta.name)
        $('input[name=' + meta.name + ']').val(checked ? '' : meta.value);
    }
    
    else if (meta.type == 'radio')
    {
      $('.designCheckbox').each(function()
      {
        var meta2 = $(this).metadata();

        if (meta2.name != meta.name) return;
        
        var chk2 = $(meta2.elem, this);
        if (meta2.value == meta.value)
        {
          chk2
            .removeClass(meta['class'][0])
            .addClass(meta['class'][1]);
            
          if (meta.name)
            $('input[name=' + meta.name + ']').val(meta.value);
        }
        else
        {
          chk2
            .removeClass(meta['class'][1])
            .addClass(meta['class'][0]);
        }
      });
    }
  });
  
  defaultInputTexts =
  [
    {
      'input'    : $("#searchForm input[name=search]"),
      'errorMsg' : $("#emptyErrorText").html(),
      'button'   : $("#searchBtn")
    },
    {
      'input'    : $('#newsLetterSubscribe input[name=name]')
      //,'button'   : $('#newsLetterSubscribe .okButton')
    },
    {
      'input'    : $('#newsLetterSubscribe input[name=email]')
      //,'button'   : $('#newsLetterSubscribe .okButton')
    },
    {
      'input'    : $('#newsLetterSubscribe input[name=address]')
      //,'button'   : $('#newsLetterSubscribe .okButton')
    }
  ];
  
  for (var i=0; i<defaultInputTexts.length; i++)
  {
    var o = defaultInputTexts[i];
    
    if (!o.input || !o.input.length) continue;
    if (o.input.hasClass('noFocus')) continue;
    o.text = o.input.val();
    o.input[0].defIdx = i;

    o.input.focus(function()
    {
      if ($(this).val() == defaultInputTexts[this.defIdx].text)
        $(this).val('');
    });

    o.input.blur(function()
    {
      if ($(this).val() == '')
        $(this).val(defaultInputTexts[this.defIdx].text);
    });
  
    if (o.button)
    {
      o.button.click(function()
      {
        for (var i=0; i<defaultInputTexts.length; i++)
        {
          var o = defaultInputTexts[i];
          if (o.button[0] != this) continue;
          
          var inp = o.input;
          if (inp.val() == defaultInputTexts[i].text)
          {
            if (typeof defaultInputTexts[i].errorMsg == 'undefined')
              $(inp).val('');
            else
            {
              alert(defaultInputTexts[i].errorMsg);
              return false;
            }
          }
        }
      });
    }
  }
  
  
  /**
   * Nyelv választás
   */
  $('.hoverElem').each(function()
  {
    var rel = this.rel;
    if (!rel) return;
    
    $('.hoverContent_' + rel).add(this).hover(function()
    {
      $('.hoverContent:not(.hoverContent_' + rel + ')').hide();
      
      var right = $('.headerRight').width() - $('.hoverElem[rel=' + rel + ']').position().left - $('.hoverContent_' + rel).width();
      right = Math.max(0, right - 5);
      $('.hoverContent_' + rel).css('right', right + 'px').show();
      
      $('.hoverContent').each(function()
      {
        if (this.timer)
        {
          clearInterval(this.timer);
          this.timer = null;
        }
      });
    }, function()
    {
      var obj = $('.hoverContent_' + rel)[0];
      obj.timer = setTimeout(function()
      {
        $('.hoverContent_' + rel).hide();
        obj.timer = null;
      }, 1000);
    });
  });
  
  $('body').click(function()
  {
    $('.hoverContent').hide().each(function()
    {
      if (this.timer)
      {
        clearInterval(this.timer);
        this.timer = null;
      }
    });
  });
  
  slideshow(4000);
});

function slideshow(speed)
{
  this.slide = function(obj)
  {
    if (typeof obj.current == 'undefined')
      obj.current = $(obj).find('li:last');
    obj.next = obj.current.prev();

    if (obj.next.length == 0)
      obj.next = $(obj).find('li:last');

    obj.current.fadeOut('normal', function()
    {
    });
    obj.next.fadeIn('normal', function()
    {
      obj.current = obj.next;
    });
  }
  var $slideshows = $('.slideshow');

  if ($slideshows.length == 0) return;

  var _this = this;
  $slideshows.each(function()
  {
    var _obj = this;
    var timer = setInterval(function()
    {
      _this.slide(_obj);

    }, speed);

    $(_obj).hover(
  		function (){
  			clearInterval(timer);
  		},
  		function ()
      {
  			timer = setInterval(function()
        {
          _this.slide(_obj);
        }, speed);
  		}
  	);
  });
}

function openPopup(anchor, w, h)
{
  if (!anchor.href) return;
  window.open(anchor.href, "","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,top=-1,left=-1,width=" + (w?w:640) + ",height=" + (h?h:480));
  return false;
}

function submitForm(id)
{
  var o = document.getElementById(id) || eval('document.' + id);
  o.submit();

  return false;
}

function printSite()
{
  window.open("nyomtatas.php?pg=" + document.URL.replace("http://" + document.domain + "/", "").replace(/\/$/, ""), "print", "status=0,toolbar=0,width=687,height=480,scrollbars=yes,resize=no");
}

function setScrollbar()
{
  if ($('#scroller-bar-drag').length == 0) return false;

  $('#scroller-content').disableTextSelect();

  var sizes = {
    scrollerHeight: $('#scroller-bar-drag').height(),
    scrollBarHeight: $('#scroller-bar-bg').height(),
    contentHeight: $('#scroller-content').height()
  }

  if (sizes.contentHeight < sizes.scrollBarHeight)
  {
    $("#scroller-bar").hide();
    return;
  }

  var scale = (sizes.contentHeight - sizes.scrollBarHeight) / (sizes.scrollBarHeight - sizes.scrollerHeight);
  var scrollerscale =  (sizes.scrollBarHeight - sizes.scrollerHeight) / (sizes.contentHeight - sizes.scrollBarHeight);

  $('#scroller-bar-drag').draggable({
    containment: 'parent'
  });


  $('#scroller-bar-drag').bind('drag', function(event, ui)
  {
     var scrollbarTop = parseInt($('#scroller-bar-drag').css('top').replace(/^(\d+)px$/, '$1'));

     if (isNaN(scrollbarTop)) scrollbarTop = 0;
     $('#scroller-content').css('top', -(scrollbarTop * scale) + 'px');
  });

  $('#scroller-content-container').mousewheel(function(event, delta)
  {
    var contentTop = parseInt($('#scroller-content').css('top').replace(/^(\d+)px$/, '$1'));
    if (isNaN(contentTop)) contentTop = 0;
    var sctop = contentTop + delta * 5;

    sctop = Math.min(0, sctop);
    sctop = Math.max(sizes.scrollBarHeight - sizes.contentHeight, sctop);
    $('#scroller-content').css('top', sctop + 'px');

    var scrollerTop = -(sctop * scrollerscale);
    scrollerTop = Math.max(0, scrollerTop);
    scrollerTop = Math.min(sizes.scrollBarHeight-sizes.scrollerHeight, scrollerTop);

    $('#scroller-bar-drag').css('top', -(sctop * scrollerscale) + 'px');

    return false;
  }, null, true);
}

function initScroller(container, scroller, opt)
{
  initScroller.defaults = {
    step: 1,
    timeout: 10,
    direction: 'left',
    stopOnMouseOver: true
  };

  container = $(container);
  scroller = $(scroller);

  if (scroller.width() <= container.width()) return false;

  opt = $.extend({}, initScroller.defaults, opt);

  var scrollerTagName = $('.partnerScroller')[0].tagName.toLowerCase();
  if (scrollerTagName == 'table')
  {
    scroller.find('tr').each(function()
    {
      $('td', this).clone().appendTo(this);
    });
    initScroller.elements = scroller.find('tr:eq(0) td');
  }
  else if (scrollerTagName == 'ul')
  {
    initScroller.elements = $('li', scroller).clone();
    initScroller.elements.appendTo(this);
  }
  else if (scrollerTagName == 'div')
  {
    initScroller.elements = $('div', scroller).clone();
    initScroller.elements.appendTo(this);
  }
  else
  {
    initScroller.elements = $('*', scroller).clone();
    initScroller.elements.appendTo(this);
  }



  initScroller.current = 0;

  if (opt.direction == 'left' || opt.direction == 'top')
    initScroller.currentSize = $(initScroller.elements[0])[opt.direction == 'left' ? 'width' : 'height']();
  else
    initScroller.currentSize = $(initScroller.elements[initScroller.elements.length-1])[opt.direction == 'right' ? 'width' : 'height']();

  initScroller.scrolling = function()
  {
    if (initScroller.scrolling.animating) return;
    initScroller.scrolling.animating = true;

    if (opt.direction == 'left' || opt.direction == 'top')
    {
      initScroller.current -= opt.step;
      scroller.css(opt.direction, initScroller.current);

      if (initScroller.currentSize <= (initScroller.current * -1))
      {
        initScroller.current += initScroller.currentSize;
        initScroller.moveToEnd();
        scroller.css(opt.direction, initScroller.current);

        initScroller.elements.push(initScroller.elements.splice(0,1)[0]);
        initScroller.currentSize = $(initScroller.elements[0])[opt.direction == 'left' ? 'width' : 'height']();
      }
    }
    else if (opt.direction == 'right' || opt.direction == 'bottom')
    {
      // todo befejezni
    }

    initScroller.scrolling.animating = false;
  }
  initScroller.scrolling.animating = false;

  /**
   * Az első elemet a legvégére rakja,
   * vagy az utolsót az elejére (iránytól függően)
   */
  initScroller.moveToEnd = function()
  {
    if (opt.direction == 'left' || opt.direction == 'top')
    {
      if (scrollerTagName == 'table')
      {
        scroller.find('tr').each(function()
        {
          $('td:last', this).after($('td:eq(0)', this));
        });
      }
      else if (scrollerTagName == 'div')
      {
        $('div:last', scroller).after($('div:eq(0)', scroller));
      }
      else if (scrollerTagName == 'ul')
      {
        $('li:last', scroller).after($('li:eq(0)', scroller));
      }
      else
      {
        $(':last', scroller).after($(':eq(0)', scroller));
      }
    }

    else if (opt.direction == 'right' || opt.direction == 'bottom')
    {
      if (scrollerTagName == 'table')
      {
        scroller.find('tr').each(function()
        {
          $('td:eq(0)', this).before($('td:last', this));
        });
      }
      else if (scrollerTagName == 'div')
      {
        $('div:eq(0)', scroller).before($('div:last', scroller));
      }
      else if (scrollerTagName == 'ul')
      {
        $('li:eq(0)', scroller).before($('li:last', scroller));
      }
      else
      {
        $(':eq(0)', scroller).before($(':last', scroller));
      }
    }
  }

  if (opt.stopOnMouseOver)
  {
    container.hover(function()
    {
      clearInterval(initScroller.timer);
      initScroller.timer = 0;
    }, function()
    {
      initScroller.timer = setInterval(initScroller.scrolling, opt.timeout);
    });
  }

  initScroller.timer = setInterval(initScroller.scrolling, opt.timeout);
}

