$(document).ready(function() {
  initSlider();
  
  $('#ohjelmakartta li:not(.hasP) a').click(function() { return false; });
  
  $('form:not(.nocheck)').submit(checkFields);
  
  $('#kampanjalaskuri .laskentaKentta').each(function() {
    var select = $(this).find('select').hide();
    var x = $(this);
    
    var slider = $('<div />').insertAfter(select).slider({
      animate: true,
      min: 1,
      max: select.find('option').length,
      range: "min",
      value: select.find('option:selected').prevAll().length+1,
      slide: function( event, ui ) {
        select[0].selectedIndex = ui.value - 1;
        select.trigger('change');
      },
      change: function( event, ui ) {
        select[0].selectedIndex = ui.value - 1;
        select.trigger('change');
      }
    });

    select.change(function() {
      x.find('.name').val(select.find('option:selected').text());
      x.find('.value').val(select.val());
      
      calcSpot();
    }).trigger('change');
    
    x.find('.name').change(function() {
      $(this).val(parseInt($(this).val()));
      x.find('.control > div').slider('option','value',select.find('option:contains('+$(this).val()+')').prevAll().length+1);
    });
  });
});

var sliderActive = true;

function initSlider() {
  $('#carousel').hover(function() {
    sliderActive = false;
  },function() {
    sliderActive = true;
  });
  
  $('#carousel #slidePoints a').click(function() { slideTo($(this)); return false; });
  
  $('#carousel #slideNav .prev').click(function() { 
    if($('#carousel #slideTabs ul li.activeSlide').prev().length) {
      $('#carousel #slideTabs ul li.activeSlide').prev().find('a').click();
    }
    else {
      $('#carousel #slideTabs ul li:last a').click();
    }
    return false;
  });
  $('#carousel #slideNav .next').click(function() {
    if($('#carousel #slideTabs ul li.activeSlide').next().length) {
      $('#carousel #slideTabs ul li.activeSlide').next().find('a').click();
    }
    else {
      $('#carousel #slideTabs ul li:first a').click();
    }
    return false;
  });
  
  $('#carousel #slideTabs a').click(function() {
    slideTo($(this).parent());
    return false;
  });
  
  setTimeout(slideTimeOut,120000);
}
function slideTo(obj) {
  var prev = obj.prevAll().length;
  
  $('#carousel #slideContent a:eq('+prev+')').fadeIn(400).siblings().fadeOut(400);
  $('#carousel #slidePoints a:eq('+prev+')').addClass('activePoint').siblings().removeClass('activePoint');
  $('#carousel #slideTabs ul li:eq('+prev+')').addClass('activeSlide').siblings().removeClass('activeSlide');
}
function slideTimeOut() {
  if(sliderActive) {
    if($('#carousel #slideTabs ul li.activeSlide').next().length) {
      $('#carousel #slideTabs ul li.activeSlide').next().find('a').click();
    }
    else {
      $('#carousel #slideTabs ul li:first a').click();
    }
  }
  
  setTimeout(slideTimeOut,5000);
}

function checkFields() {
  var form = $(this);
  var error = false;
  var titles = [];
  
  $.each(form.find('.mandatory'),function() {
    if($(this).val().length == 0 || $(this).hasClass('checkError') || ($(this).parents('.field_wrapper').hasClass('email') && !checkEmail($(this).val()))) {
      $(this).parent().addClass('required');
      titles.push($(this).parent().prev().text().replace(' *',''));
      error = true;
    }
    else {
      $(this).parent().removeClass('required');
    }
  })
  
  if(error) {
    if(!form.find('.errormessage').length) {
      $('<ul class="errormessage" />').insertBefore(form.find('.button.submit'));
    }
    
    var ul = form.find('.errormessage');
    ul.html('');
    
    for(var i = 0;i < titles.length;i++) {
      ul.append('<li>'+titles[i]+'-kenttä on pakollinen.</li>');
    }
    
    ul.show();
  }
  else {
    ul.hide();
  }
  return (error) ? false : true;
}
function checkEmail(value) {
  var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return (filter.test(value)) ? true : false;
}

function calcSpot() {
  var tprPrice = 300;
  var contactMultiplier = 13470;
  var discount2 = 0.85;
  
  var multiplier = parseFloat($('#kampanjalaskuri .laskentaKentta.length .value').val());
  var tpr = parseInt($('#kampanjalaskuri .laskentaKentta.tpr .value').val());
  var discount = parseInt($('#kampanjalaskuri .laskentaKentta.discount .value').val());
  
  if(isNaN(multiplier) || isNaN(tpr) || isNaN(discount)) { 
    var price = 0;
    var pricePre = price;
    var contacts = 0;
  }
  else {
    var price = tpr*tprPrice*multiplier;
    var pricePre = price;
    price = Math.round(price*(1-(discount/100))*discount2);
  
    var contacts = Math.round(contactMultiplier*tpr);
  }
  
  $('#kampanjalaskuri .laskentaKentta .price input').val(number_format(price,0,'',' ')+' €');
  $('#kampanjalaskuri .laskentaKentta .contacts input').val(number_format(contacts,0,'',' '));
  
  $('#laskentaKooste span.length').html(parseFloat($('#kampanjalaskuri .laskentaKentta.length .name').val()));
  $('#laskentaKooste span.tpr').html(tpr);
  $('#laskentaKooste span.discount').html(discount+' %');
  $('#laskentaKooste span.pricePre').html(number_format(pricePre,0,'',' ')+' €');
  $('#laskentaKooste input.pricePre').val(number_format(pricePre,0,'',' ')+' €');
  $('#laskentaKooste span.price').html(number_format(price,0,'',' ')+' €');
  $('#laskentaKooste span.contacts').html(number_format(contacts,0,'',' '));
  
}

function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // +      input by: Amirouche
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    // *    example 13: number_format('1 000,50', 2, '.', ' ');
    // *    returns 13: '100 050.00'
    // Strip all characters but numerical ones.
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}
/* */
