/**
* Knihovna běžných JavaScript funkcí
*
* @package		sllibs3
* @version		$Id: slLib.js 6834 2009-01-15 15:06:25Z michal $
* @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.
*
*/

/// identifikace vlastnosti browseru
var runningInGecko = (navigator.product == 'Gecko')
var runningInMSIE = (document.all != null)


/// funkce zjistujici CSS tridu objektu
function getCssClass(obj) {
	try {
		return obj.className;
	} catch(error) {
		return '';
	}
}


/// funkce nastavujici CSS objektu tridu
function setCssClass(obj, cls) {
	try {
		obj.className = cls;
		return true;
	} catch(error) {
		return false;
	}
}


/// funkce zajistujici zpetnou kompatibilitu (lze ji casem odstranit)
function setClass(obj, cls) {
	return setCssClass(obj, cls);
}


/// zjisti jestli ma dany objekt nastavenu predanou CSS tridu
function hasCssClass(obj, cls) {
	all_classes = ' ' + getCssClass(obj) + ' ';
	return (all_classes.indexOf(' ' + cls + ' ') != -1);
}


/// prida CSS tridu predaneho objektu
function addCssClass(obj, cls) {
	if(!hasCssClass(obj, cls)) {
		new_class = getCssClass(obj) + ' ' + cls;
		setCssClass(obj, new_class);
	}
}

/**
* Nahrazené validační funkce:
*
* funkce validEmail() byla nahrazena sl.validator.validEmail()
* funkce validDomainName() byla nahrazena sl.validator.validDomainName()
* funkce validUsername() byla nahrazena sl.validator.validLogin()
* funkce validPasswd() byla nahrazena sl.validator.validPasswd()
* funkce validInteger() byla nahrazena sl.validator.validInteger()
* funkce validPhone() byla nahrazena sl.validator.validPhone()
* funkce validICO() byla nahrazena sl.validator.validIC()
* funkce validDIC() byla nahrazena sl.validator.validTaxNo()
* funkce valid_tax_no() byla nahrazena sl.validator.validTaxNo()
* funkce validPSC() byla nahrazena sl.validator.validPSC()
* funkce validZip() byla nahrazena sl.validator.validPSC()
* funkce validIpList() byla nahrazena sl.validator.validIpList()
*/



function validUserPasswdPair(username,passwd) {
	if(!validUsername(username)) return false;
	if(!validPasswd(passwd)) return false;
	if(passwd.toUpperCase()==username.toUpperCase()) return false;
	if(passwd.search(username)!=-1) return false;
	revuname = '';
	for(i=0;i<username.length;i++) {
		revuname = username.charAt(i) + revuname;
	}
	if (revuname.toUpperCase()==passwd.toUpperCase()) return false;
	return true;
}

/// pro telefonni cisla ve tvaru, ktery lze pouzit pro zasilani SMS
function validPhoneStrict(phone) {
	rePhoneStrict = new RegExp("^420[0-9]{9}$");
	return rePhoneStrict.test(phone);
}

/// @todo upravit, nebo zrušit
function validUrl(url) {
	if(url=='') return true;
	reUrl = new RegExp("^http://.+?");
	return reUrl.test(url);
}



function openLink(url) {
	linkWin=window.open(url,'linx','');
}


var PicWinOpened = false;
function previewImg(src,w,h,description) {
	if(PicWinOpened) {
		PicWin.close();
		PicWinOpened = false;
	}
	winw = w + 20;
	winh = h + 30;
	PicWin = window.open('','picturedetail','width='+winw+',height='+winh+',resizable=no,location=no,status=no,scrollbars=no');
	with(PicWin) {
		document.open();
		document.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
		document.write('<html xmlns="http://www.w3.org/1999/xhtml">');
		document.write('<head><title>'+description+'</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>');
		document.write('<body style="margin: 10px 0 0 0; padding: 0px; background-color: black; text-align:center; font-family: verdana,sans-serif; font-size: 11px;">');
		document.write('<a href="javascript: window.close();" title="Zavřít okno"><img src="'+src+'" alt="Zavřít okno" width="'+w+'" height="'+h+'" border="0" /></a>');
		document.write('<div style="color: white">'+description+'</div>');
		document.write('</body></html>');
		document.close();
		focus();
	};
	PicWinOpened = true;
	return false;
};

/**
 * funkce vraci objekt podle jeho  id
 *
 * POZOR !!
 * v IE nastane chyba, pokud se funkce volá následujícím způsobem:
 * jmeno = getObject('jmeno');
 * tedy pokud je jmeno proměnné stejné jako jméno prvku
 * pravděpodobně to souvisí s funkcí eval
 *
 * To lze vyresit pravdepodobne nasledujicim kodem:
 *
 * var jmeno = getObject('jmeno');
 */
function getObject(objectName) {

	try {
		if(document.all) {
			obj = eval("document.all['"+objectName+"']");
			return obj;
		} else if(document.getElementById) {
			return document.getElementById(objectName);
		} else {
			return false;
		}
	} catch(error) {
		alert("Object find error: "+error);
		return false;
	}
}


/// function debugObject() byla nahrazena funkcí sl.debug.info()

/// vytiskne strukturu objektu podle jmena do nove otevreneho okna
function debugObjectByName(dbgObjectName) {
	dbgObject = getObject(dbgObjectName);
	if(dbgObject) {
		return debugObject(dbgObject);
	} else {
		return false;
	}
}

/// proc se jmenuje ....Ex - zrejme historicky podmineno
/// zjisti jestli po prejmenovan na openWindow nedojde
/// k problemum a pokud ne prejmenovat
function openWindowEx(url,window_name,width,height,left,top) {
	win = open(url,window_name,'left='+left+',top='+top+',width='+width+',height='+height+',menubar=no,status=no,scrollbars=yes');
	win.focus();
	return true;
}

/// funkce vraci pozici predaneho objektu na strance
function slGetObjectOffset(object) {
	var result = new Object();
	result.offsetLeft = 0;
	result.offsetTop = 0;

	if (runningInMSIE) {
		result.offsetLeft = object.offsetLeft;
		result.offsetTop = object.offsetTop;
		/// try / catch je asi mozno odstranit
		try {
			parentObject = object.offsetParent;
			while (parentObject) {
				result.offsetLeft += parentObject.offsetLeft;
				result.offsetTop += parentObject.offsetTop;
				parentObject = parentObject.offsetParent;
			}
		} catch(error) {
				alert("Error: "+error);
		}
	} else {
		result.offsetLeft = object.offsetLeft;
		result.offsetTop = object.offsetTop;
	}
	return result;
}

/**
* Vrací vnitřní rozměr okna browseru
* @deprecated - nahrazeno sl.getBrowserWindowSize
*/
function slGetBrowserWindowSize() {
	var size = new Object;
	if (runningInGecko) {
		size.x_coord =window.innerWidth;
		size.y_coord =window.innerHeight;
	} else {
		size.x_coord =document.body.offsetWidth;
		size.y_coord =document.body.offsetHeight;
	}
	return size;
}

/**
* @deprecated - nahrazeno sl.getBrowserScrollPosition()
*/
function slGetBrowserScrollPosition() {
	var scroll_position = new Object;
	if (window.pageYOffset) {
		scroll_position.scrollX = window.pageXOffset;
		scroll_position.scrollY = window.pageYOffset;
	} else {
		scroll_position.scrollX = document.documentElement.scrollLeft;
		scroll_position.scrollY = document.documentElement.scrollTop;
	}
	return scroll_position;
}


/// vrací true pokud jde o input typu multiple (např. radio)
function slInputIsMultiple(input_object) {
	return input_object.length && input_object.item;
}


/// vrací true pokud je alespoň jeden input typu
/// multiple (napž radio) zvolen
function slMultipleInputIsChecked(input_object) {
	try {
		input_object_length = input_object.length;
		for(item_counter=0; item_counter < input_object_length; item_counter++) {
			if(input_object[item_counter].checked) {
				return true;
			}
		}
	} catch(error) {}
	return false;
}

/// vrací zvolenou hodnotu input typu multiple
/// pokud není nikdo zvolen vrací null
function slMultipleInputGetValue(input_object) {
	try {
		for(item_counter=0; item_counter < input_object.length; item_counter++) {
			if(input_object[item_counter].checked) {
				return input_object[item_counter].value;
			}
		}
	} catch(error) {}
	return null;
}

/// označí předanou hodnotu v inputu typu multiple
/// pokud je tam hodnota přítomna - vrací true pokud
/// je hodnota nalezena a označena jinak vrací false
function slMultipleInputSetValue(input_object, input_value) {
	try {
		for(item_counter=0; item_counter < input_object.length; item_counter++) {
			if(input_object[item_counter].value == input_value) {
				input_object[item_counter].checked = true;
				return true;
			}
		}
	} catch(error) {}
	return false;
}

/// vraci cislo doplnene na 2 mista zleva 0
/// @todo přemístěno do sl.logout.js - lze výhledově odstranit
function addLeadingZero(i) {
	if(i.length == 1) {
		return  '0' + i;
	} else {
		return i;
	}
}

