var conts = ['img1', 'img2', 'img3', 'img4', 'img5'];

function isImageOk(img) {
    if (!img.complete) {
        return false;
    }

	if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
        return false;
    }

    return true;
}

$(document).ready(function() {
	//hlasky
	$('ul.error').wrap('<div id="flashes"></div>');

	$('div#flashes').hide().addClass('jqmWindow')
	.prepend('<a href="#" class="jqmClose">X</a>').jqm().jqmShow();

	/*
	function contentLoad() {
		$('label.required').css('font-style', 'normal').append(' *')
	}

	contentLoad();
	*/

	//swfobject.embedSWF('../swf/slide.swf', 'partners', '540', '77', '9.0.0', './swf/expressInstall.swf');

	//hp menu
	var hpMenu = $('div#hpMenu ul');
	var th = hpMenu.height();
	var opened = false;
	var over = false;
	hpMenu.css({
		'opacity': 0.8,
		'position': 'relative',
		'top': th
	});

	function closeMenu() {
		if(!over) {
			hpMenu.animate({
				'top': th
			});
			opened = false;
		}
	}

	$('div#hpMenuHit').mouseenter(function(){
		if(!opened) {
			hpMenu.animate({
				'top': 0
			});
			opened = true;
		}
		over = true;
	}).mouseleave(function(){		over = false;

		window.setTimeout(closeMenu, 200);
	});

	hpMenu.mouseenter(function(){
		over = true;
	}).mouseleave(function(){
		over = false;
		window.setTimeout(closeMenu, 200);
	});

	//social
	$('a#showSocial').click(function(event){
		event.preventDefault();
		$('ul#social').toggle();
	});

	$('ul#social a').click(function(){
		$('ul#social').hide();
	});

	$('a.print').click(function(event){
		event.preventDefault();
		window.print();
	});

	//request
	$('div#request').css('visibility', 'hidden');

	//preload menu a tools
	$('#projectSubmenu a').each(function(){
		var t = $(this);
		var src = t.css('background-image').replace('url("', '').replace('")', '');
		if(src != 'none') {
			var img = $('<img src="'+src.replace('.png', '_o.png')+'" alt="" />');
		}
	});

	$('#menu a img').each(function(){
		var t = $(this);
		var src = t.attr('src');
		var img = $('<img src="'+src.replace('.png', '_o.png')+'" alt="" />');

	});

	//project detail image groups
	var detailImages = $('div#detail div#images');

	if(detailImages.length) {
		detailImages.find('div#groupSelect a').click(function(event){
			event.preventDefault();

			var showId = $(this).attr('class').replace('showGroup', '');

			detailImages.find('a.smImg').css('opacity', 1);

			if(showId != '') {
				detailImages.find('a.group'+showId).css('opacity', 0.4);
			}
		});
	}
});

$(window).load(function(){
	//menu
	$('#menu a img').hover(function(){
		var t = $(this);
		var src = t.attr('src');
		t.attr('src', src.replace('.png', '_o.png'));
	}, function(){
		var t = $(this);
		var src = t.attr('src');
		t.attr('src', src.replace('_o.png', '.png'));
	});

	//hp fading
	if($('#text1').length) {
		$.each(conts, function() {
			var imgs = $('div#'+this+' img');
			var img = imgs.eq(imgs.length - 1);

			img.attr('src', img.attr('loadSrc'));
		});

		$.each(conts, function() {
			$('div#'+this).createFader(4500);
			$.faderController.stopFader(this);
		});

		var interval = null;
		var lastFade = null;

		function QFade() {
			interval = window.setTimeout(function(){
				if(lastFade) {
					$.faderController.stopFader(lastFade);
				}

				var oldFade = lastFade;
				while(oldFade == lastFade) {
					var rnd = Math.floor(Math.random() * (conts.length - 1));
					lastFade = conts[rnd];
				}

				var fader = $.faderController.getFader(lastFade);
				var rnd = Math.floor(Math.random() * fader.list.length);

				var loadImage = $(fader['list'][rnd]);

				var go = function() {
					$.faderController.skipToIndex(lastFade, rnd);
					QFade();
				}

				if(
				loadImage.attr('src') != ''
				&& isImageOk(fader['list'][rnd])
				) {
					go();
				} else {
					loadImage.unbind('load').load(function(){
						go();
					});

					loadImage.attr('src', loadImage.attr('loadSrc'));
				}
			}, 4000);
		}

		QFade();
	}

	//image grid
	var projects = $('div#projects');

	if(projects.length) {
		$.extend($.fn, {
			imageGrid: function (width, wrapEleType, imgClass) {
				var grid = $(this);
				var wraps = grid.find(wrapEleType);
				var marginRight = parseInt(wraps.eq(0).css('margin-right'));

				var rows = [];
				var rowWidths = [];
				var row = [];
				var w = 0;
				var lastWrap = null;
				var i = 1;

				wraps.each(function(){
					var wrap = $(this);
					var iw = wrap.find('img.'+imgClass).eq(0).width();

					if(w + iw > width) {
						rows.push(row);
						row = [];
						rowWidths[i] = w - marginRight;
						w = 0;
						++i;
						lastWrap
							.css({
								'margin-right': 0
							})
							.addClass('gridLast');
					}

					w += iw + marginRight;

					row.push(wrap);
					wrap.addClass('row'+i);
					lastWrap = wrap;
				});

				if(row.length) {
					rows.push(row);
					row = [];
					w = 0;
					lastWrap.css({
						'margin-right': 0
					});
				}

				$.each(rows, function(i, val){
					grid.find(wrapEleType+'.row'+(i+1))
						.wrapAll('<div id="gridRow'+(i+1)+'" class="gridRow"></div>');
				});

				grid.find('.gridRow')
				.append('<div class="clear">&nbsp;</div>')
				.css({
					'width': width,
					'overflow': 'hidden'
				}).each(function(){
					var t = $(this);
					if(t.find('.gridLast').length) {
						var wraps = t.find(wrapEleType);
						var rowId = t.attr('id').replace('gridRow', '');
						var diff = width - rowWidths[rowId];
						var oneDiff = Math.floor(diff / wraps.length);
						var rest = diff - (oneDiff * wraps.length);

						wraps.each(function(){
							var t = $(this);
							var img = t.find('img.'+imgClass).eq(0);
							var nWid = img.width() + oneDiff;

							if(t.hasClass('gridLast') && rest > 0) {
								nWid += rest;
							}

							t.css({
								'display': 'block',
								'overflow': 'hidden',
								'width': nWid,
								'height': img.height(),
							});

							img.css({
								'width': nWid,
							});
						});
					}
				});
			}
		});

		var listImgs = projects.find('img.listImg');
		var loaded = 0;
		listImgs.bind('load', function(){
			++loaded;
			if(loaded == listImgs.length) {
				projects.imageGrid(964, 'a', 'listImg');
			}
		}).each(function(){
			var t = $(this);
			t.attr('src', t.attr('loadSrc'));
		});

		function stopAll() {
			$('img.aniImg').stop().remove();
			projects.find('span.detail').css({
				'display': 'none'
			});
		}

		projects.find('a').mouseenter(function(){
			var t = $(this);

			stopAll();

			if(t.data('over') == undefined || t.data('over') == false) {
				t.data('over', true);

				var detail = t.find('span.detail');

				function showDetail(detail) {
					detail.css({'display': 'block'});
					var dImg = detail.find('img.detailImg');

					var dw = dImg.width();
					var dh = dImg.height();

					var dew = detail.width();
					var deh = detail.height();

					var deMT = parseInt(detail.css('margin-top'));
					var deML = parseInt(detail.css('margin-left'));

					detail.css({'display': 'none'});

					var a = detail.parents('a').eq(0);
					var baseImg = a.find('img.listImg');

					stopAll();

					a.prepend('<img src="'+dImg.attr('src')+'" alt="" class="aniImg" />');
					var aniImg = a.find('img.aniImg');

					aniImg.css({
						'width': baseImg.width(),
						'height': baseImg.height(),
						'margin-top': 0,
						'margin-left': 0
					}).animate({
						'width': dw,
						'height': dh,
						'margin-top': deMT + 10,
						'margin-left': deML + 10
					}, 200, function(){
						detail.css({'display': 'block'});
						//aniImg.remove();
					});
				}

				if(!detail.data('repo')) {
					var dImg = detail.find('img.detailImg');
					dImg.load(function(){
						detail.css({'display': 'block'});
						var dw = dImg.width();
						var dh = dImg.height();
						detail.css({'display': 'none'});

						detail.css({
							'margin-top': -Math.floor((dh - t.height()) / 2),
							'margin-left': -Math.floor((dw - t.width()) / 2)
						});

						detail.data('repo', true);
						showDetail(detail);
					});

					dImg.attr('src', dImg.attr('loadSrc'));
				} else {
					showDetail(detail);
				}
			}
		}).mouseleave(function(){
			$(this).data('over', false);
			stopAll();
		});

		projects.find('span.detail img.detailImg').mouseleave(function(){
			stopAll();
			projects.find('a').data('over', false);
		});
	}

	//detail tools
	$('#projectSubmenu a').hover(function(){
		var t = $(this);
		var src = t.css('background-image');
		t.css('background-image', src.replace('.png', '_o.png'));
	}, function(){
		var t = $(this);
		var src = t.css('background-image');
		t.css('background-image', src.replace('_o.png', '.png'));
	});

	//detail images
	var images = $('div#data div#images img');

	if(images.length) {
		images.each(function(){
			var t = $(this);
			t.css({
				'position': 'relative',
				'margin-left': -Math.round((t.width() - 93) / 2)
			});
		});

		var big = $('div#image img');
		var ass = $('div#data div#images a.smImg');

		ass.click(function(event){
			event.preventDefault();
			big.attr('src', $(this).attr('href'));
		});
	}

	//request
	var request = $('div#request');

	if(request.length) {
		var mainimg = $('div#image');
		var hei = mainimg.height();
		var form = request.find('div.form');
		var cover = request.find('div.cover');

		if(request.find('#flashes').length == 0) {
			request.css({
				'opacity': 0
			});
		}

		cover.css({
			'opacity': 0.6
		});

		cover.add(form).css({
			'height': hei
		});

		form.css({
			'padding-top': Math.round((hei - form.find('form').height()) / 2)
		});

		request.css({
			'visibility': 'visible'
		}).hide();

		var show = false;

		$('div#projectSubmenu a.request').click(function(event){
			event.preventDefault();
			if(show) {
				request.animate({'opacity': 0}, function(){
					request.hide();
				});
				show = false;
			} else {
				request.css('opacity', 0).show().animate({'opacity': 1});
				show = true;
			}
		});
	}
});
