/**
 * Main JS Tools
 */
var ow = {
	
	/**
	 * Modules managment tools
	 *
	 */
	modules: {
		registred: {},
		register: function(name, module) {
			ow.modules.registred[name] = module;
		},
		get: function(name) {
			return ow.modules.registred[name];
		}
	},
	
	
	
	/**
	 *	Utils 
	 * 
	 */
	utils: {
		
	}
	
};






/*	MODULES */

/** 
 * Animate placeholder
 * 
 * @name placeholder
 */
;(function() {
	var m = {
		init: function() {
			var placeholder = $('.placeholder').find('input').eq(0);
			if (placeholder.val() !== "") {
				placeholder.prev('label').hide();
			}
			placeholder.bind({
				focus: function(e) {
					var current = $(e.target);
					current.prev('label').fadeOut('fast');
				},
				blur: function(e) {
					var current = $(e.target);
					if (current.val() === "") {
						current.prev('label').fadeIn('fast');
					}
				}
			});
		}
	}; 
	ow.modules.register('placeholder', m);
})();






/**
 *	Not support Browser communicat
 *
 *	notSupportBrowser
 */
/*@cc_on
;(function() {
	var m = {
		init: function() {
			var support = !!document.createElement('canvas').getContext;
			var communicat = '';
			
			if (!support) {
				communicat += '<div style="background:#ff4b33;text-align:center;padding:10px;font-size:20px;">';
					communicat += '<p>Twoja przeglądarka nie obsługuje <a href="http://www.w3.org/TR/html5/">HTML5</a> oraz <a href="http://www.w3.org/TR/CSS/">CSS3</a>.</p>';
					communicat += '<p>Strona celowo nie została dostosowana do starszych przeglądarek.</p>';
					communicat += '<p>Sprawdź: <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Progressive Enhancement</a></p>';
				communicat += '</div>';
			
				$('body').prepend($(communicat));
				//$('head').find('link').remove();
			}
		}
	}
	ow.modules.register('notSupportBrowser', m);
})();
@*/






/**
 * Code Expose 
 * 
 * @name codeExpose
 */
;(function() {
	var wrapperClass = 'code';

	var m = {
		init: function() {
			$('article code, .commentList code').each(function(i, el) {
				var wrap = $('<div class="'+wrapperClass+'"></div>');
				var list = $('<ol></ol>');
				var codeText = $(el).text().trim();
				var codeLines = codeText.split('\n');

				wrap.append(list);
				for (var j = 0, iLen = codeLines.length, li, line; j < iLen; j++) {
					li = $('<li></li>');
					line = $('<code>'+codeLines[j]+'</code>');
					li.append(line);
					list.append(li);
					line.css('padding-left', (codeLines[j].split('\t').length-1)*33 );
				}
				$(el).replaceWith(wrap);
			});
		}
	};
	ow.modules.register('codeExpose', m);
})();






/**
 * Show comments counter
 * 
 * @name commentsCounter
 */
;(function() {
	var m = {
		init: function() {
			$('.commentList span').each(function(i, el) {
				$(el).html(i + 1);
			});
		}
	};
	ow.modules.register('commentsCounter', m);
})();






/**
 * Language Tabs on About Me page
 * 
 * @name languageTabs
 */
// (function() {
// 	var m = {
// 		init: function() {
// 			var tabs = $('.selectLang li');
// 			tabs.find('a').bind('click', function(e) {
// 				var current = e.target;
// 				var currentHash = current.hash;
// 				var visibleContentTab = $('.langTab:visible');
// 				var content = $('#content');

// 				tabs.removeClass('current');
// 				$(current).parent().addClass('current');

// 				if (currentHash !== '#' + visibleContentTab.attr('id')) {
					
// 					content.css('backgroundColor', '#2c2c2c');
// 					setTimeout(function() {
// 						visibleContentTab.fadeOut(500, function() {
// 							$(currentHash).fadeIn(500, function() {
// 								content.css('backgroundColor', 'transparent');
// 							});
// 						});
// 					}, 200);
// 				}
// 				e.preventDefault();
// 			});
// 		}
// 	};
// 	ow.modules.register('languageTabs', m);
// })();






/**
 * Forms validator
 * 
 * @name formsValid
 */
(function() {
	var communicat;
	
	var m = {
		init: function(form) {
			$(form).submit(function() {
				var fields = $(this).find('.f');
				var errors = [];
				
				$(fields).each(function(i, el) {
					
					if ( $(el).val().trim().length === 0 && $(el).attr('required') === 'required') {
						
						var error;
						
						$(el).parent('p').addClass('error').find('em').remove();
						error = $('<em>To pole nie może być puste</em>');
						$(el).after(error);
						errors.push(error);
						
					} else if ( !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test( $(el).val().trim() ) && $(el).attr('type') === 'email' ) {
						
						var error;
						
						$(el).parent('p').addClass('error').find('em').remove();
						error = $('<em>Nieprawidłowy adres e-mail</em>');
						$(el).after(error);
						errors.push(error);
						
					} else {
						
						$(el).parent('p').removeClass('error').find('em').css('visibility', 'hidden');
						
					}
				});
				
				if ( $(errors).length ) {
					if (typeof communicat === 'undefined') {
						communicat = $('<div class="msg error">Coś chyba nie poszło przy dodawaniu komentarza. <small>Sprawdź wyróżnione pola i spróbuj jeszcze raz.</small></div>');
						
						$(form).before( communicat );
						communicat.slideDown(400, function() {
							$(this).animate({
								opacity: 1
							}, 500) ;
						});
					}
					
					return false;
				}
			});
		}
	};
	ow.modules.register('formsValid', m);
})();






/*
 * Portfolio Show
 * include Lazy loading
 * 
 * @name portfolioShow
 */
;(function() {
	var slideSpeed = 300;
	var fadeSpeed = 150;
	var layClass = '.layer';
	var descClass = '.desc';
	
	var m = {
		init: function() {
			var articles =  $('.screen');
			var toShow = {};
			var last;
			var wathImgs;
			
			// Lazy loading
			articles.each(function(i, val) {
				toShow[$(val).offset().top] = $(val).find('img');
				last = $(val).offset().top;
			});
			
			var wathImgs = function() {
				var winTop = $(window).scrollTop();
				var winBottom = $(window).height();
				
				$.each(toShow, function(top, el) {
					if (top < winTop + winBottom) {
						$(el).fadeIn();
						delete toShow[top];
					} else {
						return false;
					}
				});
			};
			
			$(window).bind('scroll resize', function() {
				if (typeof toShow[last] !== 'undefined') {
					wathImgs();
				}
			});
			
			wathImgs();
			
			// Animate description show
			articles.hover(
				function() {
					var lay = $(this).find(layClass);
					var head = $(this).prev('h2');
					
					
					lay.stop().animate({left: 0}, slideSpeed, function() {
						$(head).stop().animate({top: '45px', left: '20px'}, 'fast', function() {
							lay.find(descClass).stop().animate({opacity: 1}, fadeSpeed);
						});
					});
				},
				function() {
					var lay = $(this).find(layClass);
					var head = $(this).prev('h2');
					
					lay.find(descClass).stop().animate({opacity: 0}, fadeSpeed, function() {
						$(head).stop().animate({top: '0', left: '0'}, 'fast', function() {
							lay.stop().animate({left: 705}, slideSpeed);
						});
					});
				}
			);
		}
	};
	ow.modules.register('portfolioShow', m);
})();

