/**
 * zestaw funckji automatycznego pokazywania i ukrywania noticów
 * dokładny opis wykorzystania zobacz @see Document @see validateAjax
 */

var tundraNoticeStates = new Object();
var tundraNoticeTarget = new Object();
var tundraNoticeHideCounter = 0;

function showTundraNotice(id){
	tundraNoticeTarget[id] = 1;
}

function showTundraNoticeWithText(id, text){
	tundraNoticeTarget[id] = 1;
	elem = document.getElementById(id);
	elem.content = elem.content + " " + text;
}

function hideTundraNotice(id){
	tundraNoticeTarget[id] = 0;
}


function tundraNoticeHideComplete(id){
	xajax.$(id).style.display = 'none';
	tundraNoticeHideCounter--;
	if (tundraNoticeHideCounter == 0){
		for (var id in tundraNoticeTarget){
			if (tundraNoticeTarget[id] == 1)
				updateTundraNotice(id);
		}
	}
}


function updateTundraNotice(id){
	var slider;
	slider = new Fx.Slide(id, {mode: 'vertical'});
	if (tundraNoticeTarget[id]){
		if (xajax.$(id).style.display == 'none')
			xajax.$(id).style.display = 'block';
		if (!tundraNoticeStates[id]){
			slider.hide().slideIn();
			tundraNoticeStates[id] = 1;
			return 1;
		}
	} else {
		if (tundraNoticeStates[id]){
			tundraNoticeHideCounter++;
			slider.addEvent('complete', function(){
				tundraNoticeHideComplete(id); 
			});
			slider.show().slideOut();
			tundraNoticeStates[id] = 0;
			return 1;
		}
	}
	return 0;
}

function updateTundraNotices(){
	var counter = 0;
	for (var id in tundraNoticeTarget){
		if (tundraNoticeTarget[id] == 0)
			counter += updateTundraNotice(id);
	}
	if (!counter)
		for (var id in tundraNoticeTarget){
			if (tundraNoticeTarget[id] == 1)
				updateTundraNotice(id);
		}
}


function validateAjax(form, component, validateFunction){
	if (!(typeof(tinyMCE) == "undefined")){ //jesli uzywamy TINY
		tinyMCE.triggerSave(true,true); //zrób magie, aby przed wysłaniem formatki przekazać dane TINY do odp. pól.
		//bez powyższego, dane wyladuja w formatce dopiero po walidacji, i zostaną wykorzystane dopiero przy kolejnym wysłaniu
		//czyli walidacja bedzie korzystać z outdated danych, co może powodować dziwne zachowanie (wysłanie niepoprawnych danych itp).

		// Robson - to co zrobiles powyzej jest genialne. Powinienes dostac nobla. exeman. ;)
	}

	var btn = form.id + "SubmitButton";
	xajax.$(btn).disabled = true;
	var xajaxExecute = "xajax_"+component.toLowerCase()+"ValidateAjax"; //to lower case żeby zwalczyc bug w PHP gdzie get_class zwraca małe literki :P. To nie get_class zwraca małe literki, tylko exe się gdzieś pierdzielnął, z tego co pamietam :P
	window[xajaxExecute](form.id, xajax.getFormValues(form), validateFunction);
		
	return false;
}

function submitButtonUnlock(formId){
	var btn = formId + "SubmitButton";
	xajax.$(btn).disabled = false;
}

function submitForm(formId){
	xajax.$(formId).submit();
}
