
var bookToAdd;
var searchPosterFormSaveJQ;
var classNumberText;
var isAjaxLoading = false;
var	addedBooks = {};
var	addedTitlesOfBooks = {};
var	listOfIds = [];


function clean() {
	delete addedBooks;
	addedBooks = {};
	delete addedTitlesOfBooks;
	addedTitlesOfBooks = {};
	delete listOfIds;
	listOfIds = [];
	delete bookTableJQ;
	delete saveDeleteDivJQ;
	delete searchPosterFormJQ;
	delete searchTableJQ;
	delete popupLoadingJQ;
	delete acBookTitleJQ;
	delete current;
	bookToAdd = "";
}

// URLS

function defineVariables() {
	if (typeof isFacebook === 'undefined' && typeof isNovine === 'undefined') {
		 AJAXPOSTERURL = "/ajaxPoster/";
	 	AJAXDELETEPOSTERURL = "/ajaxDeletePoster/";
		 AJAXADVANCEDSEARCHURL = "/ajaxAdvancedSearch/";
		 AJAXPAGINACIJAURL = "/ajaxPaginacija/";
		 AJAXSVIOGLASIURL = "/ajaxSviOglasi/?id=";
		 handlerForAdvancedSearch = handleAdvancedSearchResults;
	} else if (typeof isNovine === 'undefined') {
		 AJAXPOSTERURL = "/facebookAjaxPoster/";
		 AJAXDELETEPOSTERURL = "/ajaxDeletePoster/";
		 AJAXADVANCEDSEARCHURL = "/ajaxAdvancedSearch/";
		 AJAXPAGINACIJAURL = "/ajaxPaginacija/";
		 AJAXSVIOGLASIURL = "/ajaxSviOglasi/?id=";
		 handlerForAdvancedSearch = handleAdvancedSearchResults;
	} else {
		 AJAXPOSTERURL = "/24sata/ajaxPoster/";
		 AJAXDELETEPOSTERURL = "/ajaxDeletePoster/";
		 AJAXADVANCEDSEARCHURL = "/24sata/ajaxAdvancedSearch/";
		 AJAXPAGINACIJAURL = "/24sata/ajaxPaginacija/";
		 AJAXSVIOGLASIURL = "/24sata/ajaxSviOglasi/?id=";
		 AJAXVIEWPOSTERURL = "/24sata/poster/?id=";
		 AJAXPOVRATAK = "/24sata/povratak";
		 handlerForAdvancedSearch = handleAdvancedSearchResults24sata;
	}
}


// INICIJALIZIRAJ POSTAVLJANJE OGLASA
function initPoster(responseText, textStatus) {
	clean();
	if (textStatus == "error") {
		divMainContainerJQ.html("Greška u komunikaciji sa serverom"); 
	}
	endAjax();
	bookTableJQ = $("table#bookTable");
	saveDeleteDivJQ = divMainContainerJQ.find("div#saveDeleteDiv");
	bookTableJQ.find("input[value='izbriši']").each(function(val){
			// kad se sejvani poster loada onda stavi sve knjige u polje
			id = $(this).click(handlerForClickToRemoveBook).attr("id");
			addedBooks[id] = id;
			});

	// spremanje i brisanje handleri
	saveDelete();


	// tabela s knjigama
	bookTableJQ.find("tr:last").find("select").
		prepend("<option value=''>Izaberite razred</option>").change(handlerForSelectRazredPoster).find("option:first").attr("selected", "selected");
	acBookTitleJQ = bookTableJQ.find("tr:last input#acBookTitle").attr("disabled", true).css("width", "500px").css("background", "#fff");
}
// END INICIJALIZIRAJ POSTAVLJANJE OGLASA

// INICIJALIZACIJA POSTASVLJANJA OGLASA ZA 24 sata
function init24sataPoster(responseText, textStatus) {
	clean();
	if (textStatus == "error") {
		divMainContainerJQ.html("Greška u komunikaciji sa serverom"); 
	}
	endAjax();
	current = 0;

	// nakon sto je forma vratila gresku
	var n = $("table#books").hide().size();
	if (n == 1) {
		$("table#books tr").each(function(){
			var id = $(this).find("td:first").html();
			var title = $(this).find("td:last").html();
			addedBooks[id] = id
			addedTitlesOfBooks[id] = title;
			listOfIds.push(id);
		});

		// popuni slider
		$("a#sliderLeft").hide();
		var listSize = listOfIds.length;
		if (listSize == 1) {
			$("a#sliderRight").hide();
		}
		var id = listOfIds[current];
		var title = addedTitlesOfBooks[id]
		appendWhat = '<div class="izbrisi" id="' + id + '">Izbriši udžbenik iz liste oglasa</div><div class="clearFloat"></div><div class="titleBook">' + title + '</div>'
		$("div#slider div.sliderContent").empty().append(appendWhat);
		addEventToDelete();
	} else {
		$("a#sliderLeft").hide();
		$("a#sliderRight").hide();
	}



	bookTableJQ = $("table#bookTable");
	saveDeleteDivJQ = divMainContainerJQ.find("div#saveDeleteDiv");
	
	// spremanje i brisanje handleri
	saveDelete();

	


	// tabela s knjigama
	bookTableJQ.find("tr:last").find("select").
		prepend("<option value=''>Izaberite razred</option>").change(handlerForSelectRazredPoster24sata).find("option:first").attr("selected", "selected");
	acBookTitleJQ = bookTableJQ.find("tr:last input#acBookTitle").attr("disabled", true).css("width", "500px").css("background", "#fff");


	$("a#sliderLeft").click(function(event){
		event.preventDefault();
		current--;
		var size = listOfIds.length;
		if (current <= 0) {
			$(this).hide();
		}
		if (current < size -1) {
			$("a#sliderRight").show();
		}

		var id = listOfIds[current];
		var title = addedTitlesOfBooks[id]
		appendWhat = '<div class="izbrisi" id="' + id + '">Izbriši udžbenik iz liste oglasa</div><div class="clearFloat"></div><div class="titleBook">' + title + '</div>'
		$("div#slider div.sliderContent").empty().append(appendWhat);
		addEventToDelete();

		}).hide();
	
	$("a#sliderRight").click(function(event){
		event.preventDefault();
		current++;
		var size = listOfIds.length;

		if (current == size - 1) {
			$(this).hide();
		}

		if (current > 0) {
			$("a#sliderLeft").show();
		}
		var id = listOfIds[current];
		var title = addedTitlesOfBooks[id]
		appendWhat = '<div class="izbrisi" id="' + id + '">Izbriši udžbenik iz liste oglasa</div><div class="clearFloat"></div><div class="titleBook">' + title + '</div>'
		$("div#slider div.sliderContent").empty().append(appendWhat);
		addEventToDelete();

		});

}

// END INICIJALIZACIJA POSTAVLJANJA OGLASA ZA 24 SATA


function saveDelete() {

	// spremanje i brisanje handleri
	saveDeleteDivJQ.find("#spremiOglas").css("cursor", "pointer").click(function(event){
			if(!isAjaxLoading) {
			var formQuery = $("form").serialize();
			var bookQuery = "id=";
			$.each(addedBooks, function(val) {
				bookQuery += val + "$$";
				});
			formQuery += "&" + bookQuery;

			callAjax("POST", AJAXPOSTERURL, savePoster, formQuery, "html");

			delete formQuery;
			delete bookQuery;
			}
			}).end().find("#izbrisiOglas").css("cursor", "pointer").click(function(event){
				if(!isAjaxLoading) {
				var formQuery = $("form #id_uid").serialize();
				callAjax("POST", AJAXDELETEPOSTERURL, deletePoster, formQuery, "html");
				delete formQuery;
				}
				});
	if (!canSaveOrDeleteFun()) {
		saveDeleteDivJQ.hide();
	}
}


function savePoster(data, textStatus) {
	endAjax();
	divMainContainerJQ.children().remove().end().html(data);
	// ako je forma bacila gresku onda postoji book tabela, inace je uspjesno sejvanje i pocisti
	var n = $("#bookTable").size();
	if (n == 1) {
		if (typeof isNovine === 'undefined') {
			initPoster();
		} else {
			init24sataPoster();
		}
	} else {
		clean();
	}
}

function deletePoster(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}

	divMainContainerJQ.children().remove().end().html(data);
}


function initAutoCompletePoster(json, textStatus) {
		endAjax();
	acBookTitleJQ.unautocomplete().autocomplete(json, autocompleteOptions).attr("disabled", false).val("naslov se udžbenika automatski popunjava upisom par slova").css("color", "#808080").attr("disabled", false).click(function(event){
			$(this).val("").css("color", "#000");
			}).result(function(event, data, formatted) { 
				if (data) { 
				bookToAdd = data.id; 
				}

				handlerForClickToAddBook();
				});
	delete json;
}

function initAutoCompletePoster24sata(json, textStatus) {
		endAjax();
	acBookTitleJQ.unautocomplete().autocomplete(json, autocompleteOptions).attr("disabled", false).val("naslov se udžbenika automatski popunjava upisom par slova").css("color", "#808080").attr("disabled", false).click(function(event){
			$(this).val("").css("color", "#000");
			}).result(function(event, data, formatted) { 
				if (data) { 
				bookToAdd = data.id; 
				}

				handlerForClickToAddBook24sata();
				});
	delete json;
}



function initAutoCompleteSearch(json, textStatus) {
	endAjax();

	searchTableJQ.find("input#id_id").unautocomplete().autocomplete(json, autocompleteOptions).attr("disabled", false).css("width", "500px").val("naslov se udžbenika automatski popunjava upisom par slova").css("color", "#808080").click(function(event){
			$(this).val("").css("color", "#000");
			bookToAdd = "";
			}).result(function(event, data, formatted) { 
				if (data) { 
				bookToAdd = data.id;
				}
				});
	delete json;
}

autocompleteOptions = {
minChars: 0,
		  max: 20,
		  scrollHeight: 500,
		  scroll: true,
		  width: 460,
		  matchContains: false,
		  autoFill: false,
		  formatItem: function(row, i, max) {
			  return row.title;
		  },
formatMatch: function(row, i, max) {
				 return row.title;
			 },
formatResult: function(row) {
				  return row.title;
			  }
}

function handlerForClickToAddBook() {
	var tempJQ = bookTableJQ.find("tr:last");
	// provjeri, mozda vec postoji ta knjiga
	var isPresent = addedBooks[bookToAdd];
	if (isPresent != bookToAdd) {
		addedBooks[bookToAdd] = bookToAdd;
		if (!canSaveOrDeleteFun()) {
			saveDeleteDivJQ.show();
		}

		var bookTitle = $(tempJQ).find("input").val();
		// ispred retka sa selectom i inputom dodaj novi redak
		$(tempJQ).before("<tr><td class='spec'>" + classNumberText + "</td><td>" + bookTitle + "</td>" + 
				'<td><input class="smaller" type="submit" value="izbriši" id="' + bookToAdd + '"' + "/></td>" +	"</tr>");
		$(tempJQ).prev().find("input").click(handlerForClickToRemoveBook);
		delete bookTitle;
	}

	$(tempJQ).find("input").val("");

	delete tempJQ;
}

function handlerForClickToAddBook24sata() {
	var tempJQ = bookTableJQ.find("tr:last");
	// provjeri, mozda vec postoji ta knjiga
	var isPresent = addedBooks[bookToAdd];
	if (isPresent != bookToAdd) {
		addedBooks[bookToAdd] = bookToAdd;
		
		if (!canSaveOrDeleteFun()) {
			saveDeleteDivJQ.show();
		}

		var bookTitle = $(tempJQ).find("input").val();
		addedTitlesOfBooks[bookToAdd] = bookTitle;
		listOfIds.push(bookToAdd);
		appendWhat = '<div class="izbrisi" id="' + bookToAdd + '">Izbriši udžbenik iz liste oglasa</div><div class="clearFloat"></div><div class="titleBook">' + bookTitle + '</div>'
		$("div#slider div.sliderContent").empty().append(appendWhat);
		$("a#sliderRight").hide();
		var size = listOfIds.length;
		var size = listOfIds.length;
		if (size > 1) {
			current++;
		}
		if (current > 0) {
			$("a#sliderLeft").show();
		}

		addEventToDelete();
		$(tempJQ).prev().find("input").click(handlerForClickToRemoveBook);
	}

	$(tempJQ).find("input").val("");

	delete tempJQ;
}

function addEventToDelete() {
 	var id = $("div.izbrisi").click(function(event){
		var size = listOfIds.length;
		delete addedBooks[id];
		delete addedTitlesOfBooks[id];
		listOfIds.splice(current, 1);
		if (!canSaveOrDeleteFun()) {
			saveDeleteDivJQ.hide();
		}
		
		if (size == 1) {
			$("a#sliderRight").hide();
			$("a#sliderLeft").hide();
			$("div#slider div.sliderContent").empty()
			return;
		} else if (current == size - 1) {
			current--;
			$("a#sliderRight").hide();
			if (size == 2) {
				$("a#sliderLeft").hide();
			}
		}

		if (current == size - 2) {
			$("a#sliderRight").hide();
		}

		var idTemp = listOfIds[current];
		var title = addedTitlesOfBooks[idTemp]
		appendWhat = '<div class="izbrisi" id="' + idTemp + '">Izbriši udžbenik iz liste oglasa</div><div class="clearFloat"></div><div class="titleBook">' + title + '</div>'
		$("div#slider div.sliderContent").empty().append(appendWhat);

		addEventToDelete();

		
	}).css("cursor", "pointer").attr("id");
}

function handlerForClickToRemoveBook(event) {
	id = $(this).attr("id");
	delete addedBooks[id];
	$(this).parents("tr").remove();

	if (!canSaveOrDeleteFun()) {
		saveDeleteDivJQ.hide();
	}
}


function canSaveOrDeleteFun() {
 	if (typeof isNovine === 'undefined') {
		// provjeri je li tabela s knjigama prazna
		var size = bookTableJQ.find("input[value='izbriši']").size();
		if (size == 0) {
			delete size;
			return  false;
		}
	} else {
		size = listOfIds.length;
		if (size > 0) {
			delete size;
			return  true;
		} else {
			return false;
		}
	}

	return true; 
}

// INICIJALIZACIJA JEDNOSTAVNOG SEARCH PROZORA
function initSimpleSearchPoster(responseText, textStatus) {
	clean();
	if (textStatus == "error") {
		divMainContainerJQ.html("Greška u komunikaciji sa serverom"); 
	}
	endAjax();

	// inicijaliziraj link za napredno pretrazivanje
	$("div#mainContainer a#naprednoPretrazivanje").click(function(event){
			event.preventDefault();
			startAjax();
			divMainContainerJQ.children().remove().end().load("/ajaxAdvancedSearch?" + (new Date()).getTime(), initAdvancedSearchPoster);
			});

	searchPosterFormJQ = $("form#searchPosterForm");
	searchPosterFormSaveJQ = $("form#searchPosterForm");
	// definiraj click na select boxi za razred
	$("table#searchTableRequired").find("select#id_numberClasses").prepend("<option value=''>Izaberite razred</option>").find("option:first").attr("selected", "selected");
	searchPosterFormJQ.find("input[type='submit']").click(handlerForSimpleSearchSubmit);	
	searchPosterFormJQ.find("input#id_id").css("color", "#808080").val("Izaberite rared kako biste dobili automatsko popunjavanje naslova");	
}
// END INICIJALIZACIJA JEDNOSTAVNOG SEARCH PROZORA



// INICIJALIZACIJA NAPREDNOG SEARCH PROZORA
function initAdvancedSearchPoster(responseText, textStatus) {
	clean();
	if (textStatus == "error") {
		divMainContainerJQ.html("Greška u komunikaciji sa serverom"); 
	}
	endAjax();

	searchPosterFormJQ = $("form#searchPosterForm");
	searchTableJQ = searchPosterFormJQ.find("table#searchTable2");

	// definiraj click na select boxi za razred
	searchPosterFormJQ.find("table#searchTable").find("select#id_numberClasses").change(handlerForSelectRazredAdvancedSearch).
		prepend("<option value=''>Izaberite razred</option>").find("option:first").attr("selected", "selected");
	$("a#pretragaAkcija").click(function(){
			var hash = this.href;
			hash = hash.replace(/^.*#/, '');
			searchPosterFormSaveJQ = $("form#searchPosterForm");	
			// loadaj novu stranicu
			$.history.load(hash);
			return false;
		});
//	searchPosterFormJQ.find("a#pretragaAkcija").click(handlerForAdvancedSearchSubmit);	
	searchPosterFormJQ.find("input#id_id").css("color", "#808080").val("Izaberite razred kako biste dobili automatsko popunjavanje naslova");	
}
// END INICIJALIZACIJA NAPREDNOG SEARCH PROZORA


// INICIJALIZACIJA POMOCI



// END INICIJALIZACIJA POMOCI

function handlerForSelectRazredPoster(event) {
	value = $(this).val();
	acBookTitleJQ.val("").attr("disabled", true);
	classNumberText = $(this).find("option:selected").text();
	callAjax("GET", "/ajaxKnjigePoRazredu/", initAutoCompletePoster, {'id':value}, "json");
}

function handlerForSelectRazredPoster24sata(event) {
	value = $(this).val();
	acBookTitleJQ.val("").attr("disabled", true);
	classNumberText = $(this).find("option:selected").text();
	callAjax("GET", "/ajaxKnjigePoRazredu/", initAutoCompletePoster24sata, {'id':value}, "json");
}


function handlerForSelectRazredAdvancedSearch(event) {
	bookToAdd = "";
	value = $(this).val();
	classNumberText = $(this).find("option:selected").text();
	callAjax("GET", "/ajaxKnjigePoRazredu/", initAutoCompleteSearch, {'id':value}, "json");
}

function handlerForSimpleSearchSubmit(event) {
	event.preventDefault();
	var query = searchPosterFormJQ.find("*:not([id='id_id'])").serialize();
	callAjax("POST", "/ajaxSearch/", handleSimpleSearchResults, query, "html");
	delete query;
}

function handlerForAdvancedSearchSubmit(event) {
	event.preventDefault();
	var query = searchPosterFormJQ.find("*:not([id='id_id'])").serialize();
	query += "&id=" + bookToAdd;
	callAjax("POST", AJAXADVANCEDSEARCHURL, handlerForAdvancedSearch, query, "html");
	delete query;
}

function handleSimpleSearchResults(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}
	dataJQ = $(data);
	var n = dataJQ.filter("div#accordion").size();
	if (n == 1) {
		divMainContainerJQ.find("div#simpleSearch").nextAll().remove().end().after(data);
		initPosterResults();
	} else {
		divMainContainerJQ.children().remove().end().html(data); 
		initSimpleSearchPoster();
	}
}

function handleAdvancedSearchResults(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}

	divMainContainerJQ.children().remove().end().html(data);
	var n = divMainContainerJQ.find("div#accordion").size();

	// ili kao rezultat dolazi pogresna forma ili rezultati.  ako je pogresna forma ponovo
	// je inicijaliziraj
	if (n == 1) {
		initAdvancedSearchPoster();
		initPosterResults();
		divMainContainerJQ.find(".error").remove();
	} else {
		initAdvancedSearchPoster();
	}
}

function handleAdvancedSearchResults24sata(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}

	divMainContainerJQ.children().remove().end().html(data);
	var n = divMainContainerJQ.find("div#accordion").size();

	// ili kao rezultat dolazi pogresna forma ili rezultati.  ako je pogresna forma ponovo
	// je inicijaliziraj
	if (n == 1) {
		initPosterResults24sata();
	} else {
		initAdvancedSearchPoster();
	}
}

function initPagination(accordionJQ) {
	var linkNext = accordionJQ.find("a.paginatorNext").attr("href");
	accordionJQ.find("a.paginatorNext").attr("href", "#page").click(function(event) {
			var index = linkNext.search("=");
			linkNext = linkNext.substr(index + 1);
			$.history.load("page=" + linkNext);
			return false;
			});

	var linkPrev = accordionJQ.find("a.paginatorPrev").attr("href");
	accordionJQ.find("a.paginatorPrev").attr("href", "#page").click(function(event) {
			var index = linkPrev.search("=");
			linkNext = linkPrev.substr(index + 1);
			$.history.load("page=" + linkNext);
			return false;
			});
}


// inicijalizacija rezultata pretrage //
function initPosterResults() {
	var accordionJQ = $("#accordion")

	initPagination(accordionJQ);	
	
	accordionJQ.find("a.sviOglasiLink").click(function(event){
		var id = $(this).attr("id");
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
			
		// loadaj novu stranicu
		$.history.load(hash + "=" + id);
		return false;
			
	});


	divMainContainerJQ.find("a#printerFriendly").click(function(event){
		event.preventDefault();
		startAjax();
		divMainContainerJQ.children().remove().end().load("/ajaxPrinterFriendly?" + (new Date()).getTime(), initPrinterFriendly);
	});
}
// kraj inicijalizacije rezultata pretrage //


// inicijalizacija rezultata pretrage //
function initPosterResults24sata() {
	var accordionJQ = $("#accordion")

	// definiraj AJAX pozive za previous i next	
	initPagination(accordionJQ);

	// definiraj click evente za divove koji sadrze generalne podatke
	accordionJQ.find("a.udzbenik").click(function(event){
		var id = $(this).attr("id");
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
			
		// loadaj novu stranicu
		$.history.load(hash + "=" + id);
		return false;
	});
}
// kraj inicijalizacije rezultata pretrage //


function handlePoster(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}
	divMainContainerJQ.children().remove().end().html(data);

	var accordionJQ = $("#accordion")
	// svi oglasi
	accordionJQ.find("div#sviOglasi a:first").click(function(event){
		var id = $(this).attr("id");
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
			
		// loadaj novu stranicu
		$.history.load(hash + "=" + id);
		return false;
	});
	accordionJQ.find("div#povratakDiv a").click(function(event){
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
			
		// loadaj novu stranicu
		$.history.load(hash);
		return false;
	});
}

function initPrinterFriendly(data, textStatus) {
	endAjax();
	if (textStatus == "error") {
		divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
		return;
	}
}

function startAjax() {
	position = $(window).width() / 2 - loadingJQWidth / 2;
	loadingJQ.css("left", position + "px").appendTo("body").show();
	isAjaxLoading = true;
}

function endAjax() {
	loadingJQ.hide();
	isAjaxLoading = false;
}

function startAjaxPopup() {
	position = $(window).width() / 2 - loadingJQWidth / 2;
	loadingJQ.css("left", position + "px").appendTo("#popupContact").show();
	isAjaxLoading = true;
}

function endAjaxPopup() {
	loadingJQ.hide();
	isAjaxLoading = false;
}

function callAjax(type, url, handler, data, datatype) {
	startAjax();
	$.ajax({
type: type,
url : url,
data : data,
cache : false,
dataType: datatype,
error : function(){
endAjax();
divMainContainerJQ.children().remove().end().html("Greška u komunikaciji sa serverom"); 
},
success: handler});
}
