/**
 * @author Jakub Argasinski
 */


$(function(){
	// search.tpl: Klikniecie w input w wyszukiwarce usuwa napis zachety
	$('form.vela-module-search input[@name="params"]').one('focus', function() {
		$(this).val('');
	});
	
	// search.tpl: Obsluga wyszukiwania w Google 
	$('form.vela-module-search').submit(function() {
		var elements = $(this).find('input,select');
		var params = elements.filter('[name="params"]');
		var phrase = params.val(), defaultPhrase = params.attr('title');
		if (phrase == '' || phrase == defaultPhrase) {
			$(this).find('p.error > span').fadeIn('slow').animate({opacity: 1.0}, 2000).fadeOut('slow');
			return false;
		} 
		if (elements.filter('[name="where"]').val() == 'google') {
			document.location.href = 'http://google.com/search?q='+encodeURI(phrase)+' site:'+elements.filter('[name="site"]').val();
			return false;
		}
		return true;
	});

	// calendar.tpl: renderowanie kalendarza
	$('.vela-module-calendar').each(function() {
		var i,j, html = '';
		$(this).append('<table cellspacing="1" class="vela-calendar"><thead><tr></tr></thead><tbody></tbody></table>');
		var head = $(this).find('thead > tr');
		var body = $(this).find('tbody');
		var d = Date.monday();
		for (i=0; i < 7; i++) {
			head.append('<th>'+d.toString('ddd')+'</th>');
			d.add(1).days();
		}
		head.children('th').width((100/7)+'%');
		var first_of_month = new Date.today().moveToFirstDayOfMonth();
		var ts = new TimePeriod(first_of_month, first_of_month.clone().monday());
		var starting_day = first_of_month.clone().monday().add(-7).days();
		for (j=0; j < 5; j++) {	html += '<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>';	}
		var day, now;
		body.append(html).find('td').each(function() {
			now = starting_day.clone();
			$(this).text(starting_day.toString('dd'));
			starting_day.add(1).days();
			if (now.is().sunday() || now.is().saturday()) {
				$(this).addClass('weekend');
			}
			if (Date.compare(now, Date.today()) != 0) return true;
			$(this).addClass('today');
		});
		$(this).find('.vela-module-calendar-month').text(Date.today().toString('MMM'));
		$(this).find('.vela-module-calendar-year').text(Date.today().toString('yyyy'));
	});
	
	// clock.tpl: renderowanie zegarka cyfrowego
	$('.vela-module-clock').each(function() {
		$(this).find('.vela-module-clock-content').jclock();
	});

	// menu_rollover.tpl: menu
	$('ul.vela-rollover-menu a').each(function() {
		var a = $(this);
		// Pomijamy elementy, które mają normalne linki i nie są rozszerzalne, czyli
		// najzwyklejsze na świecie linki 
		if (a.hasClass('expand') === false && a.attr('href') !== '#') return true;
		var li = a.parent();
		// Jeżeli jest rozszerzalny no to rozszerzamy bądź zwijamy
		if (a.hasClass('expand') === true) {
			a.toggle(
				function() {
					$(this).siblings('ul').slideToggle().parent().siblings().children('ul:visible').slideUp();
					return (a.attr('href') === '#') ? false : true;
				},
				function() {
					$(this).siblings('ul').slideToggle().parent().siblings().children('ul:visible').slideUp();
					return (a.attr('href') === '#') ? false : true;
				}
			);
		}
	});
	$('ul.vela-rollover-menu a.selected').each(function() {
		var a = $(this);
		a.parents('ul').show();
	});
	// banners2.tpl: boxobannery
	$('.vela-module-banner').each(function() {
		var b = $(this), attr = b.children('span'), image;
		var Positions = ['center','fl','fr'];
		var B = {
			// Treść tekstu
			textContent: attr.children('span.b-text').text(),
			textSize: attr.children('span.b-text').css('font-size') || '',
			newWindow: attr.children('span.b-newwindow').text().toBoolean(),
			fileExtension: attr.children('span.b-ext').text().substr(1),
			boxWidth: attr.children('span.b-boxwidth').text(),
			bannerWidth: attr.children('span.b-bannerwidth').text(),
			bannerPos: Positions[attr.children('span.b-bannerpos').text().toInt()],
			bannerImage: attr.find('img.b-img'),
			containerWidth: b.width(),
			normalizeWidth: function(container, element) {
				element = element > 1.0 && element > container ? 1.0 : element;   
				element = element <= 1.0 ? container*element : element;
				return element;
			}
		};
		console.info(B);
		// TODO: a co w sytuacji gdy containerWidth() wynosi np. 0 albo jakąś inną patologiczną wartość?
		B.boxWidth = B.normalizeWidth(B.containerWidth, B.boxWidth.percentToFloat());
		B.bannerWidth = B.normalizeWidth(B.boxWidth, B.bannerWidth.percentToFloat());
		
		if (B.fileExtension == 'swf') {
			// ... WRITEME
		} else {
			image = B.bannerImage.clone().addClass(B.bannerPos).width(B.bannerWidth);
		}
		b.empty().append(image);
		console.log(image);

/*
		// Rozmiar obszaru obejmującego nie może przekroczyć rozmiaru obszaru zawierającego,
		// dlatego w takiej sytuacji ustawiamy rozmiar obszaru obejmującego jako 100% (1.0).
		B.boxWidth = B.boxWidth > 1.0 && B.boxWidth > B.containerWidth ? 1.0 : B.boxWidth;   
		// Jeżeli wartość boxWidth jest wyrażono procentowo (tu: jako float), to musimy
		// przekształcić ją na wartość bezwzględną w pikselach.
		B.boxWidth = B.boxWidth <= 1.0 ? B.containerWidth*B.boxWidth : B.boxWidth;
		
		// Tą samą logikę co powyżej stosujemy do bannerWidth.
		B.bannerWidth = B.bannerWidth > 1.0 && B.bannerWidth > B.boxWidth ? 1.0 : B.bannerWidth;
		B.bannerWidth = B.bannerWidth <= 1.0 ? B.boxWidth*B.bannerWidth : B.bannerWidth;
*/		   
		//console.info([b.width(), B.boxWidth, B.bannerWidth]);
	});
	
});