
function _test()
{
	alert("test ok!");
}



/**
 * Megkeresi az oldalon az adott id-jü swf movie-t
 * @param {String} movieId
 */
function getSWF(movieId)
{
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return $(movieId);
    }
    else {
        return document[movieId];
    }
}

function doAlert(msg)
{
	msg = "ERROR! "+msg + "\n\nThis is an unusual error, site won't work properly.\n\nPlease feel free to contact developers at support@cygnussystems.hu by sending the error message!";
	alert(msg);
}

//----------------------------------------------------------
// globál változók
//----------------------------------------------------------

var isMenuSwfReady = false;
var isThumbsSwfReady = false;
var isHeaderSwfReady = false;



//----------------------------------------------------------
// ajax függvényekhez
//----------------------------------------------------------

var tMediaLoader = Class.create();
tMediaLoader.prototype = {

	initialize: function(pUrl){
	
		this.baseUrl = pUrl;
		
		this.ttAjax = null;
		//alert(this.baseUrl);
	},
	
	// a params-nak itt egy Hash kompatibilis cuccnak kell lennie!
	// FONTOS! a megadott parameterek csaka kovetkezo keresre lesznek hatassal, utana torlodnek
	setNextRequestParams: function(params){
		this.params = params.toQueryString();
	},
	
	// a params-nak itt egy query stringet kell megadni
	// FONTOS! a megadott parameterek csaka kovetkezo keresre lesznek hatassal, utana torlodnek
	setNextRequestParamsAsQueryString: function(queryString){
		this.params = queryString;
	},
	
	
	loadMedia: function(mediaId){

		var url = this.baseUrl;
		url = url.replace('<mediaId>', mediaId);
		
		//alert("loading media from: "+url);
		
		this.ttAjax = new Ajax.Request(url, {
			method: 'get',
			onComplete: this.__xmlArrived.bind(this)
		});
	},
	
	// megjott a pingre a valasz
	__xmlArrived: function(originalRequest){

		var newEventTitleContent = "";
		var newPictureContent = "";
		var newEventDescriptionContent = "";
		var newForumContent = "";
	
		var googlePageName = "null";
	
		if (originalRequest.responseXML)
		{
			var xh = new tXMLHelper(originalRequest.responseXML);
			//alert(xh.nodeToString('dat'));
			
			if (!xh.nodeExists('dat')) {
				doAlert("there is no <dat> section in the response xml");
			}
			else {
				// ok, dolgozzuk fel az xml-t!
				/*
				if(xh.nodeExists('mediaContent')) {
					var mediaContentNode = originalRequest.responseXML.getElementsByTagName('mediaContent')[0];
					googlePageName = mediaContentNode.getAttribute('analyticsPageName');
				}
				*/
				if (xh.nodeExists('analyticsPageName')) {
					googlePageName = xh.nodeToString('analyticsPageName');
				}

				if (xh.nodeExists('eventTitleContent')) {
					newEventTitleContent = xh.nodeToString('eventTitleContent');
				}
				if (xh.nodeExists('pictureContent')) {
					newPictureContent = xh.nodeToString('pictureContent');
				}
				if (xh.nodeExists('eventDescriptionContent')) {
					newEventDescriptionContent = xh.nodeToString('eventDescriptionContent');
				}
				if (xh.nodeExists('forumContent')) {
					newForumContent = xh.nodeToString('forumContent');
				}
			}
		}
		else
		{
			doAlert("response came from the server was not an xml response");
		}
		
		eventTitleContent = newEventTitleContent;
		pictureContent = newPictureContent;
		eventDescriptionContent = newEventDescriptionContent;
		forumContent = newForumContent;
		
		refreshContent();
		
		if(googlePageName != "null")
			trackWithAnalytics(googlePageName);
	}
}

var tForumMessageSender = Class.create();
tForumMessageSender.prototype = {

	initialize: function(pUrl){
	
		this.baseUrl = pUrl;
		
		this.ttAjax = null;
		//alert(this.baseUrl);
	},
	
	// a params-nak itt egy Hash kompatibilis cuccnak kell lennie!
	// FONTOS! a megadott parameterek csaka kovetkezo keresre lesznek hatassal, utana torlodnek
	setNextRequestParams: function(params){
		this.params = params.toQueryString();
	},
	
	// a params-nak itt egy query stringet kell megadni
	// FONTOS! a megadott parameterek csaka kovetkezo keresre lesznek hatassal, utana torlodnek
	setNextRequestParamsAsQueryString: function(queryString){
		this.params = queryString;
	},
	
	
	sendMessage: function(){

		var url = this.baseUrl;
		
		//alert("sending new message to: "+url);
		
		this.ttAjax = new Ajax.Request(url, {
			method: 'post',
			parameters: this.params,
			onComplete: this.__xmlArrived.bind(this)
		});
	},
	
	// megjott a pingre a valasz
	__xmlArrived: function(originalRequest){

		var newForumContent = "";
	
		if (originalRequest.responseXML)
		{
			var xh = new tXMLHelper(originalRequest.responseXML);
			//alert(xh.nodeToString('dat'));
			
			if (!xh.nodeExists('dat')) {
				doAlert("there is no <dat> section in the response xml");
			}
			else {
				// ok, dolgozzuk fel az xml-t!

				if (xh.nodeExists('forumContent')) {
					newForumContent = xh.nodeToString('forumContent');
				}
			}
		}
		else
		{
			doAlert("response came from the server was not an xml response");
		}
		
		forumContent = newForumContent;
		
		refreshForumContent();
	}
}


var mediaLoader = new tMediaLoader(axGetMediaURL);
var forumMessageSender = new tForumMessageSender(axSendForumMessageURL);


function refreshContent()
{
	if(eventTitleContent.length == 0)
		eventTitleContent = defaultEventTitleContent;
	if(eventDescriptionContent.length == 0)
		eventDescriptionContent = defaultEventDescriptionContent;
	if(forumContent.length == 0)
		forumContent = defaultForumContent;
	if(pictureContent.length == 0)
		pictureContent = defaultPictureContent;
	
	$('eventTitle').innerHTML = eventTitleContent;
	$('eventDescription').innerHTML = eventDescriptionContent;
	$('forum').innerHTML = forumContent;
	$('picture').innerHTML = pictureContent;
}

function refreshForumContent()
{
	if(forumContent.length == 0)
		forumContent = defaultForumContent;
	
	$('forum').innerHTML = forumContent;
}

/**
 * Adott a form, ez megkeresi, és a mezöinek az értékét egy Hash kompatibilis
 * paraméter halomként visszaadja. Hiba esetén null megy.
 * 
 * @param {String} formID
 */
function getFormAsParamsForAjax(formID)
{
	var formObj = $(formID);
	if (formObj)
	{
		var params = $H(new Object());
		var elementCount = formObj.elements.length;
		for (var i=0; i<elementCount; i++)
		{
			var element = formObj.elements[i];
			if (element.type != "submit")
			params[element.name] = element.value;
		}
		return params;
	}
	else
	{
		doAlert("ajaxSendForm() error! form id='"+formID+"' not found!");
		return null;
	}
}

//----------------------------------------------------------
// menu flash függvények
//----------------------------------------------------------

/**
 * A menu flash cucc kész a müködésre!
 */
function menuFlashReady()
{
	//alert("menuFlashReady!");
	isMenuSwfReady = true;
	
	if(menuDefaultSelectEventId != "")
	{
		// ki kell választani egy adott eventet, es nem kell js callback!
		var swfobj = getSWF("menuSwf");
		if(swfobj)
		{
			var skipJSCallback = true;
			swfobj.selectEvent(menuDefaultSelectEventId, skipJSCallback);
		}
		else
		{
			doAlert("menuSwf object not found, sorry!");
		}
	}
}

/**
 * Megvan a flash render magassága, át kell méretezni a div-et
 * @param {Number} height a magasság
 */
function setMenuFlashDivSize(height)
{
	//alert(height);
	$('menuFlashContainer').setStyle({height: ''+height+'px'});
}

/**
 * Az adott esemény ki lett választva
 * @param {Number} eventId
 */
function eventSelected(eventId)
{
	//alert(eventId);
	if(!thumbsFlashInitForEvent(eventId))
	{
		var swfobj = getSWF("menuSwf");
		if(swfobj)
		{
			swfobj.unselectEvent();
		}
		else
		{
			doAlert("menuSwf object not found, sorry!");
		}
	}
}

//----------------------------------------------------------
// thumbs flash függvények
//----------------------------------------------------------

/**
 * A thumbs flash cucc kész a müködésre!
 */
function thumbsFlashReady()
{
	//alert("thumbsFlashReady!");
	isThumbsSwfReady = true;
	
	if(thumbsDefaultSelectMediaId != "")
	{
		// ki kell választani egy adott eventet, es benne egy adott mediat
		var swfobj = getSWF("thumbsSwf");
		if(swfobj)
		{
			swfobj.initForEvent(thumbsDefaultSelectEventId, thumbsDefaultSelectMediaId);
		}
		else
		{
			doAlert("thumbsSwf object not found, sorry!");
		}
	}
	
}

/**
 * Megvan a flash render magassága, át kell méretezni a div-et
 * @param {Number} height a magasság
 */
function setThumbsFlashDivSize(height)
{
	//alert(height);
	$('thumbsFlashContainer').setStyle({height: ''+height+'px'});
}

/**
 * A thumbs flash-nek erre az eventre kell állnia
 * @param {String} eventId
 */
function thumbsFlashInitForEvent(eventId)
{
	//alert("thumbsFlashInitForEvent: "+eventId);
	
	var swfobj = getSWF('thumbsSwf');
	if (swfobj)
	{
		if(isThumbsSwfReady)
		{
			swfobj.initForEvent(eventId, null);
			return true;
		}
		else
		{
			doAlert("thumbsSwf is not ready!")
			return false;
		}
	}
	else
	{
		doAlert("thumbsSwf object not found, sorry!");
		return false;
	}
}

/**
 * A user klikkelt az egyik képre
 * @param {String} mediaId
 */
function thumbnailSelected(mediaId)
{
	//alert("media: "+mediaId);
	mediaLoader.loadMedia(mediaId);
}

//----------------------------------------------------------
// thumbs flash függvények
//----------------------------------------------------------

/**
 * A header flash cucc kész a müködésre!
 */
function headerFlashReady()
{
	//alert("headerFlashReady!");
	isHeaderSwfReady = true;
}

/**
 * Elindult egy videó a fejlécben
 */
function headerMediaStarted(mediaId, connectedEventIds)
{
	//alert("headerMediaStarted: id="+mediaId+", events='"+connectedEventIds+"'");
	swfobj = getSWF("menuSwf");
	if(swfobj)
	{
		swfobj.highlightEvents(connectedEventIds);
	}
	else
	{
		doAlert("menuSwf object not found, sorry!");
	}
}

/**
 * Megállt a videó a fejlécben
 */
function headerMediaStopped(mediaId, connectedEventIds)
{
	//alert("headerMediaStopped: id="+mediaId+", events='"+connectedEventIds+"'");
	swfobj = getSWF("menuSwf");
	if(swfobj)
	{
		swfobj.clearEventHighlights(connectedEventIds);
	}
	else
	{
		doAlert("menuSwf object not found, sorry!");
	}
}


//----------------------------------------------------------
// forum függvények
//----------------------------------------------------------


function sendNewForumMessage()
{
	var params = getFormAsParamsForAjax("forumMessageForm");
	if(params != null)
	{
		forumMessageSender.setNextRequestParams(params);
		forumMessageSender.sendMessage();
	}
}

