var Media = new Class({
	Implements: [Options],
	options: {
		forPrintClass: 'print',
		forScreenClass: 'screen',
		externalRel: 'external'
	},

	initialize: function(container, options) {
		this.setOptions(options);
		this.container = $(container);
		var externalFootnote = false;
		this.container.getElements('a').each(function(elem) {
			var href = elem.get('href');
			if (!elem.get('class') && href && href.slice(0, 1) != '#') {
				var html = elem.set('class', this.options.forScreenClass).get('html');
				var re = new RegExp('(http://|https://|ftp://|ftps://|mailto:)?' + html);
				if (html.replace(/&amp;/g, '&').replace(/\/+$/, '') == href.replace(/\/+$/, '')){
					html = '<u>' + html + '</u>';
				}
				else if (!re.test(href)) {
					html += ' (<u>' + href + '</u>)';
				}
				new Element('span', {'class': this.options.forPrintClass}).set('html', html).injectAfter(elem);
				re = this.getBaseUrlRegExp();
				if (!re.test(href) && !elem.getElement('img')) {
					elem.set('rel', 'external');
					externalFootnote = true;
				}
			}
			if (elem.hasClass('addtocart')) {
				if (!elem.get('title')) elem.set('title', 'Vložit do košíku');
			}
		}.bind(this));
		if (externalFootnote) {
			this.container.adopt(new Element('p', {'class': 'small screen'}).set('html', '<img src="http://www.jaw.cz/images/external.png" alt=""/> Tato značka znázorňuje, že klepnutím na takový odkaz opustíte stránky <a href="http://www.jaw.cz">www.jaw.cz</a><br />Nefunguje některý z odkazů? <a href="http://www.jaw.cz/kontakt">Sdělte nám to prosím</a> a co nejrychleji to opravíme.'));
		}
		this.container.getElements('table').each(function(elem) {
			if (!elem.get('class')) {
				elem.getElements('tr').each(function(el,i) {
					if (el.getParent().get('tag') == 'thead') { return false; }
					var _class = i % 2 ? 'even' : 'odd'; el.addClass(_class);
					el.addEvent('mouseenter', function() { if(!el.hasClass('highlight')) { el.addClass('mo').removeClass(_class); } });
					el.addEvent('mouseleave', function() { if(!el.hasClass('highlight')) { el.removeClass('mo').addClass(_class); } });
					el.addEvent('click', function() {
						if(el.hasClass('highlight')) {
							el.removeClass('highlight').addClass(_class);
						}
						else {
							el.removeClass(_class).removeClass('mo').addClass('highlight');
						}
					});
		
				});	
			}
		});
	},
	getBaseUrlRegExp: function() {
		var base = this.getBaseUrl();
		return new RegExp(base.replace(/^(http:\/\/|https:\/\/)/, '^(http://|https://)'));
	},
	getBaseUrl: function() {
		var base = document.getElement('base');
		if (base) {
			return base.get('href'); 
		}
		else {
			return window.location.protocol + '//' + window.location.host + '/';
		}
	}
});
window.addEvent('domready', function() {
	String.implement({
		toNumber: function() {
			return this.replace(',', '.').toFloat() || 0;
		}
	});
	Number.implement({
		toCurrency: function() {
			return this.toFixed(2).replace('.', ',').replace(',00', ',-');
		}
	})
	function getpriceswitchtext() {
		var pp = (taxes[document.selectedTax] - 1).round(2) * 100;
		return 'Všechny uvedené ceny jsou ' + (document.withDPH
			? 's ' + pp + '% DPH. <a href="#" onclick="document.formatprice(false);return false;">Zobrazit bez DPH</a>'
			: 'bez DPH. <a href="#" onclick="document.formatprice(true);return false;">Zobrazit s DPH</a>');
	}
	var taxes = {'old': 1.19, 'new': 1.2};
	document.selectTax = function(tax) {
		document.selectedTax = tax;
		document.taxQuantizer = taxes[tax];
		document.formatprice(true);
	};
	document.formatprice = function(dph, element) {
		if (!element) {
			element = 'pagearea';
			document.withDPH = dph;
		}
		$(element).getElements('.price').each(function(elem){
			elem.price = (elem.price ? elem.price : elem.get('html').toNumber());
			elem.set('html', (document.withDPH ? elem.price * document.taxQuantizer : elem.price).toCurrency());
			elem.highlight();
		});
		$(element).getElements('.imgprice').each(function(elem){
			var overlays = JSON.decode(elem.get('rel'));
			if (overlays.length == 2) {
				elem.set('src', overlays[dph ? 1 : 0]);
			}
		});
		var html = getpriceswitchtext();
		$(element).getElements('.toggle-price').each(function(elem){
			elem.set('html', html);
		});
	};
	document.selectTax('new');	
});