var version = "13";
var timer;
var loggedUser;
var sessionId;

String.prototype.ltrim = function() {
	return this == null || this == '' ? '' : this.replace(/^\s+/, '');
};
String.prototype.rtrim = function() {
	return this == null || this == '' ? '' : this.replace(/\s+$/, '');
};
String.prototype.trim = function() {
	return this.ltrim().rtrim();
};

function obj(id) {
	return document.getElementById(id);
}

function siteLoadingFailed() {
	var oHomepage = obj('homepage');
	var oInfopage = obj('infopage');
	var oContact = obj('contact');

	var oVolume = obj('volume');
	var oEnter = obj('enter');
	var oContent = obj('content');
	
	if (oHomepage) { oHomepage.id = 'error'; }
	if (oInfopage) { oInfopage.id = 'error'; }
	if (oContact) { oContact.id = 'error'; }

	if (oVolume) { oVolume.style.display = 'none'; }
	if (oEnter) { oEnter.style.display = 'none'; }
	if (oContent) { oContent.innerHTML = new Form().fetchMessage("HTTP_ERROR_500"); }
	return false;
}

/* funkce pro vypínání a zapíná zvuku flashe */
var audioStat = "on";
function setAudio(param) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	
	flashMovie.SetVariable('audio_stat.astat', audioStat);
	
return false;
}
function setIcon(stat) {
	if (stat == "off") {
		audioStat = "on";
		obj("radiomute").src='/img/u/music-mute.gif';
	} else {
		audioStat = "off";
		obj("radiomute").src='/img/u/music-play.gif';
	}
//	return false;
}

function showVolumeText(stat,lang) {
//	alert ("jazyk: " + lang);
	if (stat == "off") {
		obj("music-text").src='/img/'+lang+'/vypnout-zvuky.gif';
		obj("music-text").style.visibility='visible';
	} else {
		obj("music-text").src='/img/'+lang+'/zapnout-zvuky.gif';
		obj("music-text").style.visibility='visible';
	}
}

function hiddenVolumeText() {
	obj("music-text").style.visibility='hidden';
}

function statAudio(stat) {
	if (stat == "off") {
		setAudio(audioStat);
		audioStat = "on";
	} else {
		setAudio(audioStat);
		audioStat = "off";
	}
	return false;
}

/* funkce pro čtení parametrů z URL */
// parameter script by www.datashaman.com + FHL corrections
function setupParameters() {
	var parameters = new Object();
	if(window.location.search) {
		var paramArray = window.location.search.substr(1).split('&');
		var length = paramArray.length;
		for (var index = 0;index <length; index++ ) {
			var param = paramArray[index].split('=');
			var name = param[0];
			var value =
			typeof param[1] == "string"
				? decodeURIComponent(param[1].replace(/\+/g, ' '))
				: null;
			parameters[name] = value;
		}
	}
	document.parameters = parameters;
}

function getParameter(name) {
	if(typeof document.parameters == "undefined") {
		setupParameters();
	}
	return document.parameters[name];
}


/* cookies skripts */
function setCookie(cookieName, cookieValue, cookieExpirationDays) {
	if (cookieExpirationDays) {
		$.cookie(cookieName, cookieValue, { expires: cookieExpirationDays, path: '/' });
	} else {
		$.cookie(cookieName, cookieValue, { path: '/' });
	}
}

function delCookie(cookieName) { $.cookie(cookieName, null, { path: '/' }); }
function getCookie(cookieName) { return $.cookie(cookieName); }

/* nastevení proměných gohome a gokam */
if (getCookie("fg_gohome") == "true") {
	var intro = "true";
} else {
	var intro = "false";
}

if(getCookie("fg_gokam") == null) {
	var kam = "false";
} else {
	var kam = getCookie("fg_gokam");
}

/* funkce pro nastavení cookies a následné přesměrování */
function reconnect (gohome,gokam,href) {
	setCookie("fg_gohome", gohome, 1);
	setCookie("fg_gokam", gokam, 1);
	window.location.href=href;
}

function reconnectDisable (href) {
	setCookie("fg_gohome", "true", 1);
	setCookie("fg_gokam", "s05|p01&IDdis=true", 1);
	window.location.href=href;
}

/* funkce pro testování požadované verze flashe */
function isFlash(ver) {
	var state = false;
	var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : false;
	if (plugin) {
		state = (parseInt(plugin.description.substring(plugin.description.indexOf(".")-2)) >= ver)? true : false;
	}
	else if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 4") == -1 && navigator.appVersion.indexOf("Macintosh") == -1 && navigator.appVersion.indexOf("68K") == -1) {
		eval('try { var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + ver); state = true; } catch(e) {  }');
	}
	return state;
}

/* funkce pro vepsání flashe */
function writeFlash(lid) {

if (isFlash(9)) {
	obj('flash').innerHTML = '<object id="mainobj" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="942" height="536"  align="middle"> \
	    <param name="allowScriptAccess" value="sameDomain" /> \
	    <param name="allowFullScreen" value="false" /> \
	    <param name="movie" value="/swf/main.swf?lid=' + lid + '&net=true&lang=cs&gohome='+ intro +'&gokam='+ kam +'&infos=false;/swf/banners/ban_01.swf&vers=?v'+version+'" /> \
	    <param name="quality" value="high" /> \
	    <param name="bgcolor" value="#DCD9D3" /> \
	    <param name="swliveconnect" value="true"> \
	    <param name="menu" value="false"> \
	    <embed src="/swf/main.swf?lid=' + lid + '&net=true&lang=cs&gohome='+ intro +'&gokam='+ kam +'&infos=false;/swf/banners/ban_01.swf&vers=?v'+version+'" quality="high" bgcolor="#DCD9D3" menu="false" width="942" height="536" id="main" name="main" align="middle" allowScriptAccess="*" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> \
	</object> \
	<br/> \
	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="1" height="1" align="middle"> \
	    <param name="allowScriptAccess" value="sameDomain" /> \
	    <param name="allowFullScreen" value="false" /> \
	    <param name="movie" value="/swf/encoder.swf?lid=' + lid + '&debug=0" /> \
	    <param name="quality" value="high" /> \
	    <param name="bgcolor" value="#DCD9D3" /> \
	    <param name="swliveconnect" value="true"> \
	    <param name="menu" value="false"> \
	    <embed src="/swf/encoder.swf?lid=' + lid + '&debug=0" quality="high" bgcolor="#DCD9D3" width="1" height="1" id="encoder" menu="false" name="encoder" align="middle" allowScriptAccess="*" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> \
	</object>';
	obj("noflash").innerHTML = "";
} else {
	obj("noflash").style.position='static';
	obj("noflash").style.left='auto';
	obj("noflash").style.top='auto';
	//window.location.href="/cs/noflash.shtml";
}
	delCookie("fg_gohome");
	delCookie("fg_gokam");
/*	if($.browser.msie) {
		document.getElementById('mainobj').focus();
	} else {
		document.getElementById('main').focus();
	}
*/
}

function getForm(obj) {
	var eForm = obj.parentNode;
	while (eForm.tagName.toUpperCase() != 'FORM') {
		eForm = eForm.parentNode;
	}
	return eForm.tagName.toUpperCase() == 'FORM' ? eForm : null;
}

function ping() {
	UserAjax.isLogged(function(isLogged) { if (!isLogged) showLoginForm(false); });
	timer = setTimeout("ping()", 1000*60*13);
}


// USER MANAGEMENT
function userInit(isLogged) {
	if (isLogged) {
		UserAjax.get(showLoggedInfo);
	} else {
		showLoginForm(false);
	}
}

function userLogin(eForm) {
	try {
		var nick = $("INPUT:text", eForm)[0].value.trim();
		var password = $("INPUT:password", eForm)[0].value.trim();
		if (nick != null && password != null) {
			UserAjax.login(nick, password, showLogin);
		}
	} catch (e) {}
}

function showLogin(user) {
	if (user == null) {
		showLoginForm(true);
	} else {
		showLoggedInfo(user)
		hideRegistrationForm();
	}
}

function showLoginForm(isError) {
	if (timer) clearTimeout(timer);
	if (isError) {
		$("#header .error").show();
	} else {
		$("#header .error").hide();
	}
	$("#header .logged").hide();
	$("#header .login").show();
}

function showLoggedInfo(user) {
	if (user != null) {
		// ulozi objekt user do globalni promenne loggedUser
		loggedUser = user;
		
		// zobrazi info o prihlasenem uzivateli
		$("#header .error").hide();
		var eLoggedInfo = $("#header .logged SPAN")[0];
		if (eLoggedInfo) {
			eLoggedInfo.innerHTML = user.firstname && user.lastname ? user.firstname + ' ' + user.lastname : user.nick;
		}
		$("#header .login").hide();
		$("#header .logged").show();
		
		// spusti intervalovou "udrzovaci" funkci, aby nevyprsela session vlivem neaktivity (nedelame reload)
		ping();
	}
}

function user_login_status() {
	UserAjax.isLogged(setLogged);
}

// registration
function hideRegistrationForm() {
	$("#flash").css("visibility", "visible");
	$("#registration").hide();
	hideRegistrationError();
	hideRegistrationInfo();
}

function showRegistrationForm(isUpdate) {
	if (obj('flash') && obj('registration')) {
		if (isUpdate) {
			prepareRegistrationFormToUpdate();
		} else {
			prepareRegistrationFormToInsert();
		}
		$("#flash").css("visibility", "hidden");
		$("#registration").show();
		return true;
	}
	return false;
}

function prepareRegistrationFormToInsert() {
	var oReg = obj('registration');
	if (oReg) {
		$(oReg).removeClass('update');
		
		var eId = $("INPUT:hidden[name='id']", oReg)[0];
		if (eId) {
			eId.value = 0;
			eId.disabled = true;
		}

		$("INPUT#nick", oReg)[0].disabled = false;
		$("INPUT#nick", oReg).show();
		
		var eNickName = $("SPAN#nick-name", oReg)[0];
                if (eNickName) {
			eNickName.innerHTML = '';
		}
		
		var eNickState = $("SPAN#nick-state", oReg);
		if (eNickState) {
			eNickState.show();
		}

		$("INPUT:password", oReg)[0].value = '';
		$("INPUT:password", oReg)[1].value = '';
		
		$("INPUT:text[name='email']", oReg)[0].value = '';

		$("INPUT:image.update", oReg).addClass('insert');
		$("INPUT:image.update", oReg).removeClass('update');
		
		$("INPUT:image.insert", oReg).unbind('click');
		$("INPUT:image.insert", oReg).bind('click', function () {
			return registerInsert(this);
		});
		
		$(".contentbox", oReg).show();
		$(".contentbox-update", oReg).hide();

		$(".registration", oReg).show();
		$(".registration-update", oReg).hide();

	}
}


function prepareRegistrationFormToUpdate() {
	var oReg = obj('registration');
	if (oReg && loggedUser) {
		$(oReg).addClass('update');

		$("INPUT:hidden[name='id']", oReg)[0].value = loggedUser.id;

		$("INPUT#nick", oReg)[0].disabled = true;
		$("INPUT#nick", oReg).hide();
		$("SPAN#nick-name", oReg)[0].innerHTML = loggedUser.nick;
		$("SPAN#nick-state", oReg).hide();

		$("INPUT:password", oReg)[0].value = '';
		$("INPUT:password", oReg)[1].value = '';
		
		$("INPUT:text[name='email']", oReg)[0].value = loggedUser.email;

		$("INPUT:image.insert", oReg).addClass('update');
		$("INPUT:image.insert", oReg).removeClass('insert');
		
		$("INPUT:image.update", oReg).unbind('click');
		$("INPUT:image.update", oReg).bind('click', function () {
			return registerUpdate(this);
		});
		
		$(".contentbox", oReg).hide();
		$(".contentbox-update", oReg).show();

		$(".registration", oReg).hide();
		$(".registration-update", oReg).show();
	}
}

function showNickExists(isNickExists) {
	var info = $("#registration .box FORM DIV SPAN#nick-state");
	try {
		if (isNickExists) {
			$("#registration INPUT:hidden[name='nickexists']")[0].value = 'true';
			info.addClass("failed");
			info[0].innerHTML = new Form().fetchMessage("FORMREGISTRATION_NICK_EXISTS_FAILED");
		} else {
			$("#registration INPUT:hidden[name='nickexists']")[0].value = 'false';
			info.removeClass("failed");
			info[0].innerHTML = new Form().fetchMessage("FORMREGISTRATION_NICK_EXISTS_PASSED");
		}
	} catch(e) {}
}

function registerInsert(obj) {
	UserAjax.isNickExists($("#registration INPUT:text[name='nick']")[0].value, showNickExists);
	hideRegistrationError();
	hideRegistrationInfo();
	var form = new Form(getForm(obj));
	if (form && form.hasRightShape()) {
		var properties = {
			nick: 'required;checkChars;exists;length5',
			password: 'required',
			passwordCheck: 'required',
			email: 'email;required;checkChars'
		}
		
		form.validate(properties);
		if (form.isValid()) {
			var user = {
				id: 0,
				nick: '',
				password: '',
				email: ''
			}
			var user = form.fillDataObject(user);
			try {
				UserAjax.register(user, serveRegistrationResult);
			} catch(e) {
				showRegistrationFailed(false);
			}
		} else {
			showRegistrationError(form.getErrorList());
		}
	}
	return false;
}
	
function registerUpdate(obj) {
	hideRegistrationError();
	hideRegistrationInfo();
	var form = new Form(getForm(obj));
	if (form && form.hasRightShape()) {
		var properties = {
			password: '',
			passwordCheck: '',
			email: 'email;required;checkChars'
		}
		
		form.validate(properties);
		if (form.isValid()) {
			var user = {
				id: 0,
				nick: '',
				password: '',
				email: ''
			}
			var user = form.fillDataObject(user);
			try {
				UserAjax.registerUpdate(user, serveRegistrationUpdateResult);
			} catch(e) {
				showRegistrationFailed(true);
			}
		} else {
			showRegistrationError(form.getErrorList());
		}
	}
	return false;
}

function serveRegistrationResult(user) {
	if (user != null) {
		//hideRegistrationForm();
		showRegistrationPassed(false);
		showLoggedInfo(user);
	} else {
		showRegistrationFailed(false);
	}
}

function serveRegistrationUpdateResult(user) {
	if (user != null) {
		//hideRegistrationForm();
		showRegistrationPassed(true);
		showLoggedInfo(user);
	} else {
		showRegistrationFailed(true);
	}
}

function showRegistrationFailed(isUpdate) {
	var form = new Form();
	if (isUpdate) {
		form.addMessage("FORMREGISTRATION_UPDATE_FAILED");
	} else {
		form.addMessage("FORMREGISTRATION_FAILED");
	}
	showRegistrationError(form.getErrorList());
}

function showRegistrationPassed(isUpdate) {
	var form = new Form();
	if (isUpdate) {
		form.addMessage("FORMREGISTRATION_UPDATE_PASSED");
	} else {
		form.addMessage("FORMREGISTRATION_PASSED");
	}
	showRegistrationInfo(form.getMessageList());
}

function showRegistrationError(messageList) {
	var registrationErrorContent = $("#registration .error DIV.bc .c DIV.content")[0];
	if (registrationErrorContent) {
		registrationErrorContent.innerHTML = messageList;
	}
	$("#registration .error").css("visibility", "visible");
}

function hideRegistrationError() {
	$("#registration .error").css("visibility", "hidden");
	var registrationErrorContent = $("#registration .error DIV.bc .c DIV.content")[0];
	if (registrationErrorContent) {
		registrationErrorContent.innerHTML = '';
	}
}

function showRegistrationInfo(messageList) {
	var registrationInfoContent = $("#registration .info DIV.bc .c DIV.content")[0];
	if (registrationInfoContent) {
		registrationInfoContent.innerHTML = messageList;
	}
	$("#registration .info").css("visibility", "visible");
}

function hideRegistrationInfo() {
	$("#registration .info").css("visibility", "hidden");
	var registrationInfoContent = $("#registration .info DIV.bc .c DIV.content")[0];
	if (registrationInfoContent) {
		registrationInfoContent.innerHTML = '';
	}
}

// ** USER MANAGEMENT

// FLASH SETTERS

function setLogged(isLogged) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	if(isLogged) {
		//when user is logged in, jsessionid is passed to flash
		UserAjax.getSessionId(isLogged, setLoggedSessionId);
	}
	else {
		flashMovie.SetVariable('user_log.login', isLogged);
	}
}

function setLoggedSessionId(sessionId) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	flashMovie.SetVariable('user_log.login', sessionId);
}

function setGalleryList(list) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	flashMovie.SetVariable('listgallery.l', list);
}

function setGalleryDetail(detail) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	flashMovie.SetVariable('detailgallery.d', detail);
}

function setGalleryTop(top) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	flashMovie.SetVariable('topgallery.t', top);
}

function setAuction(auction) {
	if($.browser.msie) {
		var flashMovie = obj("mainobj");
	} else {
		var flashMovie = obj("main");
	}
	flashMovie.SetVariable('aukceget.g', auction);
}

// ** FLASH INVOKE
