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.getComments = function (spot_id) {
  	
	var data = 'AJAX=true&method=GetComments&param='+spot_id;
	
	JS.AJAX.openRequest ();
	JS.AJAX.createRequest ('POST', '/AJAX/ajax.php', true, 'viewComments', data);

};

JS.Action.addComment = function (spot_id) {
  
  // alert ('add comment');
  var error = document.getElementById('commentsFormError');

  if (error != null) {
  	error.style.display = "none";
  }
  
  var commentsForm = document.getElementById('commentsForm');
  
  if ((commentsForm.email.value == '') || (commentsForm.name.value == '') || (commentsForm.title.value == ''))
  {
  	
	var comments = document.getElementById('comments');
	var error = document.getElementById('commentsFormError');
	
	if (error == null)
	{
		//alert ('baf');
		
		var newE = document.createElement('div');
		newE.id = "commentsFormError";
		newE.innerHTML = "Všechny položky jsou povinné.";
		newE.setAttribute("class","error")
		comments.insertBefore(newE,commentsForm);
	} else {
		error.style.display = "block";
		error.innerHTML = "Všechny položky jsou povinné.";
	}
	
  } else {
  
  	if (!(spot_id > 0))
  	{
  		alert("Došlo k chybě. Příspěvek nemůže být uložen.");
  		return false;
  	}
  
	var param = 'name::'+JS.CommonFunction.encode(commentsForm.name.value);
	param += ';;email::'+JS.CommonFunction.encode(commentsForm.email.value);
	param += ';;title::'+JS.CommonFunction.encode(commentsForm.title.value);
	param += ';;content::'+JS.CommonFunction.encode(commentsForm.content.value);
	param += ';;spot_id::'+(spot_id*1);
  
 
	var data = 'AJAX=true&method=AddComment&param='+param;
	 
	 
	//alert (data);	

	JS.AJAX.openRequest ();
	JS.AJAX.createRequest ('POST', '/ajax.php', true, 'viewComments', data);

  }
  
  return false;
  
}

JS.Responses.viewComments = function (response) {

	if (response.readyState == 4 || response.readyState == 0) {
	
		if (response.status == 200) {	
			try {
				var comments = document.getElementById ('comments');
					comments.innerHTML = response.responseText;
					//alert(response.responseText);
			} catch (e) {
				
			}
		}
	}

}

