﻿$(document).ready(function () {
  AlignLayout.rows();
  MainMenu.init();
  SortAlfabet.init();
  if ($('#ShowroomItems').length > 0) Showroom.init();
  if ($('#LoginForm').length > 0) Login.init();
  if ($('#ChangePasswordForm').length > 0) ChangePassword.init();
  if ($('#ChangeProfileForm').length > 0) ChangeProfile.init();
  if ($('.imgUpload').length > 0) UploadImages.init();
  if ($('.moreInfo').length > 0) MoreInfo.init();
  if ($('#FeedbackDialog').length > 0) Feedback.init();
  if (jQuery.browser.msie && jQuery.browser.version > 6) IEShadows.init();
});

var AlignLayout = {
  rows: function () {
    if ($('.row').length <= 0) return;
    $('.row').each(function () {
      if ($('.overview.theme').length > 0) {
        var highest = 0;
        $(this).children('.block').each(function () {
          highest = $(this).children('div.block:first').height() > highest ? $(this).children('div.block:first').height() : highest;
        });
        $(this).children('.block').each(function () {
          $(this).children('div.block:first').css('height', highest + 'px');
        });
      }
      var h = $(this).height() - 40;
      if (jQuery.browser.msie && jQuery.browser.version < 8) h += 10;
      $(this).children('div.block').css('height', h);
    });
  }
};

var MainMenu = {
  timeOut: null,
  timeIn: null,
  init: function () {
    var mm = '#MainMenu-0';
    if ($(mm).length <= 0) return;
    if ($('#MMSubs').length == 0) $('body').append('<div id="MMSubs"></div>');

    //create iframe mask
    if ($('#MMMask').length == 0) $('body').append('<iframe id="MMMask" src="/Images/fake-src.gif"></iframe>');

    // fill MMSubs layer with submenu's
    $(mm + ' > li').each(function () {
      var i = $(mm + ' > li').index(this);
      $('#MMSubs').append('<div class="list"><ul></ul></div>');
      $('.list:eq(' + i + ')').addClass($(mm + ' > li:eq(' + i + ')').attr('class'));
      if ($(this).children('ul').length > 0) {
        $('#MMSubs ul:eq(' + i + ')').html($(this).children('ul').html());
      }
    });

    //Adjust for IE<8
    if (jQuery.browser.msie && jQuery.browser.version < 8) $('#MMSubs').css('background-position', '0 -' + (990 - $('#MMSubs').height()) + 'px');

    // add mouseover/out:
    $(mm).mouseenter(function () {
      clearTimeout(MainMenu.timeOut);
      MainMenu.timeIn = setTimeout(MainMenu.show, 300);
    });
    $(mm).mouseleave(function () {
      clearTimeout(MainMenu.timeIn);
      MainMenu.hide();
    });
    $('#MMSubs').mouseenter(function () {
      clearTimeout(MainMenu.timeOut);
    });
    $('#MMSubs').mouseleave(function () {
      MainMenu.hide();
    });
  },
  show: function () {
    if ($('#MMSubs').offset().left > 0) return;
    var x = $('#MainMenu-0').offset().left - 4;
    var y = $('#MainMenu-0').offset().top + $('#MainMenu-0').height();
    var endHeight = $('#MMSubs').height();
    $('#MMMask').css('width', $('#MMSubs').width());
    $('#MMMask').css('height', endHeight);
    $('#MMMask').css('left', x);
    $('#MMMask').css('top', y);
    $('#MMSubs').css('height', 1);
    $('#MMSubs').css('left', x);
    $('#MMSubs').css('top', y);
    $('#MMSubs').stop().animate({ height: endHeight, paddingBottom: 60 }, { duration: 400, easing: 'easeInSine', complete: function () {
    }
    }).animate({ paddingBottom: 0 }, { duration: 300, easing: 'easeOutSine' });
  },
  hide: function () {
    MainMenu.timeOut = setTimeout(function () {
      var endHeight = $('#MMSubs').height();
      $('#MMSubs').stop().animate({ height: 1 }, { duration: 800, easing: 'easeInExpo', complete: function () {
        $('#MMSubs').css('height', endHeight);
        $('#MMSubs').css('left', '-999em');
        $('#MMMask').css('left', '-999em');
      }
      });
    }, 1000);
  }
}

var Showroom = {
  init: function () {
    if ($('#ShowroomPagination').length <= 0) {
      $('#Showroom').append('<p id="ShowroomPagination"></p>');
    };
    $('#ShowroomItems').cycle({
      fx: 'fade',
      speed: 1000,
      easing: 'easeOutSine',
      timeout: 10000,
      before: Showroom.onBefore
    });
    $('ul.tabs a').click(function () {
      var chapter = $(this).attr('class');
      var gotoSlide = $('div#ShowroomItems').children('div').index($('div#ShowroomItems div.' + chapter + ':first'));
      $('#ShowroomItems').cycle(gotoSlide);
      return false;
    });
    $('#ShowroomPagination span').live('click', function () {
      if ($(this).hasClass('selected')) return;
      var i = $('#ShowroomPagination span').index(this);
      var chapter = $(this).attr('class');
      var gotoSlide = $('div#ShowroomItems').children('div').index($('div#ShowroomItems div.' + chapter + ':eq(' + i + ')'));
      $('#ShowroomItems').cycle(gotoSlide);
    });
  },
  onBefore: function () {
    var currentClass = $(this).attr('class');
    var currentChapter;
    if (currentClass.indexOf('visibleItem') >= 0) currentChapter = currentClass.replace('visibleItem ', '');
    else if (currentClass.indexOf('hiddenItem') >= 0) currentChapter = currentClass.replace('hiddenItem ', '');
    $('ul.tabs li.selected').removeClass('selected');
    $('ul.tabs a.' + currentChapter).closest('li').addClass('selected');
    if ($(this).attr('class').indexOf('visibleItem') >= 0) currentChapter = currentClass.replace('visibleItem ', '');
    var currentIndex = $('div.' + currentChapter).index(this);
    Showroom.buildPagination(currentChapter, currentIndex);
  },
  buildPagination: function (currentChapter, currentIndex) {
    if ($('#ShowroomPagination').length > 0) $('#ShowroomPagination').html('');
    for (var i = 0; i < $('div.' + currentChapter).length; i++) {
      $('#ShowroomPagination').append('<span class="' + currentChapter + '">' + (i + 1) + '</span>');
      if (i < $('div.' + currentChapter).length - 1) $('#ShowroomPagination').append('|');
      if (i == currentIndex) $('#ShowroomPagination span:eq(' + i + ')').addClass('selected');
    }
  }
}

var SortAlfabet = {
  init: function () {
    if ($('ul.alfabetSort').length <= 0) return;
    $('ul.alfabetSort li:has(ul)').addClass('available');
    SortAlfabet.show($('ul.alfabetSort li.selected'));
    $('ul.alfabetSort li.available').hover(function () {
      $('ul.alfabetSort li.selected').removeClass('selected');
      SortAlfabet.show($(this));
    }, function () { });
  },
  show: function (elt) {
    elt.addClass('selected');
    $('#alfabetDisplay').html('<ul>' + elt.children('ul').html() + '</ul>');
    var topLetter = elt.offset().top;
    var topDisplay = $('#alfabetDisplay').offset().top;
    var bottomDisplay = topDisplay + $('#alfabetDisplay').height();
    var heightList = $('#alfabetDisplay ul:first').height();
    var bottomList = topLetter + heightList;
    if (bottomList <= bottomDisplay) $('#alfabetDisplay ul:first').css('margin-top', topLetter - topDisplay);
    else $('#alfabetDisplay ul:first').css('margin-top', (bottomDisplay - bottomList) + (topLetter - topDisplay));
  }
};

var Feedback = {
  init: function () {
    Feedback.show();

    $('#FeedbackDialog .closeBtn').live('click', function (evt) {
      evt.preventDefault();
      Feedback.hide();
    });
    $('#ModalScreen').live('click', Feedback.hide);
  },
  show: function () {
    ModalScreen.show();
    var x = ($(window).width() - $('#FeedbackDialog').width()) / 2;
    var y = ($(window).height() - $('#FeedbackDialog').height()) / 2;
    $('#FeedbackDialog').css('left', x + 'px');
    $('#FeedbackDialog').css('top', y + 'px');
  },
  hide: function () {
    $('#FeedbackDialog').css('left', '-999em');
    ModalScreen.hide();
  }
}

var Login = {
  init: function () {
    ModalScreen.init();
    $('#ModalScreen').live('click', Login.hide);
    $('#LoginLink a').live('click', function (evt) {
      if ($(this).hasClass('login')) {
        evt.preventDefault();
        Login.show();
      }
    });
    $('.loginLink a, a.loginLink').live('click', function (evt) {
      evt.preventDefault();
      Login.show();
    });
    $('#LoginForm .closeBtn').live('click', function (evt) {
      evt.preventDefault();
      Login.hide();
    });
    $('#OpenLoginDialog').live('click', function (evt) {
      evt.preventDefault();
      Login.show();
    });
    $('#LoginForm a#LoginFormLink').live('click', function (evt) {
      evt.preventDefault();
      Login.show();
    });
    $('#OpenLostPasswordDialog').live('click', function (evt) {
      evt.preventDefault();
      Login.show();
      openLostPasswordDialog();
    });
    $('#LoginForm a#LostPasswordLink').live('click', function (evt) {
      evt.preventDefault();
      openLostPasswordDialog();
    });
    function openLostPasswordDialog() {
      $('#LoginForm #Login').hide();
      $('#LoginForm #Register').hide();
      $("#LoginForm #LostPassword .feedback").remove();
      $("#LoginForm #LostPassword .hideIfFeedback").show();
      $('#LoginForm #LostPassword').show();
      if (jQuery.browser.msie && jQuery.browser.version < 8) $('#LostPassword input[type="submit"]').closest('div.button').css('width', $('#LostPassword input[type="submit"]').width() + 'px');
    }
    $('#LoginForm #Login input:submit').live('click', function (evt) {
      evt.preventDefault();
      var url = "/profiel/action/ajaxLogin";
      var params = { email: $("#Login #MailAddress").val(), password: $("#Login #Password").val() };
      AjaxForm.validate(url, params, $("#Login .validationMessagesBox"), function () {
        Login.hide();
        location.href = location.href;
      });
    });
    $('#LostPassword input:submit').live('click', function (evt) {
      evt.preventDefault();
      var url = "/profiel/action/ajaxForgotPassword";
      var params = { email: $("#LostPassword #MailAddress2").val() };
      AjaxForm.validate(url, params, $("#LostPassword .validationMessagesBox"), function (data) {
        var feedback = AjaxForm.getElement(data, null, "feedback");
        Animator.toggleElements($("#LostPassword .feedbackToggleBox"), feedback, $("#LostPassword .hideIfFeedback"));
      });
    });
    $('#Register .inputSubmit').live('click', function (evt) {
      evt.preventDefault();
      var url = "/profiel/action/ajaxRegister";
      var params = { name: $("#Register #Name").val(), email: $("#Register #MailAddress3").val(), passwordA: $("#Register #PasswordA").val(), passwordB: $("#Register #PasswordB").val() };
      AjaxForm.validate(url, params, $("#Register .validationMessagesBox"), function () {
        // Om een onvindbare reden doet submit() het niet. Het event lijkt ergens gecancelled te worden.
        // Dan maar door een submit button te branden en daarop te klikken.
        //$("#Register form").submit();
        $("<input type=\"submit\" style=\"position:absolute; left:-999em;\"/>").appendTo($("#Register form")).click();
      });
    });
    $('#LoginForm a#RegisterLink').live('click', function (evt) {
      evt.preventDefault();
      $('#LoginForm #Login').hide();
      $('#LoginForm #Register').show();
      if (jQuery.browser.msie && jQuery.browser.version < 8) $('#Register input[type="submit"]').closest('div.button').css('width', $('#Register input[type="submit"]').width() + 'px');
    });
  },
  show: function (showMessagesAndValues) {
    if (!showMessagesAndValues) {
      $('#LoginForm form').clearForm();
      $('#LoginForm .validationMessagesBox').empty();
    }
    $('#LoginForm #LostPassword').hide();
    $('#ChangePasswordForm').hide();
    Feedback.hide();
    $('#LoginForm #Register').hide();
    $('#LoginForm #Login').show();
    ModalScreen.show();
    var x = ($(window).width() - $('#LoginForm').width()) / 2;
    var y = ($(window).height() - $('#LoginForm').height()) / 2;
    $('#LoginForm').css('left', x + 'px');
    $('#LoginForm').css('top', y + 'px');
    $('#LoginForm input:text:eq(0)').focus();
  },
  hide: function () {
    $('#LoginForm').css('left', '-999em');
    ModalScreen.hide();
  },
  showRegisterForm: function (showMessagesAndValues) {
    Login.show(showMessagesAndValues);
    $('#LoginForm #Login').hide();
    $('#LoginForm #Register').show();
  }
}

var ChangePassword = {
  init: function () {
    $('#ModalScreen').live('click', ChangePassword.hide);
    $('#ChangePasswordForm .closeBtn').live('click', ChangePassword.hide);
    $("#ChangePasswordForm .inputSubmit").live('click', function (evt) {
      evt.preventDefault();
      var url = "/profiel/action/ajaxChangePassword";
      var params = { passwordNewA: $("#ChangePasswordForm #PasswordNewA").val(), passwordNewB: $("#ChangePasswordForm #PasswordNewB").val(), pwLostCode: $("#ChangePasswordForm #pwLostCode").val(), id: $("#ChangePasswordForm #ID").val() };
      AjaxForm.validate(url, params, $("#ChangePasswordForm .validationMessagesBox"), function (data) {
        // Om een onvindbare reden doet submit() het niet. Het event lijkt ergens gecancelled te worden.
        // Dan maar door een submit button te branden en daarop te klikken.
        //$("#ChangePasswordForm form").submit();
        $("<input type=\"submit\" style=\"position:absolute; left:-999em;\"/>").appendTo($("#ChangePasswordForm form")).click();
      });
    });
  },
  show: function () {
    $('#ChangePasswordForm').show();
    ModalScreen.show();
    var x = ($(window).width() - $('#ChangePasswordForm').width()) / 2;
    var y = ($(window).height() - $('#ChangePasswordForm').height()) / 2;
    $('#ChangePasswordForm').css('left', x + 'px');
    $('#ChangePasswordForm').css('top', y + 'px');
    $('#ChangePasswordForm input:eq(0)').focus();
  },
  hide: function () {
    $('#ChangePasswordForm').css('left', '-999em');
    ModalScreen.hide();
  }
}

var ChangeProfile = {
  init: function () {
    $('#ModalScreen').live('click', ChangeProfile.hide);
    $('#ChangeProfile').live('click', function (evt) {
      evt.preventDefault();
      ChangeProfile.show();
    });
    $('#ChangeProfileForm .closeBtn').live('click', function () {
      ChangeProfile.hide();
    });
    $("#ChangeProfileForm .inputSubmit").live('click', function (evt) {
      evt.preventDefault();
      var url = "/profiel/action/ajaxEdit";
      var params = { name: $("#ChangeProfileForm #Name").val(), email: $("#ChangeProfileForm #MailAddress3").val(), passwordZ: $("#ChangeProfileForm #PasswordZ").val(), passwordA: $("#ChangeProfileForm #PasswordA").val(), passwordB: $("#ChangeProfileForm #PasswordB").val() };
      AjaxForm.validate(url, params, $("#ChangeProfileForm .validationMessagesBox"), function () {
        // Om een onvindbare reden doet submit() het niet. Het event lijkt ergens gecancelled te worden.
        // Dan maar door een submit button te branden en daarop te klikken.
        //$("#ChangeProfileForm form").submit();
        $("<input type=\"submit\" style=\"position:absolute; left:-999em;\"/>").appendTo($("#ChangeProfileForm form")).click();
      });
    });
  },
  show: function (showMessages) {
    if (!showMessages) {
      $('#ChangeProfileForm .validationMessagesBox').empty();
    }
    $('#ChangeProfileForm form').show();
    ModalScreen.show();
    var x = ($(window).width() - $('#ChangeProfileForm').width()) / 2;
    var y = ($(window).height() - $('#ChangeProfileForm').height()) / 2;
    $('#ChangeProfileForm').css('left', x + 'px');
    $('#ChangeProfileForm').css('top', y + 'px');
    $('#ChangeProfileForm input:eq(0)').focus();
  },
  hide: function () {
    $('#ChangeProfileForm').css('left', '-999em');
    ModalScreen.hide();
  }
}

var AddedMine = {
  init: function () {
    var opac = 1;
    var n = 0;
    var interval = setInterval(function () {
      $('.mine').animate({ opacity: opac }, { duration: 200, easing: 'easeOutSine' });
      if (opac == 1) opac = 0.5;
      else opac = 1;
      n++;
      if (n == 9) {
        clearInterval(interval);
      }
    }, 200);
  }
}

var ModalScreen = {
  init: function () {
    if ($('#ModalScreen').length > 0) return;

    //create modal screen
    if ($('#ModalScreen').length == 0) {
      $('body').append('<div id="ModalScreen"></div>');
      $('#ModalScreen').click(function () {
        ModalScreen.hide();
      })
    }
    //create iframe mask
    if ($('#ModalMask').length == 0) $('body').append('<iframe id="ModalMask" src="/Images/fake-src.gif"></iframe>');
  },
  // size the modalscreen according to browserwindow's height and width
  sizing: function () {
    var h = $(window).height() >= $('#PageContainer').height() ? $(window).height() : $('#PageContainer').height();
    $('#ModalScreen').height(h);
    $('#ModalMask').height(h);

    var w = $(window).width() >= $('#PageContainer').width() ? $(window).width() : $('#PageContainer').width();
    $('#ModalScreen').width(w);
    $('#ModalMask').width(w);
  },
  show: function () {
    ModalScreen.init();
    ModalScreen.sizing();
    $('#ModalMask').show();
    $('#ModalScreen').show();
    $(window).bind("resize", function () {
      ModalScreen.sizing();
    });
  },
  hide: function () {
    $('#ModalScreen').hide();
    $('#ModalMask').hide();
    $(window).unbind("resize", function () {
      ModalScreen.sizing();
    });
  }
}

var UploadImages = {
  init: function () {
    $('.imgToUpload').append('<img src="../../Images/icons/ajax-loader.gif" width="32" height="32" class="ajaxLoaderIco" />')
    $('.imgToUpload input.inputButton').live('click', function () {
      $(this).closest('.addButton').hide();
      $(this).closest('.imgToUpload').find('.ajaxLoaderIco').show();
    });
    $('.imgToUpload .ajaxLoaderIco').live('click', function () {
      $(this).hide();
      $(this).closest('.imgToUpload').find('.addButton').show();
    });
  }
}

var MoreInfo = {
  init: function () {
    $('a.moreInfo').hover(function () {
      $(this).next('p.moreInfo').show();
    }, function () {
      $(this).next('p.moreInfo').hide();
    })
  }
}

var FileInputs = {
  init: function () {
    $('.tellMyStory input[type=file]').filestyle({
      image: "/../Images/buttons/btn-select-img.gif",
      imageheight: 22,
      imagewidth: 100,
      width: 180
    });
    $('.tellMyStory input[type=file]').live('click', function () {
      //alert('found');
      //return false; 
    });
  }
}
$.fn.clearForm = function () {
  return this.each(function () {
    var type = this.type, tag = this.tagName.toLowerCase();
    if (tag == 'form')
      return $(':input', this).clearForm();
    if (type == 'text' || type == 'password' || tag == 'textarea')
      this.value = '';
    else if (type == 'checkbox' || type == 'radio')
      this.checked = false;
    else if (tag == 'select')
      this.selectedIndex = -1;
  });
};

function flashPlaceSelected(plaats) {
  var type = $("#MapContainer").attr('class');
  plaats = plaats.replace('a/d', 'ad').replace('\'', '');
  document.location.href = "/NaarPlaats.aspx?type="+ type +"&plaats=" + plaats;
} 
