var errors = new Array("empty", "valid_email", "duplicate", "short", "error"); // possible input errors

function ajaxify(e, target, ok) {
		
		var url = $(target).getAttribute("action");
		new Ajax.Request(
				url,
				{
						method: "post",
						parameters: $(target).serialize() + '&ajax=true', // ajax parameter if js disabled
						onLoading: $(target + "_loading").show(),
						onComplete: function(transport) {
//alert(transport.responseText);
								var response = eval('(' + transport.responseText + ')'); // get JSON response
								var properties = new Array();
								var i = 0;
								for (property in response) { //get object properties
									properties[i] = property;
									i++;
									}
								var state = "ok"; // control variable
								for (i = 0; i < properties.length; i++) {
									if (in_array(eval("response." + properties[i]), errors)) { //if current field has error
										if (state == "ok") { // switch control variable
											state = "error";
											$(properties[i]).focus(); // focus first error input
											}
										if ($(properties[i]).next("span")) {
											$(properties[i]).next("span").addClassName('error'); // colorize info span
											}
										} else {
											$(properties[i]).next("span").removeClassName('error') // decolorize info span
											}
									}
								$(target + "_loading").hide();
								if (state == "ok") { // success
									successSlide(target, ok);
									}
							}
					}
				);
		Event.stop(e);
		}


function successSlide(target, ok) { // slide ajaxify() response

	$(target).disable();

	new Effect.toggle(ok, 'appear'); // show success with some cool effects :)
	new Effect.ScrollTo("show");

	}

function getOrase(e) {

	var element = Event.element(e); // get element
	var parent = element.getAttribute("id"); // get select ID
	var id_judet = element.getValue(); // get value of select

	var form = element.up("form").getAttribute("id");
		
	var target = "oras";
	
	if (id_judet == "0" || id_judet == "all") { // disable child select if parent select not selected
		$(target).disable();
		}
	
	if (id_judet != "0" && id_judet != "all") { // else 
		new Ajax.Request(
				root_ + "get-orase-ajax",
				{
						method: "post",
						parameters: 'id_judet=' + id_judet,
						onLoading: $(parent + "_loading").show(), // show loading image
						onComplete: function(transport) {
								$(parent + "_loading").hide(); // hide loading image
								var orase = eval('(' + transport.responseText + ')'); // get JSON response
								
								var update = '<option value="0">orasul</option>';
								update += '<option value="0" disabled="disabled">&nbsp;</option>';
								if (form != "register" && form != "add-event") {
									update += id_judet == 10 ? '<option value="all">Toate sectoarele</option>' : '<option value="all">Toate orasele</option>';
									}
								
								for (var i = 0; i < orase.length; i++) { // format response
									update += '<option value="' + orase[i].id + '">' + orase[i].nume + '</option>\n';
									}
								$(target).update(update);
								$(target).enable(); // enable previous disabled child select
								}                     
				}
				);
		}
	Event.stop(e);
	}

function changeDate(e, input_day, input_month, input_year, target) {

	var element = Event.element(e);
	//var target = element.up("div").getAttribute("id");
	if (element.up("ul").getAttribute("class") == "calendar_year") {
		var an = element.getAttribute("title");
		var luna = $F(target + "_luna");
		$(target + "_an").setAttribute("value", an);
		} else {
			var an = $F(target + "_an");
			var luna = element.getAttribute("rel");
			$(target + "_luna").setAttribute("value", luna);
			}


	new Ajax.Request(
			root_ + "change-date-ajax",
			{
					method: "post",
					parameters: "an=" + an + "&luna=" + luna + "&target=" + target,
					onLoading: function() {
								$(target + "_current_date").hide();
								$(target + "_loading").show();
										},
					onComplete: function(transport) {
							$(target).update(transport.responseText);
							$$('.calendar_year li a, .calendar_month li a').each(function(e) {
								Event.observe(e, 'click', function(e) {
									changeDate(e, input_day, input_month, input_year, target);
									});
								});
							
							if (target == "select_date_output") {
								$$('#select_date_output table a').each(function(e) {
									Event.observe(e, 'click', function(e) {
										addDate(e, input_day, input_month, input_year, target);
										});
									});
								} else if (target == "select_date_output2") {
									$$('#select_date_output2 table a').each(function(e) {
										Event.observe(e, 'click', function(e) {
											addDate(e, input_day, input_month, input_year, target);
											});
										});
									} else {
										$$('#' + target + ' table a').each(function(e) {
											Event.observe(e, 'click', getEvents);
											});
										}
							$(target + "_loading").hide();
							$(target + "_current_date").show();
							}
				}
				);
	Event.stop(e);
	}

function getEvents(e) {
	
	var element = Event.element(e);
	var data = element.getAttribute("rel");

	new Ajax.Request(
			root_ + "get-event-ajax",
			{
					method: "post",
					parameters: "data=" + data,
					onLoading: function() {
								$("calendar_events_current_date").hide();
								$("calendar_events_loading").show();
										},
					onComplete: function(transport) {
							var evenimente = eval('(' + transport.responseText + ')'); // get JSON response
								var update = '<ul>';
								for (var i = 0; i < evenimente.length; i++) { // format response
									update += '<li' + ((i + 1) == evenimente.length ? ' class="last"' : "") + '><a href="' + evenimente[i].url + '" title="' + evenimente[i].title + '">' + evenimente[i].title + '</a></li>\n';
									}
								update += '</ul>';

							$("sidebar_events").update(update);
							
							$$('#calendar_events table a').each(function(e) {
								Event.observe(e, 'click', getEvents);
								});
							
							$("calendar_events_loading").hide();
							$("calendar_events_current_date").update(evenimente[0].ro_data);
							$("calendar_events_current_date").show();
							}
				}
				);
	Event.stop(e);
	}

function rate(e) {
	
	var element = Event.element(e);
	var nota = element.getAttribute("title").split("/")[0];
	var url = element.getAttribute("href");
		
	new Ajax.Request(
			url,
			{
					method: "post",
					parameters: "nota=" + nota,
					onComplete: function(transport) {
							$("star-rating").update(transport.responseText);
							}
				}
				);
	Event.stop(e);
	}


function deleteImage(e) {

	var element = Event.element(e); // get element
	var pic = element.getAttribute("alt"); // get select ID
	var id = $F("id_target"); // get value of select
	var target = $F("target"); // get value of select

	new Ajax.Request(
				root_ + "delete-image-ajax",
				{
						method: "post",
						parameters: 'id=' + id + '&pic=' + pic + '&target=' + target,
						onComplete: function(transport) {
								var response = transport.responseText;
								$("images").update(transport.responseText);
								$$('.delete_pic').each(function(e) {
									Event.observe(e, 'click', function(f) {
										if (confirm("Esti sigur ca vrei sa stergi imaginea?")) {
											deleteImage(f);
											}
										});
									});
								}
				}
				);
	Event.stop(e);
	}

function deleteTrainer(e) {

	var element = Event.element(e); // get element
	var trainer = element.getAttribute("rel"); // get select ID
	var id = $F("id_target"); // get value of select

	new Ajax.Request(
				root_ + "delete-trainer-ajax",
				{
						method: "post",
						parameters: 'id=' + id + '&trainer=' + trainer,
						onComplete: function(transport) {
								var response = transport.responseText;
								$("trainers_container").update(transport.responseText);
								$$('.delete_trainer').each(function(e) {
									Event.observe(e, 'click', function(f) {
										if (confirm("Esti sigur ca vrei sa stergi trainerul?")) {
											deleteTrainer(f);
											}
										});
									});
								}
				}
				);
	Event.stop(e);
	}

function login(e) {

	var email = $F('user_email');
	var password = $F('user_password');

	new Ajax.Request(
				root_ + "autentificare",
				{
						method: "post",
						loading: new Effect.SlideUp($('login'), {duration: 0.5}),
						parameters: 'email=' + email + '&password=' + password + '&ajax=true',
						onComplete: function(transport) {
								var response = transport.responseText;
								var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
								if (IE6) {
									$('badge').setStyle({top: "100px"});
									}								
								if (response) {
									var logged = 'Salut, ' + response + '. Esti autentificat.<br /><ul><li><a href="' + root_ + 'trainingurile-mele" title="Vezi trainigurile la care esti inscris">Trainingurile mele</a> |</li><li><a href="' + root_ + 'contul-meu" title="Vezi detaliile contului tau">Contul meu</a> |</li><li><a href="' + root_ + 'logout" title="Iesire din cont">Iesire</a></li></ul>';
									$('useraccount').update(logged);
									} else {
										new Effect.SlideDown($('login'), {duration: 0.5});
										if (IE6) {
											$('badge').setStyle({top: "250px"});
											}
										}
								
								}
				}
				);
	Event.stop(e);
	}

function sleep(i) {
	
	while(i < 3) {
		//alert(i);
		i++;
		setTimeout("sleep('" + i + "')", 1000);
		}

	}

onloadQueue(function() { 
	$$(".judete_select").each(function(e) {
		Event.observe(e, 'change', getOrase);
		});
	});