// page init
$(function() {
	initCufon();
	initInputs();
	initContactForm();
});
$(window).bind("load", function() {
	initSlideShow();
});

function initContactForm() {
	var _animSpeed = 250;
	var _regEmail = /^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/;
	$('form.contact-form').each(function(){
		var _errorClass = 'error';
		var _form = $(this);
		var _warning = _form.find('strong.error').hide();
		var _success = _form.find('strong.success').hide();
		var _content = _form.find('.form-content');
		var _errors = '';

		function checkFields() {
			var _flag = false;
			_errors = '';
			_form.find('label').removeClass(_errorClass);

			// fields validation
			_form.find('input.required, textarea.required').each(function(){
				if(!$(this).val().length || $(this).val() == $(this).attr('alt')) addError($(this));
			});
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test($(this).val())) addError($(this));
			});

			//if(!_flag) _warning.hide();
			return _flag;

			function addError(_obj) {
				_obj.parents('div.field-holder').find('label').addClass(_errorClass);
				_flag=true;
			}
		}

		// catch form submit event
		_form.submit(function(){
			if(checkFields()) {
				_warning.slideDown(_animSpeed);
			} else {
				var _formData = _form.serialize();
				var _target = _form.attr('action');

				$.ajax({
					type: "POST",
					url: _target,
					data: _formData,
					success: function(msg){
						_form.css({display:'block'});
						_form.css({height:_form.height()});
						_content.fadeOut(_animSpeed,function(){
							_success.fadeIn(_animSpeed);
						});
					},
					error: function(msg){
						alert('AJAX Error');
					}
				});
			}
			return false;
		});
	});
}

// init slideshow
function initSlideShow() {
	$('div.slideshow').slideShow({
		slideEl:'div.gallery ul li',
		linkNext:'a.next-arrow',
		linkPrev:'a.prev-arrow',
		autoSlideShow:false,
		autoHeight:true,
		switchTime:3000,
		duration:650
	});
}

// clear inputs
function initInputs() {
	var _inputs = document.getElementsByTagName('input');
	if (_inputs) {
		for(var i=0; i<_inputs.length; i++) {
			if (_inputs[i].type == 'text' || _inputs[i].type == 'password') {
				_inputs[i].alt = _inputs[i].value;

				_inputs[i].onfocus = function(){
					if(this.value==this.alt) this.value='';
					_value = this.value;
				}
				_inputs[i].onblur = function(){
					if (this.value == '')
					this.value = this.alt;
				}
			}
		}
	}
	var _textareas = document.getElementsByTagName('textarea');
	if (_textareas) {
		for(var i=0; i<_textareas.length; i++) {
			if (_textareas[i].value) {
				_textareas[i].title = _textareas[i].value;

				_textareas[i].onfocus = function(){
					if(this.value==this.title) this.value='';
					_value = this.value;
				}
				_textareas[i].onblur = function(){
					if (this.value == '')
					this.value = this.title;
				}
			}
		}
	}
}

// cufon init
function initCufon() {
	Cufon.set('fontFamily', 'folio');
	Cufon.replace('.logo', { fontFamily: 'folio'});
	Cufon.replace('#nav a', { fontFamily: 'folio', hover: true});
	Cufon.replace('#header .add-nav li', { fontFamily: 'folio', hover: true});
	Cufon.replace('#main .img-holder .text-holder h2', { fontFamily: 'folio'});
	Cufon.replace('#main .box-holder h2', { fontFamily: 'folio'});
	Cufon.replace('#main .box-holder .heading span', { fontFamily: 'folio'});
	Cufon.replace('#main .title h1', { fontFamily: 'folio'});
	Cufon.replace('#main .title h1 span', { fontFamily: 'folio'});
	Cufon.replace('#main .img-holder .text-holder p', { fontFamily: 'folio'});
	Cufon.replace('#content .box-holder .box h3', { fontFamily: 'folio'});
	Cufon.replace('.featuredwork .box-holder .box .heading span', { fontFamily: 'folio'});
	Cufon.replace('#header .add-nav a', { fontFamily: 'folio'});
	Cufon.replace('#header .add-nav a', { fontFamily: 'folio'});
}

// slideshow plugin
jQuery.fn.slideShow = function(_options){
	var _options = jQuery.extend({
		slideEl:'div.img-hold img',
		linkNext:'a.next',
		linkPrev:'a.prev',
		linkPause:'a.pause',
		numElementLink:'div.nav li a',
		duration:500,
		pauseOnHover:true,
		autoSlideShow:false,
		autoHeight:false,
		switchTime:3000,
		event:'click',
		currentEl:'#footer span.cur',
		allEl:'#footer span.all'
	},_options);

	return this.each(function(){
		var _THIS = jQuery(this);
		var _slideEl = $(_options.slideEl, _THIS);
		var _elTagName = _options.slideEl;
		var _linkNext = $(_options.linkNext, _THIS).length ? $(_options.linkNext, _THIS) : false;
		var _linkPrev = $(_options.linkPrev, _THIS).length ? $(_options.linkPrev, _THIS) : false;
		var _linkPause = $(_options.linkPause, _THIS).length ? $(_options.linkPause, _THIS) : false;
		var _numElementLink = $(_options.numElementLink, _THIS).length ? $(_options.numElementLink, _THIS) : false;
		var _numElement = $(_options.numElementLink, _THIS).length ? _numElementLink.parent() : false;
		var _duration = _options.duration;
		var _switchTime = _options.switchTime;
		var _numElActive, _n, _timer = false, _hover = false;

		if (!_slideEl.filter('.active').length)
			_slideEl.eq(0).addClass('active');
		$(_slideEl).not(".active").css('display','none');

		if ($(_numElement).length) {activeNumEl()}

		if (_options.autoSlideShow) {
			_timer = setTimeout(function(){nextEl()},_switchTime);
			contentHover();
		}
		if (_linkNext) {
			$(_linkNext).click(function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				if ($(_slideEl).filter(".active").next().is(_elTagName)) {
					$(_slideEl).filter(".active").next().addClass("next");
				} else {
					$(_slideEl).eq(0).addClass("next");
				}
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPrev) {
			$(_linkPrev).click(function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				if ($(_slideEl).filter(".active").prev().is(_elTagName)) {
					$(_slideEl).filter(".active").prev().addClass("next");
				} else {
					$(_slideEl).filter(":last-child").addClass("next");
				}
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPause) {
			if (!_options.autoSlideShow) {
				_linkPause.addClass('play');
				_options.autoSlideShow = true;
				if (!_hover) contentHover();
			}
			$(_linkPause).click(function(){
				if (!_linkPause.is('.play')) {
					clearTimeout(_timer);
					_linkPause.addClass('play');
				} else {
					_linkPause.removeClass('play');
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				return false;
			});
		}
		if (_numElementLink) {
			$(_numElementLink).bind(_options.event, function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				_n = _numElement.index($(this).parent());
				if (!$(_slideEl).eq(_n).hasClass("active")){
					$(_slideEl).eq(_n).addClass("next");
					fadeElement();
					activeNumEl();
				}
				return false;
			});
		}
		if (_options.currentEl || _options.allEl) {
			_THIS.all = _slideEl.length;
			$(_options.allEl, _THIS).html(_THIS.all);
			function currentNum() {
				var _index = _slideEl.index(_slideEl.filter('.active')) + 1;
				$(_options.currentEl, _THIS).html(_index);
			}
			currentNum();
		}
		function contentHover() {
			if(!_options.pauseOnHover) return;
			_hover = true;
			_slideEl.hover(function() {
				if (_timer) clearTimeout(_timer);
			}, function(){
				if (_linkPause && !_linkPause.is('.play'))
					_timer = setTimeout(function(){nextEl()},_switchTime);
				else if (!_linkPause)
					_timer = setTimeout(function(){nextEl()},_switchTime);
			});
		}
		function nextEl(){
			if ($(_slideEl).filter(".active").next().is(_elTagName)){
				$(_slideEl).filter(".active").next().addClass("next");
			} else {
				$(_slideEl).eq(0).addClass("next");
			}
			fadeElement();
			activeNumEl();
			_timer = setTimeout(function(){nextEl()},_switchTime);
		};
		function activeNumEl() {
			$(_numElement).removeClass("active");
			_numElActive = $(_slideEl).index($(_slideEl).filter(".active")[0]);
			$(_numElement).eq(_numElActive).addClass("active");
		};
		function fadeElement(){
			$(_slideEl).filter(".active").fadeOut(_duration).removeClass("active");
			$(_slideEl).filter(".next").fadeIn(_duration).addClass("active").removeClass("next");
			if (_options.autoHeight) $(_slideEl).filter(".active").eq(0).parent().animate({height:$(_slideEl).filter(".active").eq(0).height()},{duration:_duration});
			if (_options.currentEl || _options.allEl) currentNum();
		};
		if (_options.autoHeight) $(_slideEl).filter(".active").eq(0).parent().animate({height:$(_slideEl).filter(".active").eq(0).height(),width:$(_slideEl).filter(".active").eq(0).outerWidth(true)},{duration:0});
	});
}
