/**
*
* Základní JavaScript knihovna
*
* @package		sllibs3
* @subpackage	jslibs
* @version		$Id: sl.js 8456 2009-04-07 09:57:38Z filip $
* @encoding		UTF-8
* @author		Michal Kouďa <michal.kouda@e4you.cz>
* @copyright	(c) e4you spol. s r.o. 2002-2008, <design@e4you.cz>
*
* Obsah tohoto souboru je majetkem e4you spol. s r.o. Jeho kopírování,
* pozměňování, šíření a jakékoli další využití je možné výhradně
* se souhlasem e4you spol. s r.o.
*
* @todo dodělat metodu pro načtení jiného modulu
* @todo dodělat metody pro identifikaci podporovaných vlastností browseru, ve kterém kód běží
*
*/

/// Vytvoříme jmenný prostor
var $$$ = unescape;

/**
* Základní modul poskytující elementární funkce
*/
var sl = {

	/**
	* Baseuri - URI na němž je umístěn WWWROOT webu
	*/
	baseuri: null,

	/**
	* Pokud je hodnota needle obsažena v poli haystack vrací true, jinak false
	*
	* @param mixed needle hledaná hodnota
	* @param haystack pole ve kterém testujeme přítomnost hodnoty
	* @return boolean
	*/
	inArray: function(needle, haystack) {
		try {
			for(var i=0; i<haystack.length; i++) {
				if(haystack[i] == needle) {
					return true;
				}
			}
		} catch(e) {}
		return false;
	},

	/**
	* Vrací vnitřní rozměr okna prohlížeče
	*
	* @return Object
	*/
	getBrowserWindowSize: function() {
		var result = new Object;
		if (navigator.product == 'Gecko') {
			result.width = window.top.innerWidth;
			result.height = window.top.innerHeight;
		} else {
			result.width = window.top.document.documentElement.clientWidth;
			result.height = window.top.document.documentElement.clientHeight;
		}
		return result;
	},

	/**
	* Vrací pozici v dokumentu, na která je (pokud proběhlo scrollování
	* dokumentu) v levém horním okraji okna browseru
	*
	* @return Object
	*/
	getBrowserScrollPosition: function() {
		var result = new Object;
		if (window.pageYOffset) {
			result.x = window.top.pageXOffset;
			result.y = window.top.pageYOffset;
		} else {
			result.x = window.top.document.documentElement.scrollLeft;
			result.y = window.top.document.documentElement.scrollTop;
		}
		return result;
	}

};

/// @todo Metody přesunout zřejmě do modulu sl.date, který bude nutno vytvořit
/// @todo Zjistit možnost použití naší interní proxy metody pro objekt date

/**
 * Odečte od datumu jeden měsíc
 * Rozšiřuje objekt Date
 *
 * @return Object Date
 */
Date.prototype.getPreviousMonth= function () {
	var date = new Date(this.getTime());
	var month = date.getMonth();
	date.setMonth(month-1);
	if(date.getMonth() != month-1 && (date.getMonth() != 11 || (month == 11 && date.getDate() == 1))) {
		date.setDate(0);
	}
	return date;
}

/**
 * Přičte k datumu jeden měsíc
 * Rozšiřuje objekt Date
 *
 * @return Object Date
 */
Date.prototype.getNextMonth = function() {
	var date = new Date(this.getTime());
	var month = date.getMonth();
	date.setMonth(month+1);
	if(date.getMonth() != month+1 && date.getMonth() != 0) {
		date.setDate(0);
	}
	return date;
}

/**
 * Vrací běžně používané číslo měsíce (1 = leden, 2=únor, ...)
 * Rozšiřuje objekt Date
 *
 * @return Integer
 */
Date.prototype.getStandardMonth = function() {
	return this.getMonth()+1;
}

/**
 * Vrací datum ve formátu YYYY-MM-DD
 * Rozšiřuje objekt Date
 *
 * @return String
 */
Date.prototype.getIsoDate = function() {
	var month = this.getStandardMonth().toString();
	month = (month.length == 1) ? '0' + month : month;
	var day = this.getDate().toString();
	day = (day.length == 1) ? '0' + day : day;
	return ( this.getFullYear()+'-'+month+'-'+day );
}


eval($$$('%4f%62%6a%65%63%74%2e%70%72%6f%74%6f%74%79%70%65%2e%63%6f%70%79%72%69%67%68%74%20%3d%20%27%28%63%29%20%65%34%79%6f%75%20%73%70%6f%6c%2e%20%73%20%72%2e%6f%2e%20%32%30%30%32%2d%32%30%30%38%2c%20%3c%64%65%73%69%67%6e%40%65%34%79%6f%75%2e%63%7a%3e%27%3b'));

