var base = {
  slideshow: function (setup) { 
    var slide = setup.slides.shift();
    setup.slides.push(slide);
    var img = new Image();
    img.src = slide.img;
    img.onload = function() {
      setup.target.container.css({backgroundImage: 'url(' + slide.img + ')' });
      setup.target.img.fadeOut(setup.fadeOutTime, function () {          
        setup.target.textLink.hide();
        setup.target.link.attr('href', slide.href);          
        setup.target.textLink.text(slide.title);
        setup.target.textLink.attr('href', slide.href);
        setup.target.textLink.show();          
        setup.target.img.attr('src', slide.img);
        setup.target.img.fadeIn(setup.fadeInTime);
        setup.lis.removeClass('active');
        slide.li.addClass('active');
      });
    } 
  }
}

$(function() {
  
  var slideshowTrigger = $('#slide-show-trigger');
  if(slideshowTrigger.length) {
    var setup = {
      intervalTime: 5000,
      fadeOutTime: 1000,
      fadeInTime: 2000,
      target: {
        container: $('#slide-show-area'),
        img: $('#slide-show-area img'), 
        link: $('#slide-show-area a'), 
        textLink: $('#slide-show-text a')
      },
      slides: [],
      lis: slideshowTrigger.find('li'),      
      interval: null
    }
    var trigger = slideshowTrigger.find('a');
    trigger.each(function() {
      var a = $(this);
      a.css('cursor', 'default');
      setup.slides.push({ 
        img: a.data('img'),
        title: a.attr('title'),
        href: a.attr('href'),
        li: a.parent('li')
      });
    });
    setup.slides.push(setup.slides.shift());
    setup.interval = window.setInterval(function(){
      base.slideshow(setup)
    }, setup.intervalTime);
    
    trigger.click(function(event) {
      event.preventDefault();
    })
  }
  
  // forms 1: labels to placeholders
  var forms = $('form');
  if(forms.length) {
    forms.each(function() {
      var form = $(this);
      var placeholder = 'placeholder' in document.createElement('input'); 
      var fields = form.find('input,select,textarea');
      if(!placeholder) {
        form.submit(function(){
          fields.each(function() {
            if(this.getAttribute('placeholder') === this.value) {
              this.value = '';
            }
          })
        })
      }
      fields.each(function() {
        var field  = $(this); 
        
        var label  = $('label.js-hide[for="' + this.id + '"]');
        if(!label.length) {
          return;
        }
        var title  = label.find('abbr').attr('title');
        var elem   = this.tagName.toLowerCase();
        var type   = field.attr('type');
        if(elem === 'input' &&  $.inArray(type, ['radio','checkbox'])  > -1) {
          return;
        }
        if(label.length) {
          if(!this.value) {
            field.addClass('placeholder');
          }
          var phText = $.trim(label.text());      
          var value  = !placeholder && !field.val() ? phText : field.val();
          if(elem === 'select') {
            var selected = field.find('option[selected]');
            if(!selected.length) {
              field.data('placeholder',$('<option value="">' + phText + '</option>'));
              field.data('placeholder').insertBefore(field.find('option:first'));             
              field.data('placeholder').prop('selected', true)
              field.addClass('placeholder');
              field.change(function() {
                if(field.val()) {
                  field.data('placeholder').remove();
                  field.removeClass('placeholder');
                }
              })
            }
          }
          field.attr({ placeholder: phText, title: (title || '') });
          field.val(elem === 'select' ? phText : value);
          if(!placeholder) {
            field.focus(function() {
              if(this.getAttribute('placeholder') === field.val()) {
                field.val('');
                field.removeClass('placeholder');
              }
              else {
                field.addClass('placeholder');
              }
            })
            .blur(function() {              
              if(!field.val()) {
                field.val(this.getAttribute('placeholder'));
                field.addClass('placeholder');
              }
              else {
                field.removeClass('placeholder');
              }
            })
          }
        }    
      });
    })
  }
  
  // forms 2: toggle fields for 'other interests/referrers' etc
  var fieldOpener = $('input[data-rel]');
  if(fieldOpener.length) {
    fieldOpener.click(function() {
      var field = $($(this).data('rel'));
      field.parent('div').slideDown('fast', function() {
        field.focus();
      });
    });
    fieldOpener.each(function() {
      if(fieldOpener[0].getAttribute('checked') === 'checked') {
        $($(this).data('rel')).parent('div').show();
      }
    });
  }
   //show/hide field other.
  if(!jQuery('input[id=contact_referrer_other]:checked').val())
  {
    jQuery('#contact_other_referrer').hide();
  }
  jQuery('.radio_list>li>input').click(function(){
	  if(jQuery('input[id=contact_referrer_other]:checked').val())
	  {
	    jQuery('#contact_other_referrer').show().focus();
	  } else {
	    jQuery('#contact_other_referrer').hide();
	  }
  });
  
  
  
  
  // picture galleries
  var galleryContainer = $('.gallery-container');
  if(galleryContainer) {
    var host = window.location.protocol + '//' + window.location.hostname;
    
    var getVideoBox = function(videos, url) {
      var i = videos.length;
      while(i--) {
        if(url == videos[i].attr('src')) {
          videos[i].parent('.video-wrapper').removeClass('hidden').hide();
          return videos[i].parent('.video-wrapper');
        }
      }
      return null;
    }
    
    galleryContainer.each(function() {
      var gallery   = $(this);
      var thumbs    = gallery.find('.thumbs a');   
      var thumbLi   = gallery.find('.thumbs li');  
      var pic       = gallery.find('.main-pic');
      var vWrappers = gallery.find('.video-wrapper');
      var videos = [];
      vWrappers.each(function() {
        var wrapper = $(this);
//        vWrappers.addClass('hidden');
        videos.push(wrapper.find('iframe'));
      });
      
      thumbs.click(function(event) {
        event.preventDefault();
        var video = getVideoBox(videos, this.href);
        // reference to a video
        if(video) {
          pic.hide();
          vWrappers.hide();
          video.show();
          thumbLi.removeClass('active');
          $(this).parent().addClass('active');
        }
        // reference to a picture
        else {
          var newSrc = this.href;  
          vWrappers.hide();    
          if(!vWrappers.length && newSrc === pic.attr('src').replace(host,'')) {
            return false;
          }
          
          var newPic = new Image();
          newPic.src = newSrc;
          newPic.onload = function(){
            pic.hide();
            pic.attr('src', newPic.src);
            pic.fadeIn('slow');
            thumbLi.removeClass('active');
            $(this).parent().addClass('active');
          }
        }
      }) 
    });
  }


  // goggle map
  if(typeof gmapData != 'undefined') {    
		gmapData.onMapDisplay = function(obj) {
			var form = $(obj.form);
			form.find('button').addClass('theme-bg-3 shadow theme-txt-shadow-1 theme-txt-1 round');
			form.addClass('theme-bg-2 ff-2 theme-txt-3 std-distance');
		}
    GMAP.init('gmap', gmapData);
  }
       
  // reference filter
  var radioList = $('.radio-list');
  var inputTrigger = $('input.trigger');
  if(radioList.length && inputTrigger.length) {
    $('input.trigger').change(function() {
      var trigger = $(this);
      var target  = $(trigger.data('target'));
      if(trigger.prop('checked') === true) {
        if(target.is(':visible')) {
          return;
        }
        radioList.hide();        
        $(trigger.data('target')).slideDown('slow');
      }
    })
    inputTrigger.trigger('change'); 
  }  
  
  // carousel
  var carousel = $('.carousel');
  if(carousel.length) {
    var scroll = carousel.parent('div.carousel-container').hasClass('vari-1') ? 1 : 3;
    carousel.jcarousel({
      wrap: 'circular',
      scroll:scroll
    });
  }
})
