$(document).ready(function(){

  jQuery.fn.heightFix = function(options){
    var opt = jQuery.extend({
      area: "normal",
      type: "single"
    }, options);
    return this.each(function(){
      if (opt.type == "single") {
        if (opt.area == "outer") {
          var height = $(this).outerHeight();
        } else {
          var height = $(this).height();
        }
        $(this).css({height:height});
      }
    });
  };

  if (/MSIE 6/i.test(navigator.userAgent) || /MSIE 7/i.test(navigator.userAgent)) {
    $("hr").remove();
    $(".classes-title .title").css({
      width: 20
    });
  }
  if (/MSIE 6/i.test(navigator.userAgent) == false) {
    Cufon.replace("h1");
    Cufon.replace(".etusivu h2");
    Cufon.replace(".banner-slider-text");
  }
  if (/MSIE/i.test(navigator.userAgent)) {
    $(".person .description").css({
      border: "1px solid #a3c3db"
    });
    $(".menu-dropdown").css({
      border: "1px solid #ddd"
    });
  }
  
  $("ul").each(function(){
    $(this).find("li").last().addClass("last");
    $(this).find("li").first().addClass("first");
  });
  
  $("table").each(function(){
    if ( $(this).find("tr").size() > 1 ) {
      $(this).find("tr").last().addClass("last");
      $(this).find("tr").first().addClass("first");
    }
  });
  
  $("tr").each(function(){
    if ( $(this).find("td").size() > 1 ) {
      $(this).find("td").last().addClass("last");
      $(this).find("td").first().addClass("first");
    }
    if ( $(this).find("th").size() > 1 ) {
      $(this).find("th").last().addClass("last");
      $(this).find("th").first().addClass("first");
    }
  });
  
  $(".double").last().addClass("last");
  
  $(".text").inputDefault();
  $("textarea").inputDefault();
  
  $("#classes .btn").qnote();
  $("#hinnasto .btn").qnote();
  
  //dropdown
  
  $("#menu .palvelut").mouseenter(function(){
    $(".menu-dropdown").slideDown(200, "easeInOutExpo");
  });
  $("#menu .palvelut").parent().mouseleave(function(){
    $(".menu-dropdown").stop(true,true).slideUp(200, "easeInOutExpo");
  });
  
  
  //BANNER
  
  var animDur = 300;
  var animDurImg = 600;
  var easing = "easeInOutExpo";
  
  $("#banner-left h2:last").addClass("last");
  
  $(".banner-state").first().addClass("act");
  function bannerTextPos() {
    $(".banner-slider-text").each(function(){
      //console.log($(this).outerHeight());
      $(this).css({
        bottom: - $(this).outerHeight()
      });
    });
  }
  
  $("#banner-slider ul").css({
    width: $("#banner-slider li").size() * $("#banner-slider li").width()
  });
  
  
  //init
  bannerTextPos();
  $(".banner-slider-text").first().animate({
    bottom: 5
  }, animDur);
  $("#banner-controls-left").hide();
  $("#banner-slider li").first().addClass("act");
  $("#banner-slider li").hide().first().show();
  
  for (i=0;i<$("#banner-slider li").size();i++) {
    $("#banner-controls-states").append("<div class='banner-state' />");
  }
  
  $("#banner-controls-states").css({
    left: ( $("#banner-controls").width() / 2 ) - ( $("#banner-controls-states").width() / 2 )
  });
  
  $(".banner-state").first().addClass("act");
  
  var bannerPos = 0;
  var maxPos = $("#banner-slider li").size() -1;
  
  function bannerNext() {
    bannerPos++;
    if (bannerPos == maxPos) {
      $("#banner-controls-right").fadeOut(animDur);
    }
    if (bannerPos > maxPos) {
      bannerPos = maxPos;
      return false;
    }
    $(".banner-state.act").removeClass("act").next().addClass("act");
    if ($("#banner-controls-left").not(":visible")) {
      $("#banner-controls-left").fadeIn(animDur);
    }
    $(".banner-slider-text").eq(bannerPos-1).animate({
      bottom: -100
    }, animDur, easing, function() { 
      bannerTextPos();
      $("#banner-slider ul").animate({
        marginLeft: - ( bannerPos * $("#banner-slider li").width() )
      }, animDurImg, easing, function() {
         $(".banner-slider-text").animate({
          bottom: 5
        }, animDur, easing);
      });   
    });
  }
  
  function autoNext() {
    bannerPos++;
    if (bannerPos == maxPos) {
      $("#banner-controls-right").fadeOut(animDur);
    }
    $(".banner-state.act").removeClass("act").next().addClass("act");
    if (bannerPos > maxPos) {
      bannerPos = 0;
      $(".banner-state.act").removeClass("act");
      $(".banner-state").first().addClass("act");
    }
    $(".banner-slider-text").eq(bannerPos-1).animate({
      bottom: -100
    }, animDur, easing, function() { 
      bannerTextPos();
      $("#banner-slider ul").animate({
        marginLeft: - ( bannerPos * $("#banner-slider li").width() )
      }, animDurImg, easing, function() {
         $(".banner-slider-text").animate({
          bottom: 5
        }, animDur, easing);
      });   
    });
  }
  
  function autoFade() {
    bannerPos++;
    $(".banner-state.act").removeClass("act").next().addClass("act");
    if (bannerPos > maxPos) {
      bannerPos = 0;
      $("#banner-slider li").not(":first").fadeOut(1500);
      $(".banner-state.act").removeClass("act");
      $(".banner-state").first().addClass("act");
    } else {
      $("#banner-slider li").eq(bannerPos).fadeIn(1500);
    }
  }
  
  function bannerPrev() {
    bannerPos--;
    if (bannerPos < 0) {
      bannerPos = 0;
      return false;
    }
    $(".banner-state.act").removeClass("act").prev().addClass("act");
    if (bannerPos == 0) {
      $("#banner-controls-left").fadeOut(animDur);
    }
    if ($("#banner-controls-right").not(":visible")) {
      $("#banner-controls-right").fadeIn(animDur);
    }
    $(".banner-slider-text").eq(bannerPos+1).animate({
      bottom: -100
    }, animDur, easing, function() { 
      bannerTextPos();
      $("#banner-slider ul").animate({
        marginLeft: - (bannerPos * $("#banner-slider li").width() )
      }, animDurImg, easing, function() {
         $(".banner-slider-text").animate({
          bottom: 5
        }, animDur, easing);
      });   
    });
  }
  
  setInterval(autoFade, 5000);
  
  $("#banner-controls-right").click(function(){
    bannerNext();
  });
  $("#banner-controls-left").click(function(){
    bannerPrev();
  });

  
  //sidebar aukioloajat
  
  $(".sidebar-menu-item.fold").first().addClass("act");
  $(".banner-aukioloajat").hide();
  $(".banner-aukioloajat").first().slideDown("slow", function(){
    $("#banner-aukioloajat").css({
      height: $("#banner-aukioloajat").height()
    });
  });  

  $(".sidebar-menu-item.fold").click(function(){
    if ($(this).hasClass("act")) return false;
    $(this).next().slideDown("slow", easing);
    $(".sidebar-menu-item.fold.act").next().slideUp("slow", easing);
    $(".sidebar-menu-item.fold").removeClass("act");
    $(this).addClass("act");
  });
  
  
  //ryhmäliikunta
  
  if (/MSIE 6/i.test(navigator.userAgent) == false && /MSIE 7/i.test(navigator.userAgent) == false) {
    $(".class-title").heightFix();
  }
  
  $(".class-description").each(function(){
    $(this).css({
      height: $(this).outerHeight()
    });
  });
  $(".class-description").hide();
  $("#classes .more").click(function(){
    $(this).hide().next().css({display: "inline-block"});
    $(this).parent().parent().find(".class-description").slideDown();
  });
  $("#classes .less").click(function(){
    $(this).hide().prev().css({display: "inline-block"});
    $(this).parent().parent().find(".class-description").slideUp();
  });
  
  //hinnasto
  
  if (/MSIE 6/i.test(navigator.userAgent) == false && /MSIE 7/i.test(navigator.userAgent) == false) {
    $(".hinnasto-title").heightFix();
  }
  
  $(".hinnasto-description").each(function(){
    $(this).css({
      height: $(this).outerHeight()
    });
  });
  $(".hinnasto-description").hide();
  $("#hinnasto .more").click(function(){
    $(this).hide().next().css({display: "inline-block"});
    $(this).parent().parent().find(".hinnasto-description").slideDown();
  });
  $("#hinnasto .less").click(function(){
    $(this).hide().prev().css({display: "inline-block"});
    $(this).parent().parent().find(".hinnasto-description").slideUp();
  });
  
  //henkilöstö
  $(".person .info").click(function(){
    $(".person div").css({zIndex: 2});
    $(this).parent().css({zIndex: 4000});
    var thisDesc = $(this).next();
    if (thisDesc.is(":visible")) {
      thisDesc.animate({
      bottom: 0,
      opacity: 0
      }, 450, "swing", function(){
        thisDesc.css({
          display: "none"
        });
      });
      return false;
    }
    $(".person .description").not(thisDesc).animate({
      bottom: 0,
      opacity: 0
    }, 450, "swing", function(){
      $(".person .description").not(thisDesc).css({
        display: "none"
      });
    });
    thisDesc.css({
      opacity: 0,
      display: "block"
    });
    thisDesc.animate({
      bottom: 40,
      opacity: 1
    },450, "swing");  
  });
  $(".person .description").click(function(){
    $(this).stop().animate({
      bottom: 0,
      opacity: 0
    },450, "swing", function(){
        $(this).css({
          display: "none"
        });
      }
    );
  });
  
  //palvelupaketit
  
  
  //forms
  
  $(".submit input").addClass("btn blue");
  $(".button_submit input").addClass("btn blue");
  
  $("#content form:not(.reg):not(.dosubmit)").submit(function(){
	if($(this).parents('#yhteysform').length || $(this).parents('.dosubmit').length) { return true; }
    return false;
  });
  
  $("#content form:not(.reg):not(.dosubmit) .button input").click(function(){
	if($(this).parents('#yhteysform').length || $(this).parents('.dosubmit').length) { return true; }
    var formOk = 0;
    var okLength = 0;
    $("#content .error").removeClass("error");
    $("#content .mandatory").each(function(){
      okLength++;
      if ($(this).attr("value") != "") {
        formOk++;
      } else {
        $(this).closest(".field_wrapper").addClass("error");
      }
    });
    //console.log(formOk, okLength);
    if (formOk == okLength) {
      $.ajax({
        type: "POST",
        url: $("#sidebar form").attr("action"),
        data: $("#sidebar form").serialize(),
        success: function(msg){
          $("#sidebar  .form_container").slideUp(300, function(){
            $("#sidebar  .form_container").html("<p id='kiitos'>Yhteydenottopyyntönne vastaanotettiin onnistuneesti.</p>");
            $("#sidebar  .form_container").slideDown(300);
          });
        }
      });
    } 
  });

  
  //calendar 
  // 
  $(".calendar tr").each(function(){
    var heights = [];
    var thisH = 0;
    $(this).find(".white").each(function(){
      heights.push($(this).height());
    });
    for (i=0;i<heights.length;i++) {
      if (heights[i] > thisH) {
      thisH = heights[i];
      //console.log($(this), thisH);
      }
    }  
    $(this).find(".white").css({
      height: thisH
    });
  });

  /*$("#calendar-holder").css({
    width: $(this).find(".calendar").size() * $(this).find(".calendar").outerWidth() + 10
  });*/
  
  /*$(".calendar-link").click(function(){
    if ($(this).hasClass("act")) return false;
    $(".calendar-link.act").removeClass("act");
    $(this).addClass("act");
    if ($(this).hasClass("vivian")) {
      $("#calendar-holder").animate({
        marginLeft: 0
      },200, easing);
    }
    if ($(this).hasClass("ahjo")) {
      $("#calendar-holder").animate({
        marginLeft: - ( $("#calendar-holder").find(".calendar").outerWidth() +1 )
      },200, easing);  
    }
  });*/
  
  $("#calendar-ahjokatu").hide();
  
  $(".calendar-link").click(function(){
    if ($(this).hasClass("act")) return false;
    $(".calendar-link.act").removeClass("act");
    $(this).addClass("act");
    if ($(this).hasClass("vivian-torikeskus")) {
      $("#calendar-ahjokatu").fadeOut(500, function(){
        $("#calendar-vivian-torikeskus").fadeIn(500);
      });    
    }
    if ($(this).hasClass("ahjokatu")) {
      $("#calendar-vivian-torikeskus").fadeOut(500, function(){
        $("#calendar-ahjokatu").fadeIn(500);
      });    
    }
  });
  
  $(".calendar div.noclass").parent().addClass("noclass");
  // $(".calendar div.color").each(function(){
  //   $(this).parent().parent().addClass($(this).parent().attr("class"));
  // });
	$(".calendar td > div:not(.noclass)").each(function(){
		if($(this).siblings().length === 0) {
			console.log($(this).parent().height());
			$(this).css('height',$(this).parent().height()-5+'px');
		}
  	});

  
  //ikä
  
	var ages = ['0-19','20-29','30-39','40-49','50-59','60-'];

	function getAge(selected) {
		for(i = 0;i < ages.length;i++) {
			if(selected == ages[i]) { return i; }
		}
		
		return 0;
	}
	
	$("#ageSlider").slider({
		value: getAge($("#ageInput").val()),
		min: 0,
		max: 5,
		step: 1,
		slide: function( event, ui ) {
			var val = ages[ui.value];
			
			$("#ageInput").val(val);
			$("#ageSpan").html(val+' vuotta');
		}
	});
	$("#ageInput").val(ages[$("#ageSlider").slider("value")]);
	$("#ageSpan").html(ages[$("#ageSlider").slider("value")]+' vuotta');
	
	$.each($('.basicForm.text'),function() {
		$(this).find('input').css('width',($(this).find('div.input').width()-$(this).find('span').width()-28)+'px');
	});
	
	$.each($('input.custom'),function() {
		$(this).css('marginLeft',($(this).parent().find('span').width()+15)+'px').css('width',($(this).parent().width()-$(this).parent().find('span').width()-38)+'px');
	});
	
	$('.survey .submit a.btn').click(function() {
		if($(this).hasClass('back')) {
			$(this).parents('.container').eq(0).animate({marginLeft:'+=768'},300);
		}
		else {
			$(this).parents('.container').eq(0).animate({marginLeft:'-=768'},300);
		}
		$(window).scrollTop(280);
		return false;
	});
	
	$('#login-submit-button').click(function() { $(this).parents('form').submit(); });
	
	$.each($('form.checkMandatory input'),function() {
		$(this).data('default',$(this).val());
	});
	
	$('form.checkMandatory').submit(checkForm);
});

function toggleCustom(obj) {
	obj.parent().parent().find('input.custom').show();
}

function checkForm() {
	var dontCheckDefaults = $(this).hasClass('noDefaultCheck');
	var error = false;
	
	$.each($(this).find('.mandatory'),function() {
		if($(this).val().length === 0 || (!dontCheckDefaults && $(this).val() == $(this).data('default'))) {
			$(this).addClass('error');
			error = true;
		}
		else {
			$(this).removeClass('error');
		}
	});
	
	// if($(this).find('.password').length > 0) {
	// 	if($(this).find('.password').val() !== $(this).find('.password_check').val()) {
	// 		$(this).find('.password').addClass('error').end().find('.password_check').addClass('error');
	// 		error = true;
	// 	}		
	// }
	
	if(!error && !dontCheckDefaults) {
		$.each($(this).find(':text:not(.mandatory)'),function() {
			if($(this).val() == $(this).data('default')) {
				$(this).val('');
			}
		});
	}
	
	return (error) ? false : true;
}

function toggleSharePopup() {
  if($('#share_popup:visible').length === 0) {
    $('#share_popup').fadeIn(200);
  } 
  else {
    $('#share_popup').fadeOut(200);
  }
}
function vinkkaa() {
  var email = $('#vinkkaa_email').val();
  var name = $('#vinkkaa_nimi').val();
  var url = '/tell_a_friend.php';
  var location = window.location.href;
  if(email.length == 0) { 
    $('#vinkkaa_email').css('border-color','#D71635');
    return; 
  } else {
    $('#vinkkaa_email').css('border-color','#C9C7C6');
  }
  $.post(url,{email:email,name:name,url:location},function(data) {
    $('#vinkkaa_email').val('');
    if(data == 'ERR') {

    } 
    else {
      $('#vinkkaa_email').val('');
      $('#vinkkaa_nimi').val('');

      $('#vinkkaa_success').fadeIn(200,function() {
        setTimeout(function() {
          $('#share_popup').fadeOut(200,function() {
            $('#vinkkaa_success').hide();
          });
        },4000);
      });
    }
  });
}

function numbersOnly(e) {
	if(e.which === 13 || e.which === 8 || e.which === 0 || (e.which >= 48 && e.which <= 57)) {
    	return true;
  	}
  	return false;
}

// 
