/**
 * funkcje javascriptowe do obsługi porównywarki
 */

/*
 var comparatorStatusMessages = new Array();
 comparatorStatusMessages[0]="Dodano do porównywarki!";

 function getComparatorMessageFromState(state) {

 }
 */

var reloadTime = 500;

/**
 * Otwiera okno porównywarki
 * 
 */
function viewComparator() {
	var pos_x;
	var pos_y;
	w = 830;
	h = 600;
	pos_x = (screen.width - w + 18) / 2;
	pos_y = (screen.height - h + 75) / 2;
	window
			.open(
					"porownaj",
					"Porównywarka",
					"width="
							+ (w + 90)
							+ ",pozx=300,height="
							+ (h + 80)
							+ ",resizable=yes,scrollbars=yes,menubar=no,status=0,toolbar=0,left="
							+ pos_x + ",top=" + pos_y);
}

// Get the HTTP Object
function getHTTPObject() {
	if (window.ActiveXObject)
		return new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest)
		return new XMLHttpRequest();
	else {
		alert("Twoja przeglądarka nie wspiera AJAXa, który jest wymagany do prawidłowego działania porównywarki statków kosmicznych.");
		return null;
	}
}

/**
 * Dodaje zadany obiekt do porównywarki
 * 
 * @param val
 *            Sluisowy url do statku (sekcja,statek)
 * @return
 */
function addToComparator(val) {
	// alert('adding: ' + val);
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "porownaj.ajax.php?add=" + val, true);
		httpObject.send(null);
		httpObject.onreadystatechange = reportComparatorOperation;
	}
}

/**
 * Usuwa zadany obiekt z porównywarki
 * 
 * @param val
 *            Sluisowy url do statku (sekcja,statek)
 * @return
 */
function removeFromComparator(val) {
	// alert('removing: ' + val);
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "porownaj.ajax.php?del=" + val, true);
		httpObject.send(null);
		httpObject.onreadystatechange = reportComparatorOperation;
	}
}

/**
 * Pobiera zawartość do wyświetlenia w bloku porównywarki (w menu)
 * 
 * @return
 */
function getBlockContentFromComparator() {
	// alert('getting comparator contents');
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "/porownaj.ajax.php?refreshbox=yes", true);
		httpObject.send(null);
		httpObject.onreadystatechange = setPorownywarkaContents;
	}
}

/**
 * Odbiera raport z porównywarki po wykonaniu operacji dodaj/usuń. Dane pobiera
 * z httpObject.
 * 
 * @return
 */
function reportComparatorOperation() {
	if (httpObject.readyState == 4) {
		// alert('got output: ' + httpObject.responseText);
		var operationResultMessage = httpObject.responseText;
		getBlockContentFromComparator();
		showComparatorMessage(operationResultMessage);
	}
}

/**
 * Odbiera i wyświetla zawartość w bloku porównywarki. Dane pobiera z
 * httpObject.
 * 
 * @return
 */
function setPorownywarkaContents() {
	// alert('httpObject ready');
	if (httpObject.readyState == 4) {
		// alert('got output: ' + httpObject.responseText);
		document.getElementById('porownywarkaBlok').innerHTML = httpObject.responseText;
		// showComparatorMessage(httpObject.responseText);
	}
}

/**
 * Pokazuje wiadomość otrzymaną z porównywarki po wykonaniu operacji dodaj/usuń
 * 
 * @param val
 *            wiadomość
 * @return
 */
function showComparatorMessage(val) {
	if (val) {
		alert(val);
	}
}

/**
 * Usuwa z porównywarki statek - na ekranie porównywarki
 * 
 * @param val
 * @return
 */
function remove(val) {
	removeFromComparator(val);
	setTimeout('window.location.reload(true);', reloadTime);	
}

/**
 * Usuwa z porównywarki wszystkie statki (parametr powinien być DELALL podany
 * via php i template) i zamyka porównywarkę.
 * 
 * @param val
 * @return
 */
function removeAll(val) {
	removeFromComparator(val);
	window.opener.location.reload();
	window.close();
}

/**
 * Sortuje statki w porównywarce
 * 
 * @param direction
 * @param parameter
 * @return
 */
function sort(direction, parameter) {
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "porownaj.ajax.php?sort=" + direction + "," + parameter, true);
		httpObject.send(null);
		httpObject.onreadystatechange = reportComparatorOperation;
	}
	setTimeout('window.location.reload(true);', reloadTime);	
}

/**
 * Przesuwa wybrany statek w porównywarce w lewo lub w prawo
 * 
 * @param id
 * @param direction
 * @return
 */
function move(paramstring) {
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", "porownaj.ajax.php?move=" + paramstring, true);
		httpObject.send(null);
		httpObject.onreadystatechange = reportComparatorOperation;
	}
	setTimeout('window.location.reload(true);', reloadTime);	
}

/**
 * Otwiera w oknie w tle opis danego statku.
 * 
 * @param val
 * @return
 */
function goToShip(val) {
	window.opener.location.href=val;
	window.self.blur();
	window.opener.focus();
}

