var JS;

// Vytvoření objektu Phieyes
if (!JS) {
	JS = {};
}

// Vytvoření objektu Phieyes.AJAX
if (!JS.AJAX) {
	JS.AJAX = {};
}

// Vytvoření objektu Phieyes.AJAX
if (!JS.CacheFront) {
	JS.CacheFront = {};
}

// Vytvoření objektu Phieyes.Response
if (!JS.Responses) {
	JS.Responses = {};
}

if (!JS.Action) {
	JS.Action = {};
}

if (!JS.CommonFunction) {
	JS.CommonFunction = {};
}

if (!JS.Cookie) {
	JS.Cookie = {};
}

if (!JS.Functions) {
	JS.Functions ={};
}

if (!JS.DOM) {
	JS.DOM ={};
}

if (!JS.Preloading) {
	JS.Preloading ={};
}

/*
 * AJAX engine
 */
JS.AJAX.openRequest = function () {
	var request = false;

	// Detekce moderních prohlížečů jako Firefox, Opera, Konqueror
	try {
    	request = new XMLHttpRequest();
	}
    catch (e) {
		// Detekce Internet Exploreru a jeho verzí, které podporují XMLHttpRequest
		var i;
	
		// Pole ID ActiveX objektů
    	var activeXID = ["MSXML2.XMLHTTP.6.0",
        	             "MSXML2.XMLHTTP.5.0",
            	         "MSXML2.XMLHTTP.4.0",
                	     "MSXML2.XMLHTTP.3.0",
                    	 "MSXML2.XMLHTTP",
	                     "Microsoft.XMLHTTP"];
				
		// Nalezeni správného ActiveX objektu pro vytvoření instance
		for (i = 0; i < activeXID.length; i++) {
			try {
				request = new ActiveXObject(activeXID[i]);
				break;
			} catch (e) {
				request = false;
			}
		}
	}
	return request;
};

/**
 * Parametry pro zadost
 */
JS.AJAX.propertiesRequestList = ["method",
									  "url",
									  "async",
									  "postData",
									  "callback",
									  "headers",
									  "status"];

JS.AJAX.propertiesRequest = function () {
	var	properties = JS.AJAX.propertiesRequestList;

	for (var i = 0; i < properties.length; i++) {
		this[properties[i]] = null;
	}

	this.method = "POST";
	this.async = true;
	this.headers = {}
	this.postData = null;
};

/**
 * Vytvoření požadavku
 * @param {Object} method
 * @param {Object} url
 * @param {Object} async
 * @param {Object} callback
 * @param {Object} options
 */
JS.AJAX.createRequest = function (method, url, async, callback, postData) {

    // Předá vlastnosti žádosti
	var request = new JS.AJAX.propertiesRequest ();
	
	request.method = method;
	request.url = url;
	request.async = async;
	request.callback = callback;
	request.postData = postData;

	try {
		// Vytvoří session pro XMLHTTPRequest
		request.connection = JS.AJAX.openRequest ();
		
		if (!request.connection) {
			return null;
		}

		request.connection.open (request.method, request.url, request.async);
		
		// Pokud je zvolen aktivovan asynchronni prenost
		if (request.async) {
			
			request.connection.onreadystatechange = function () {
				//alert ("async");
				JS.AJAX.handlerServerResponse (request.connection, request.callback);	
			};
		}
		
		if (request.method == 'POST') {
			request.connection.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
		}
		//alert (request.connection);
		request.connection.send (request.postData);
		
	} catch (e) {
		alert ('Nepodařilo se vytvořit XMLHTTPRequest instanci');
	}

	return request;
};

JS.AJAX.handlerServerResponse = function (request ,callback) {
	//alert ('Phieyes.Responses.'+ callback +'(request)');
	eval ('JS.Responses.'+ callback +'(request)');
};

JS.CommonFunction.encode = function (uri) {
  if (encodeURIComponent) {
    return encodeURIComponent (uri);
  }

  if (escape) {
    return escape (uri);
  }
  
  return uri;
};

JS.Action.getSongs = function () {
  	
	var data = '';
	
	JS.AJAX.openRequest ();
	JS.AJAX.createRequest ('POST', '/xml/songs.xml', true, 'viewSongs', data);

};

JS.Responses.viewSongs = function (response) {

	if (response.readyState == 4 || response.readyState == 0) {
	
		if (response.status == 200) {	
			try {
					//alert(response.responseXML);
					
					var songs = response.responseXML;
					var nodes = songs.firstChild.getElementsByTagName('Song');
					var arr = new Array ();
					
					for (var i = 0; i < nodes.length; i++)
					{
						arr[i] = nodes[i].attributes.name.value;
					}
					
					loadSongs(arr);
					
			} catch (e) {
				
			}
		}
	}

}

function setPlaying (i)
{
	var obj = document.getElementById('music-player-list').getElementsByTagName('li')[i];
		
	var playing = document.getElementById('status-playing');
	
	if (!playing) {
		var playing = document.createElement('span');
		var textik = document.createTextNode('playing');
		
		playing.id = 'status-playing';		
		playing.appendChild(textik);
	}
	
	var prev = document.getElementById('playing');
	
	if (prev) { 
		prev.id = ''; 
	}
		
	obj.id = 'playing';	
	obj.appendChild(playing);	
	
	var flash = document.getElementById('music-player').getElementsByTagName('object')[0];
	flash.play(i);
}

function loadSongs (songs)
{  
  var obj = document.getElementById('music-player-list');
  
  for (var i = 0; i < songs.length; i++)
  {
  	var li = document.createElement('li');
	var a = document.createElement('a');
	a.setAttribute('href','#');
		
	var textik = document.createTextNode(songs[i]);
	a.appendChild(textik);	
	a.id = i;
	
	li.appendChild(a);
	
	a.onclick = function () {
		setPlaying (this.id);
		return false;
	}
	
	obj.appendChild(li);
	
  }
  
}
