$(function() {
  $("#button").click(function() {

    var name    	= $('input[name=name]');
    var surname 	= $('input[name=surname]');
    var email   	= $('input[name=email]');
    var postUrl 	= $('input[name=postUrl]');
    var eventId 	= $('input[name=eventId]');
    var csrftoken   = $('input[name=_csrf_token]');

    var data= 'name='+name.val()+'&surname='+surname.val()+'&email='+email.val()+'&eventId='+eventId.val()+'&csrftoken='+csrftoken.val();

    if ( $.trim(name.val()).length <= 2 ) {
      $("label#name_error").show();
      $("input#name").addClass('modal_error');
      return false;
    } else {
      $("label#name_error").hide();
      $("input#name").removeClass('modal_error');
    }

    if ( $.trim(surname.val()).length <= 2 ) {
      $("label#surname_error").show();
      $("input#surname").addClass('modal_error');
      return false;
    } else {
      $("label#surname_error").hide();
      $("input#surname").removeClass('modal_error');
    }

    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.val()) ) {
      $("label#email_error").hide();
      $("input#email").removeClass('modal_error');
    } else {
      $("label#email_error").html('Błędny email.');
      $("label#email_error").show();
      $("input#email").addClass('modal_error');
      return false;
    }

    $.ajax({
        url:     postUrl.val(),
        type:    "POST",
        data:    data,
        cache:   false,
      success: function(html) {
         $('#content_modal').html(html);
      }
    });
    return false;
    });
});

$(document).ready(function() {
  $("#showMap").fancybox({
    'overlayShow'		: false,
    'autoScale'			: true,
    'transitionIn'		: 'elastic',
    'transitionOut'		: 'elastic',
    'type'				: 'image'
  });
});

$(document).ready(function() {
  $(".ticket_order").fancybox({
    'overlayShow'		: false,
    'autoDimensions'	: true,
    'scrolling'		    : 'no',
    'transitionIn'		: 'elastic',
    'transitionOut'		: 'elastic',
    'onComplete' : applyCufon
    });
});

function applyCufon(){
  Cufon.replace('#content_modal h2, button', {
    hoverables: {
      a: true,
      li: true,
      em: true,
      span: true
      },
    hover: true
  });
}


function css() {

  $('.link-print').bind('click',function(){ window.print(); });

  $('input[type=search],input[type=email],input[type=text]').clear();

  $('#wall-mod .img, article .img').corners({sizeX: 157, sizeY: 154, sufix: 1});
  $('#content .mod-top .img, .content .mod-top .img, .mod-curious .img, .mod-gal .img, .mod-objects .img').corners({sizeX: 71, sizeY: 71, sufix: 2});
  $('.mod-remcomendations .img, .mod-cat .img, .mod-related .img, .mod-top.mod-paging .img').corners({sizeX: 45, sizeY: 45, sufix: 3});


  $('#slider').slide();
  $('.mod-paging').banner({Leap: 0, Step: 660});
  $('#wall-mod').banner({Animate: true, Interval:  5000, Leap: 0, Step: 660});
  $('#calendar-mod').date_input({ display_inline: true });
  $('#timer strong').timer();
  $('.mod-tickets').toggleHeight('30px');
  $('.side-bar-1 .mod-tabs').sideTabs();
  $('.side-bar-1 .mod-tabs .event-list').jScrollPane();

  $('.mod-gal .img, .mod-ticket .link-more').fancybox();

  $('article li:has(ul)').addClass('parent');

  /* Szybka nawigacja: aktualizacja kalendarza przy zmianie day */
  $('#fm').change(function(){
    month = $(this).val();
    year = $('#fy').val() != 0 ? $('#fy').val() : -1;

    if(month != 0)
      $('#calendar-mod').empty().date_input({
        display_inline	: true,
        start_month		: month,
        start_year		: year
      });
  });

  $('#fy').change(function(){
    month = $('#fm').val() != 0 ? $('#fm').val() : -1;
    year = $(this).val();
    if(month != 0)
      $('#calendar-mod').empty().date_input({
        display_inline	: true,
        start_month		: month,
        start_year		: year
      });
  });

  /* CUFON */
  Cufon.replace('nav li a, #welcome-mod>a:not(.link-logged), #quick-nav-mod>h5, #lang-mod a, #content h2, #content h3, #content h4, h1, .mod>h2, .mod>h4, .mod fieldset>h4, #wall-mod h4, #wall-mod h4+strong, #wall-mod time, #timer span:first-child, .link-change, button', {
    hoverables: {
      a: true,
      li: true,
      em: true,
      span: true
      },
    hover: true
  });

  /*
   * NEWSLETTER
   * dodatkowe opcje
   */
  $('.mod-newsletter .link-more').unbind().bind('click',function(e){
    e.preventDefault();
    $('.mod-newsletter li').not(':first-child').toggle();

  });

  /* G�osowanie */
  $('.vote-form ul.votes').each(function(){
    $(this).find('a').click(function(v){
      v.preventDefault();
      _rate = $(this).attr('title');
      $(this).parent().siblings('.act').css('width',_rate*20 + '%');
      $(this).parents('ul.votes').next('input').val(_rate);
    });
  });


}


function ie() {
  /* go on for IE in generall */
  if($.browser.msie){

    /* take care IE 7 only */
    if($.browser.version <= 7) {


      $('input').ieClass('type');

      $('#breadcrumbs-mod li, .mod-breadcrumbs li').append('<span class="after">\\</span>');
      $('#wall-mod .link-more, .mod-top .link-more').prepend('<span class="before"></span>');


      $('div+div').addClass('sibling');
    }

    $('#page input[type=submit]').wrap('<span type="submit"></span>');
    $('#page input[type=reset]').wrap('<span type="reset"></span>');

    $('div:last-child, ul:last-child, li:last-child, tr:last-child, th:last-child, td:last-child').addClass('last-child');
    $('tr:odd').addClass('odd');
    $('tr:even, .mod-top.mod-paging .event-list>li:even').addClass('even');

    $('.mod-gal li li, .mod-cat li').each(function(l){
      if(l%4 == 0)
        $(this).addClass('nth-of-type4');
    });


    function beforePrint(){
      $('nav ul, footer ul, aside').wrap('<div class="hide"></div>');
      $('header').wrap('<div class="header"></div>');
      $('aside').wrap('<div class="aside"></div>');
      $('article').wrap('<div class="article"></div>');
      $('footer').wrap('<div class="footer"></div>');

    }
    function afterPrint(){
      $('nav ul, footer ul, aside').unwrap();
      $('header, aside, article, footer, .mod-frm').unwrap();
    }

    window.attachEvent('onbeforeprint', beforePrint);
    window.attachEvent('onafterprint', afterPrint);

  }

}

if($.browser.msie){
  var html5Set = "abbr,article,aside,nav,canvas,footer,header,section,time".split(','),i=html5Set.length;
  while (i--){
    document.createElement(html5Set[i])
  }
}

$(document).ready(css);
$(document).ready(ie);

$.fn.extend({
  ieClass: function(ieAttr) {
    return this.each(function(){

      $(this).addClass($(this).attr(ieAttr));

    });
  }, // ieClass

  unwrap: function() {
    this.parent(':not(body)').each(function(){
      $(this).replaceWith( this.childNodes );
    });

    return this;
  }, // unwrap

  clear: function(){
    return this.each(function(i){
      var val;

      $(this).focus(function(){
        val = $(this).val();
        $(this).attr('rel',val)
        $(this).val('');
      }); // focus

      $(this).blur(function(){
        val = $(this).attr('rel');
        if($(this).val() == ''){
          $(this).removeAttr('rel');
          $(this).val(val);
        }
      });	// blur

    });
  }, // clear

  toggleHeight: function(h) {
    return this.each(function(){

      _label = $(this).attr('data-label').split('|');

      if($(this).is('.hide'))
        $(this).append('<span class="link-toggle">'+_label[1]+'</span>');
      else
        $(this).append('<span class="link-toggle">'+_label[0]+'</span>');

      $(this).find('.link-toggle').unbind().bind('click',function(){
        _toogleLink = $(this);
        _toggleElem = $(this).parent();

        if(_toggleElem.is('.hide')){
          _toggleElem.removeClass('hide');
          _toogleLink.text(_label[0]);
        return false;
        }
        else {
          _toggleElem.addClass('hide');
          _toogleLink.text(_label[1]);
        }
      });
    });
  }, // unwrap

  timer: function() {
    return this.each(function(){

      var t = {
        elem  : $(this),
        end   : $('#event-quick-data time').attr('datetime').split('T')
      }

      t.hours = t.end[1].split(':');

      _date = t.end[0].split('-');
      _end = new Date(_date[0],_date[1]-1,_date[2], t.hours[0], t.hours[1]); // yyyy,mm-1,dd
      t.today = new Date();

      function timeCount() {
        t.today = new Date();

        __t = (_end.getTime() - t.today.getTime());

        if (__t < 0 ) {

          _sec  = -1;
          _hrs  = -1;
          _min  = -1;
          _days = -1;

        } else {

          t.day = __t/(24 * 60 * 60 * 1000);
          _days = Math.floor(t.day);

          t.hour = ((t.day-_days)*24)+t.hours[0];
          _hrs = Math.floor(t.hour);

          t.min = ((t.hour - _hrs)*60)+t.hours[1];
          _min = Math.floor(t.min);

          _sec = Math.floor((t.min - _min)*60);

          if(_hrs<10)
            _hrs = '0' + _hrs;
          if(_min<10)
            _min = '0' + _min;
          if(_sec<10)
            _sec = '0' + _sec;
        }
      }

      function timeUpdate() {
        timeCount();

        if(_days > 0 || _hrs > 0 || _min > 0 || _sec > 0) {
          _days = _days < 0 ? 0 : _days;
          _hrs = _hrs < 0 ? 0 : _hrs;
          _min = _min < 0 ? 0 : _min;
          _sec = _sec < 0 ? 0 : _sec;
          t_n = setTimeout(timeUpdate, 1000);
          t.elem.text(_days+':'+_hrs+':'+_min+':'+_sec);

        }
        else {
          t.elem.text('00:00:00:00');
        }

        Cufon.replace(t.elem);
      }

      // licz
      timeUpdate();
    });
  }, // timer
  sideTabs: function(){
    return this.each(function(s){

      _tab = {
        root	: $(this),
        nav		: '',
        item	: '',
        encode	: '',
        cls		: '',
        callback: ''
      }

      _tab.root.prepend('<ul class="tabs-nav"></ul>');
      _tab.nav = _tab.root.find('.tabs-nav');

      _tab.root.find('.mod').each(function(i){
        _tab.cls = $(this).attr('class').split('-')[1];

        _tab.item = $(this).children('h4').text();
        _tab.nav.append('<li data-callback="'+i+'"><span>'+_tab.item+'</span></li>');
        _tab.encode = _tab.encode + _tab.cls;
      });


      _tab.root.attr('data-id',_tab.encode).find('.mod').eq(0).css('z-index',2);

      _tab.nav.find('li').eq(0).addClass('act');



      _tab.nav.find('li').unbind().bind('click',function(){
        _tab.callback = $(this).attr('data-callback');
        _tab.root = $(this).parent().parent();
        _tab.encode = _tab.root.attr('data-id');

        $(this).addClass('act').siblings().removeClass('act');
        _tab.root.find('.mod').css('z-index',1).eq(_tab.callback).css('z-index',2);

      });


    });
  }
});



$.fn.corners = function(option) {
  option = $.extend({
    nw: 1,
    ne: 1,
    sw: 1,
    se: 1,
    sufix: 1,
    sizeX: 5,
    sizeY: 5,
    sizeU: 'px',
    border: false,
    z_index: 1
  }, option);

  return this.each(function(i){
    path = 'images/';


    if(option.nw)
      $(this).append('<span class="corner corner-nw"></span>');
    if(option.ne)
      $(this).append('<span class="corner corner-ne"></span>');
    if(option.sw)
      $(this).append('<span class="corner corner-sw"></span>');
    if(option.se)
      $(this).append('<span class="corner corner-se"></span>');

    if(option.border == false){
      cornerBorder = parseInt($(this).css('border-width'));
      cornerBorder = cornerBorder > 0 ? '-'+cornerBorder+'px' : '0';
    }
    else
      cornerBorder = '-'+option.border+'px';


    $(this).css('position','relative').children('.corner').css({
      'position'	: 'absolute',
      'width'		: option.sizeX + option.sizeU,
      'height'	: option.sizeY + option.sizeU,
      'z-index'	: option.z_index,
      'background': 'url(/'+path+'img-cor-'+option.sufix+'.png) no-repeat 0 0'
    });


    $(this).children('.corner-nw').css({
      'top'	: cornerBorder,
      'left'	: cornerBorder,
      'background-position': '0 0'
    });
    $(this).children('.corner-ne').css({
      'top'	: cornerBorder,
      'right'	: cornerBorder,
      'background-position': '100% 0'
    });
    $(this).children('.corner-sw').css({
      'bottom': cornerBorder,
      'left'	: cornerBorder,
      'background-position': '0 100%'
    });
    $(this).children('.corner-se').css({
      'bottom': cornerBorder,
      'right'	: cornerBorder,
      'background-position': '100% 100%'
    });

  }); // each
}


$.fn.banner = function(set){
  set = jQuery.extend({
    Animate	: false,
    Interval: 1000,
    Leap	: 500,
    Step	: 640
  }, set);

  return this.each(function(i){
    var  _nav;

    $this = $(this);

    _banner = getRootElements($(this).find('.mod-banner'));


    _banner.item.eq(0).show();
    if(_banner.size >1)
      build();


    function build(){
      var html_nav = '';

      _banner.root.attr('data-step',0);
      _banner.element.width(_banner.size*set.Step);

      html_nav = '<div class="banner-nav" style="max-width:'+(_banner.item.size()+2)*20+'">';
      html_nav += '<a href="#" data-callback="-1" class="banner-step banner-prev">poprzednie</a>';

      html_nav += '<ul class="banner-paging">';

      for(t=1;t<=_banner.item.size();t++){
        html_nav += '<li><a href="#" data-callback="'+(t-1)+'">'+t+'</a></li>';
      }
      html_nav += '</ul>';

      html_nav += '<a href="#" data-callback="1" class="banner-step banner-next">nastepne</a>';
      html_nav += '</div>';


      _banner.root.after(html_nav);
      _nav = getNavElements(_banner.root.next());

    }


    _nav.item.eq(0).addClass('act');

    _nav.item.find('a').unbind().bind('click',function(e){
      e.preventDefault();

      _banner = getRootElements($(this).parents('.banner-nav').prev('.mod-banner'));
      _nav = getNavElements(_banner.root.next());

      _callback = $(this).attr('data-callback');

      animSlider(_callback,0);

    });

    _nav.step.unbind().bind('click',function(e){
      e.preventDefault();

      _banner = getRootElements($(this).parents('.banner-nav').prev('.mod-banner'));
      _nav = getNavElements(_banner.root.next());


      _step = parseInt($(this).attr('data-callback'));
      _callback = parseInt(_banner.root.attr('data-step'))+_step;


      animSlider(_callback,_step);
    });



    function setAnimation(){

      _banner = getRootElements($this.find('.mod-banner'));

      _callback = parseInt(_banner.root.attr('data-step'))+1;

      animSlider(_callback,1);
    }

    function animSlider(t,s){
      if(_banner.onhold){

        _nav.item.removeClass('act');
        eq = t;

        if(t < -1)
          t = _banner.size-1

        if(t > _banner.size)
          t = 0

        if(t < 0)
          eq = _banner.size-1

        if(t >= _banner.size)
          eq = 0


        _nav.item.eq(eq).addClass('act');
        _banner.root.attr('data-step',eq);



        _banner.onhold = false;

        if(t == _banner.size && s == 1){
          _banner.element.animate({left: -1*t*set.Step+'px'}, set.Leap,function(){
            $(this).css('left',0);
            _banner.onhold = true;
          });

        }
        else if(t < 0 && s == -1){
          _banner.element.animate({left: -1*t*set.Step+'px'}, set.Leap,function(){
            $(this).css('left', (-1*_banner.size*set.Step)+set.Step+'px');
            _banner.onhold = true;
          });

        }
        else{
          _banner.element.animate({left: -1*t*set.Step+'px'}, set.Leap,function(){

            _banner.onhold = true;
          });
        }

      }

    } // function

    if(set.Animate)
      si = setInterval(setAnimation, set.Interval);
    else
      si = false;

    if(si){
      _banner = getRootElements($(this).find('.mod-banner'));
      _banner.root.mouseover(function(){
        clearInterval(si);
      });

      _banner.root.mouseout(function(){
        si = setInterval(setAnimation, set.Interval);
      });
    }// if(si)

    function getRootElements(elem){
      var _banner = {
        root	:	elem,
        copy	: 	'',
        onhold	:	true,
        element : elem.children('ul'),
        item 	: elem.children('ul').children('li'),
        size 	: elem.children('ul').children('li').size()
      }

      return _banner;
    }

    function getNavElements(elem){
      var _nav = {
        root	:	elem.find('.banner-paging'),
        item	:	elem.find('.banner-paging').find('li'),
        step	:	elem.find('.banner-step'),
        prev	:	elem.find('.banner-prev'),
        next	:	elem.find('.banner-next')
      }

      return _nav;
    }

  }); // each
}

$.extend({
    getUrlVars: function(){
      var vars = [], hash;
      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
      for(var i = 0; i < hashes.length; i++)
      {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
      }
      return vars;
    },
    getUrlVar: function(name){
      return $.getUrlVars()[name];
    }
  });

$.fn.slide = function() {


  return this.each(function(i){

    var scrollPane = $(this);
    var scrollContent = scrollPane.find('ul');
    var scrollWidth = 0;
    scrollContent.find('li').each(function(){
      scrollWidth = scrollWidth + $(this).outerWidth();
    });

    scrollContent.css('width',scrollWidth+'px');


    //build slider
    var scrollbar = $('#slider-scroll').slider({
      slide:function(e, ui){
        if( scrollContent.width() > scrollPane.width() ){ scrollContent.css('margin-left', Math.round( ui.value / 100 * ( scrollPane.width() - scrollContent.width() )) + 'px'); }
        else { scrollContent.css('margin-left', 0); }
      }
    });

    //append icon to handle
    var handleHelper = scrollbar.find('.ui-slider-handle')
    .mousedown(function(){
      scrollbar.width( handleHelper.width() );
    })
    .mouseup(function(){
      scrollbar.width( '100%' );
    })
    .append('<span class="ui-icon ui-icon-grip-dotted-vertical"></span>')
    .wrap('<div class="ui-handle-helper-parent"></div>').parent();

    //change overflow to hidden now that slider handles the scrolling
    scrollPane.css('overflow','hidden');


    //reset slider value based on scroll content position
    function resetValue(){
      var remainder = scrollPane.width() - scrollContent.width();
      var leftVal = scrollContent.css('margin-left') == 'auto' ? 0 : parseInt(scrollContent.css('margin-left'));
      var percentage = Math.round(leftVal / remainder * 100);
      scrollbar.slider("value", percentage);
    }
    //if the slider is 100% and window gets larger, reveal content
    function reflowContent(){
        var showing = scrollContent.width() + parseInt( scrollContent.css('margin-left') );
        var gap = scrollPane.width() - showing;
        if(gap > 0){
          scrollContent.css('margin-left', parseInt( scrollContent.css('margin-left') ) + gap);
        }
    }



  }); // each
}

