jQuery(function(){
  initCufon();
  initHover('#nav li');
  clearInputs();
  pngIE();
  initSlideShow();
  initFancybox();
  jQuery('div.gallery').galleryScroll({
    step:1,
    duration:300
  });
});

// init Cufon
function initCufon() {
  Cufon.replace('ul#nav>li>a', { fontFamily: 'rockwell', hover: true });
  Cufon.replace('.link-enquire', { fontFamily: 'rockwell', hover: true });
  Cufon.replace('#main .promo-box .info p', { fontFamily: 'rockwell' });
  Cufon.replace('.list-products h2', { fontFamily: 'rockwell' });
  Cufon.replace('.promo-frame h2', { fontFamily: 'rockwell' });
  Cufon.replace('#content h1', { fontFamily: 'rockwell' });
  Cufon.replace('#content h2', { fontFamily: 'rockwell' });
  Cufon.replace('#sidebar h2', { fontFamily: 'rockwell' });
  Cufon.replace('#content h3', { fontFamily: 'rockwell' });
  Cufon.replace('#content .prominent', { fontFamily: 'rockwell' });
}
// png IE6 fix
function pngIE(){
  if($.browser.msie && $.browser.version<7){
    if(typeof DD_belatedPNG != 'undefined') DD_belatedPNG.fix('.promo-frame');
  }
}
// init hover IE6
function initHover(h_list, h_class){
  if(!h_class) var h_class = 'hover';
  jQuery(h_list).hover(function(){
    jQuery(this).addClass(h_class);
  }, function(){
    jQuery(this).removeClass(h_class);
    setTimeout(function(){
      Cufon.refresh('ul#nav>li>a')
    }, 50);
  });
}
// clear inputs
function clearInputs(){
  jQuery('input:text, input:password, textarea').each(function(){
    var _el = jQuery(this);
    var _val = _el.val();
    _el.bind('focus', function(){
      if(this.value == _val) this.value = '';
    }).bind('blur', function(){
      if(this.value == '') this.value = _val;
    });
  });
};

//Fancybox init
function initFancybox()
{
   $("#contactLink").fancybox({
    'titlePosition'    : 'inside',
    'transitionIn'    : 'none',
    'transitionOut'    : 'none',
	'overlayColor'		: '#000000'
  });
}

// slideshow init
function initSlideShow() {
  jQuery('.fade-gallery').fadeGallery({
    slideElements:'>li',
    autoRotation:true,
    switchTime:3000,
    duration:500
  });
}

function validateSearch(inputid)
{
  var searchTerm = $("#" + inputid).val();
  var retval = true;
  if(searchTerm.length == 0 || searchTerm == "Search our site")
  {
    retval = false;
    alert("Please specify a search term.");
  }
  return retval;
}


// slideshow plugin
jQuery.fn.fadeGallery = function(_options){
  var _options = jQuery.extend({
    slideElements:'div.slideset > div',
    pagerLinks:'div.pager a',
    btnNext:'a.next',
    btnPrev:'a.prev',
    btnPlayPause:'a.play-pause',
    btnPlay:'a.play',
    btnPause:'a.pause',
    pausedClass:'paused',
    disabledClass: 'disabled',
    playClass:'playing',
    activeClass:'active',
    currentNum:false,
    allNum:false,
    startSlide:null,
    noCircle:false,
    pauseOnHover:false,
    autoRotation:false,
    autoHeight:false,
    onChange:false,
    switchTime:3000,
    duration:650,
    event:'click'
  },_options);

  return this.each(function(){
    // gallery options
    var _this = jQuery(this);
    var _slides = jQuery(_options.slideElements, _this);
    var _pagerLinks = jQuery(_options.pagerLinks, _this);
    var _btnPrev = jQuery(_options.btnPrev, _this);
    var _btnNext = jQuery(_options.btnNext, _this);
    var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
    var _btnPause = jQuery(_options.btnPause, _this);
    var _btnPlay = jQuery(_options.btnPlay, _this);
    var _pauseOnHover = _options.pauseOnHover;
    var _autoRotation = _options.autoRotation;
    var _activeClass = _options.activeClass;
    var _disabledClass = _options.disabledClass;
    var _pausedClass = _options.pausedClass;
    var _playClass = _options.playClass;
    var _autoHeight = _options.autoHeight;
    var _duration = _options.duration;
    var _switchTime = _options.switchTime;
    var _controlEvent = _options.event;
    var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);
    var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);
    var _startSlide = _options.startSlide;
    var _noCycle = _options.noCircle;
    var _onChange = _options.onChange;

    // gallery init
    var _hover = false;
    var _prevIndex = 0;
    var _currentIndex = 0;
    var _slideCount = _slides.length;
    var _timer;
    if(_slideCount < 2) return;

    _prevIndex = _slides.index(_slides.filter('.'+_activeClass));
    if(_prevIndex < 0) _prevIndex = _currentIndex = 0;
    else _currentIndex = _prevIndex;
    if(_startSlide != null) {
      if(_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random()*_slideCount);
      else _prevIndex = _currentIndex = parseInt(_startSlide);
    }
    _slides.hide().eq(_currentIndex).show();
    if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);
    else _this.removeClass(_playClass).addClass(_pausedClass);

    // gallery control
    if(_btnPrev.length) {
      _btnPrev.bind(_controlEvent,function(){
        prevSlide();
        return false;
      });
    }
    if(_btnNext.length) {
      _btnNext.bind(_controlEvent,function(){
        nextSlide();
        return false;
      });
    }
    if(_pagerLinks.length) {
      _pagerLinks.each(function(_ind){
        jQuery(this).bind(_controlEvent,function(){
          if(_currentIndex != _ind) {
            _prevIndex = _currentIndex;
            _currentIndex = _ind;
            switchSlide();
          }
          return false;
        });
      });
    }

    // play pause section
    if(_btnPlayPause.length) {
      _btnPlayPause.bind(_controlEvent,function(){
        if(_this.hasClass(_pausedClass)) {
          _this.removeClass(_pausedClass).addClass(_playClass);
          _autoRotation = true;
          autoSlide();
        } else {
          _autoRotation = false;
          if(_timer) clearTimeout(_timer);
          _this.removeClass(_playClass).addClass(_pausedClass);
        }
        return false;
      });
    }
    if(_btnPlay.length) {
      _btnPlay.bind(_controlEvent,function(){
        _this.removeClass(_pausedClass).addClass(_playClass);
        _autoRotation = true;
        autoSlide();
        return false;
      });
    }
    if(_btnPause.length) {
      _btnPause.bind(_controlEvent,function(){
        _autoRotation = false;
        if(_timer) clearTimeout(_timer);
        _this.removeClass(_playClass).addClass(_pausedClass);
        return false;
      });
    }

    // gallery animation
    function prevSlide() {
      _prevIndex = _currentIndex;
      if(_currentIndex > 0) _currentIndex--;
      else {
        if(_noCycle) return;
        else _currentIndex = _slideCount-1;
      }
      switchSlide();
    }
    function nextSlide() {
      _prevIndex = _currentIndex;
      if(_currentIndex < _slideCount-1) _currentIndex++;
      else {
        if(_noCycle) return;
        else _currentIndex = 0;
      }
      switchSlide();
    }
    function refreshStatus() {
      if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);
      if(_currentNum) _currentNum.text(_currentIndex+1);
      if(_allNum) _allNum.text(_slideCount);
      _slides.eq(_prevIndex).removeClass(_activeClass);
      _slides.eq(_currentIndex).addClass(_activeClass);
      if(_noCycle) {
        if(_btnPrev.length) {
          if(_currentIndex == 0) _btnPrev.addClass(_disabledClass);
          else _btnPrev.removeClass(_disabledClass);
        }
        if(_btnNext.length) {
          if(_currentIndex == _slideCount-1) _btnNext.addClass(_disabledClass);
          else _btnNext.removeClass(_disabledClass);
        }
      }
      if(typeof _onChange === 'function') {
        _onChange(_this, _currentIndex);
      }
    }
    function switchSlide() {
      _slides.eq(_prevIndex).fadeOut(_duration);
      _slides.eq(_currentIndex).fadeIn(_duration);
      if(_autoHeight) _slides.eq(_currentIndex).parent().animate({height:_slides.eq(_currentIndex).outerHeight(true)},{duration:_duration,queue:false});
      refreshStatus();
      autoSlide();
    }

    // autoslide function
    function autoSlide() {
      if(!_autoRotation || _hover) return;
      if(_timer) clearTimeout(_timer);
      _timer = setTimeout(nextSlide,_switchTime+_duration);
    }
    if(_pauseOnHover) {
      _this.hover(function(){
        _hover = true;
        if(_timer) clearTimeout(_timer);
      },function(){
        _hover = false;
        autoSlide();
      });
    }
    refreshStatus();
    autoSlide();
  });
}

// jQuery galleryScroll v1.5.2
/*
  ************* OPTIONS ************************************** default ****************
  btPrev         - link for previos [selector]      btPrev: 'a.btn-pre'
  btNext         - link for next [selector]    btNext: 'a.btn-next'
  holderList     - image list holder [Tag name]    holderList: 'div'
  scrollElParent - list [Tag name]      scrollElParent: 'ul'
  scrollEl       - list element [Tag name]    scrollEl: 'li'
  slideNum       - view slide numbers [boolean]    slideNum: false
  duration       - duration slide [1000 - 1sec]    duration : 1000
  step           - slide step [int]      step: false
  circleSlide    - slide circle [boolean]      circleSlide: true
  disableClass   - class for disable link  [string]   disableClass: 'disable'
  funcOnclick    - callback function      funcOnclick: null
  innerMargin    - inner margin, use width step [px]      innerMargin:0
  autoSlide      - auto slide [1000 - 1sec]               autoSlide:false
  *************************************************************************************
*/
jQuery.fn.galleryScroll = function(_options){
  // defaults options  
  var _options = jQuery.extend({
    btPrev: 'a.link-prev',
    btNext: 'a.link-next',
    holderList: 'div',
    scrollElParent: 'ul',
    scrollEl: 'li',
    slideNum: false,
    duration : 1000,
    step: false,
    circleSlide: true,
    disableClass: 'disable',
    funcOnclick: null,
    autoSlide:false,
    innerMargin:0,
    stepWidth:false
  },_options);

  return this.each(function(){
    var _this = jQuery(this);

    var _holderBlock = jQuery(_options.holderList,_this);
    var _gWidth = _holderBlock.width();
    var _animatedBlock = jQuery(_options.scrollElParent,_holderBlock);
    var _liWidth = jQuery(_options.scrollEl,_animatedBlock).outerWidth(true);
    var _liSum = jQuery(_options.scrollEl,_animatedBlock).length * _liWidth;
    var _margin = -_options.innerMargin;
    var f = 0;
    var _step = 0;
    var _autoSlide = _options.autoSlide;
    var _timerSlide = null;
    if (!_options.step) _step = _gWidth; else _step = _options.step*_liWidth;
    if (_options.stepWidth) _step = _options.stepWidth;
    
    if (!_options.circleSlide) {
      if (_options.innerMargin == _margin)
        jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass);
    }
    if (_options.slideNum && !_options.step) {
      var _lastSection = 0;
      var _sectionWidth = 0;
      while(_sectionWidth < _liSum)
      {
        _sectionWidth = _sectionWidth + _gWidth;
        if(_sectionWidth > _liSum) {
               _lastSection = _sectionWidth - _liSum;
        }
      }
    }
    if (_autoSlide) {
        _timerSlide = setTimeout(function(){
          autoSlide(_autoSlide);
        }, _autoSlide);
      _animatedBlock.hover(function(){
        clearTimeout(_timerSlide);
      }, function(){
        _timerSlide = setTimeout(function(){
          autoSlide(_autoSlide)
        }, _autoSlide);
      });
    }
  
    // click button 'Next'
    jQuery(_options.btNext,_this).bind('click',function(){
      jQuery(_options.btPrev,_this).removeClass('prev-'+_options.disableClass);
      if (!_options.circleSlide) {
        if (_margin + _step  > _liSum - _gWidth - _options.innerMargin) {
          if (_margin != _liSum - _gWidth - _options.innerMargin) {
            _margin = _liSum - _gWidth  + _options.innerMargin;
            jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass);
            _f2 = 0;
          } 
        } else {
          _margin = _margin + _step;
          if (_margin == _liSum - _gWidth - _options.innerMargin) {
            jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass);_f2 = 0;
          }           
        }
      } else {
        if (_margin + _step  > _liSum - _gWidth + _options.innerMargin) {
          if (_margin != _liSum - _gWidth + _options.innerMargin) {
            _margin = _liSum - _gWidth  + _options.innerMargin;
          } else {
            _f2 = 1;
            _margin = -_options.innerMargin;
          }
        } else {
          _margin = _margin + _step;
          _f2 = 0;
        }
      } 
      
      _animatedBlock.animate({marginLeft: -_margin+"px"}, {queue:false,duration: _options.duration });
      
      if (_timerSlide) {
        clearTimeout(_timerSlide);
        _timerSlide = setTimeout(function(){
          autoSlide(_options.autoSlide)
        }, _options.autoSlide);
      }
      
      if (_options.slideNum && !_options.step) jQuery.fn.galleryScroll.numListActive(_margin,jQuery(_options.slideNum, _this),_gWidth,_lastSection);    
      if (jQuery.isFunction(_options.funcOnclick)) {
        _options.funcOnclick.apply(_this);
      }
      return false;
    });
    // click button 'Prev'
    var _f2 = 1;
    jQuery(_options.btPrev, _this).bind('click',function(){
      jQuery(_options.btNext,_this).removeClass('next-'+_options.disableClass);
      if (_margin - _step >= -_step - _options.innerMargin && _margin - _step <= -_options.innerMargin) {
        if (_f2 != 1) {
          _margin = -_options.innerMargin;
          _f2 = 1;
        } else {
          if (_options.circleSlide) {
            _margin = _liSum - _gWidth  + _options.innerMargin;
            f=1;_f2=0;
          } else {
            _margin = -_options.innerMargin
          }
        }
      } else if (_margin - _step < -_step + _options.innerMargin) {
        _margin = _margin - _step;
        f=0;
      }
      else {_margin = _margin - _step;f=0;};
      
      if (!_options.circleSlide && _margin == _options.innerMargin) {
        jQuery(this).addClass('prev-'+_options.disableClass);
        _f2=0;
      }
      
      if (!_options.circleSlide && _margin == -_options.innerMargin) jQuery(this).addClass('prev-'+_options.disableClass);
      _animatedBlock.animate({marginLeft: -_margin + "px"}, {queue:false, duration: _options.duration});
      
      if (_options.slideNum && !_options.step) jQuery.fn.galleryScroll.numListActive(_margin,jQuery(_options.slideNum, _this),_gWidth,_lastSection);
      
      if (_timerSlide) {
        clearTimeout(_timerSlide);
        _timerSlide = setTimeout(function(){
          autoSlide(_options.autoSlide)
        }, _options.autoSlide);
      }
      
      if (jQuery.isFunction(_options.funcOnclick)) {
        _options.funcOnclick.apply(_this);
      }
      return false;
    });
    
    if (_liSum <= _gWidth) {
      jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass).unbind('click');
      jQuery(_options.btNext,_this).addClass('next-'+_options.disableClass).unbind('click');
    }
    // auto slide
    function autoSlide(autoSlideDuration){
      //if (_options.circleSlide) {
        jQuery(_options.btNext,_this).trigger('click');
      //}
    };
    // Number list
    jQuery.fn.galleryScroll.numListCreate = function(_elNumList, _liSumWidth, _width, _section){
      var _numListElC = '';
      var _num = 1;
      var _difference = _liSumWidth + _section;
      while(_difference > 0)
      {
        _numListElC += '<li><a href="">'+_num+'</a></li>';
        _num++;
        _difference = _difference - _width;
      }
      jQuery(_elNumList).html('<ul>'+_numListElC+'</ul>');
    };
    jQuery.fn.galleryScroll.numListActive = function(_marginEl, _slideNum, _width, _section){
      if (_slideNum) {
        jQuery('a',_slideNum).removeClass('active');
        var _activeRange = _width - _section-1;
        var _n = 0;
        if (_marginEl != 0) {
          while (_marginEl > _activeRange) {
            _activeRange = (_n * _width) -_section-1 + _options.innerMargin;
            _n++;
          }
        }
        var _a  = (_activeRange+_section+1 + _options.innerMargin)/_width - 1;
        jQuery('a',_slideNum).eq(_a).addClass('active');
      }
    };
    if (_options.slideNum && !_options.step) {
      jQuery.fn.galleryScroll.numListCreate(jQuery(_options.slideNum, _this), _liSum, _gWidth,_lastSection);
      jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
      numClick();
    };
    function numClick() {
      jQuery(_options.slideNum, _this).find('a').click(function(){
        jQuery(_options.btPrev,_this).removeClass('prev-'+_options.disableClass);
        jQuery(_options.btNext,_this).removeClass('next-'+_options.disableClass);
        
        var _indexNum = jQuery(_options.slideNum, _this).find('a').index(jQuery(this));
        _margin = (_step*_indexNum) - _options.innerMargin;
        f=0; _f2=0;
        if (_indexNum == 0) _f2=1;
        if (_margin + _step > _liSum) {
          _margin = _margin - (_margin - _liSum) - _step + _options.innerMargin;
          if (!_options.circleSlide) jQuery(_options.btNext, _this).addClass('next-'+_options.disableClass);
        }
        _animatedBlock.animate({marginLeft: -_margin + "px"}, {queue:false, duration: _options.duration});
        
        if (!_options.circleSlide && _margin==0) jQuery(_options.btPrev,_this).addClass('prev-'+_options.disableClass);
        jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
        
        if (_timerSlide) {
          clearTimeout(_timerSlide);
          _timerSlide = setTimeout(function(){
            autoSlide(_options.autoSlide)
          }, _options.autoSlide);
        }
        return false;
      });
    };
    jQuery(window).resize(function(){
      _gWidth = _holderBlock.width();
      _liWidth = jQuery(_options.scrollEl,_animatedBlock).outerWidth(true);
      _liSum = jQuery(_options.scrollEl,_animatedBlock).length * _liWidth;
      if (!_options.step) _step = _gWidth; else _step = _options.step*_liWidth;
      if (_options.slideNum && !_options.step) {
        var _lastSection = 0;
        var _sectionWidth = 0;
        while(_sectionWidth < _liSum)
        {
          _sectionWidth = _sectionWidth + _gWidth;
          if(_sectionWidth > _liSum) {
                 _lastSection = _sectionWidth - _liSum;
          }
        };
        jQuery.fn.galleryScroll.numListCreate(jQuery(_options.slideNum, _this), _liSum, _gWidth,_lastSection);
        jQuery.fn.galleryScroll.numListActive(_margin, jQuery(_options.slideNum, _this),_gWidth,_lastSection);
        numClick();
      };
      //if (_margin == _options.innerMargin) jQuery(this).addClass(_options.disableClass);
      if (_liSum - _gWidth  < _margin - _options.innerMargin) {
        if (!_options.circleSlide) jQuery(_options.btNext, _this).addClass('next-'+_options.disableClass);
        _animatedBlock.animate({marginLeft: -(_liSum - _gWidth + _options.innerMargin)}, {queue:false, duration: _options.duration});
      };
    });
  });
}
