window.alert = jAlert;
// window.confirm = jConfirm;
window.prompt = jPrompt;


var emailKeyupEnable = false;
var emailLastValue = "";
var emailTimeout;
var usernameKeyupEnable = false;
var usernameLastValue = "";
var usernameTimeout;

function InitializeAjaxRegistration() {

	emailKeyupEnable = ($(".field #AccountPassword").val()!= '');
	
	$(".field #AccountUsername").keyup(function() {

		var _username = $(this).val();
		if (_username == "") {
			$("#esito_username").html('');
		} else if (_username != "" && _username != usernameLastValue) {
			$("#esito_username").html('');
	    	if (usernameTimeout) clearTimeout(usernameTimeout);

	    	usernameTimeout = setTimeout(function () {
	    		var postdata = {
    				'data[Account][username]': _username
    			}
	    		$("#esito_username").load('/accounts/ajaxCheckUsername', postdata);
	    	}, 200);
	      
	    	usernameLastValue = _username;
	    	usernameKeyupEnable = true;
	    }
	});
	
	$(".field #AccountEmail").blur(function() {

		var _email = $(this).val();
		
		if (_email == "") {
			$("#esito_email").html('');
		} else if (_email != "" && _email != emailLastValue) {
			$("#esito_email").html('');
			
			var postdata = {
				'data[Account][email]': _email
			}
			$("#esito_email").load('/accounts/ajaxCheckEmail', postdata);
			
			emailLastValue = _email;
		}

		if ($(".field #AccountUsername").val() == '' && _email.indexOf('@') >= 0) {
			_username=_email.split('@');
			$(".field #AccountUsername").val(_username[0]);
		}
	});

	$(".field #AccountEmail").keyup(function() {
		
		var _email = $(this).val();
		
		if (_email == "") {
			$("#esito_email").html('');
		} else if (_email != "" && _email != emailLastValue) {
			$("#esito_email").html('');
			if (emailTimeout) clearTimeout(emailTimeout);

	    	emailTimeout = setTimeout(function () {
	    		var postdata = {
    				'data[Account][email]': _email
    			}
    			$("#esito_email").load('/accounts/ajaxCheckEmail', postdata);
	    	}, 200);
	      
	    	emailLastValue = _email;
	    }
	});

	/* $(".field #AccountUsername").keyup(function() {

		var _username = $(this).val();
		if (_username != "" && _username != usernameLastValue) {
	    	if (usernameTimeout) clearTimeout(usernameTimeout);

	    	usernameTimeout = setTimeout(function () {
	    		var postdata = {
    				'data[Account][username]': _username
    			}
    			$("#esito_username").html('');
	    		$("#esito_username").load('/accounts/ajaxCheckUsername', postdata);
	    	}, 200);
	      
	    	usernameLastValue = _username;
	    	usernameKeyupEnable = true;
	    }
	}); */
	
	/* $(".field #AccountEmail").blur(function() {
		var _email = $(this).val();
		if (_email != "") {
			var postdata = {
				'data[Account][email]': _email
			}
			emailKeyupEnable = true;
			$("#esito_email").html('');
			$("#esito_email").load('/accounts/ajaxCheckEmail', postdata);
			
			emailLastValue = _email;
			
			if ($(".field #AccountUsername").val() == '') {
				_username=_email.split('@');
				$(".field #AccountUsername").val(_username[0]);
			}
		}
	}).keyup(function() {
		
		var _email = $(this).val();
	    if (_email != "" && emailKeyupEnable && _email != emailLastValue) {
	    	if (emailTimeout) clearTimeout(emailTimeout);

	    	emailTimeout = setTimeout(function () {
	    		var postdata = {
    				'data[Account][email]': _email
    			}
    			$("#esito_email").html('');
    			$("#esito_email").load('/accounts/ajaxCheckEmail', postdata);
	    	}, 200);
	      
	    	emailLastValue = _email;
	    	
	    	if ($(".field #AccountUsername").val() == '') {
				_username=_email.split('@');
				$(".field #AccountUsername").val(_username[0]);
			}
	    }
	}); */
	
	$(".field #AccountPassword").keyup(function() {
		var _password = $(this).val();
		if (_password != "") {
			var postdata = {
				'data[Account][password]': _password
			}
			$("#esito_password").html('');
			$("#esito_password").load('/accounts/ajaxCheckPassword', postdata);
		}
		
		var _password2 = $(".field #AccountPassword2").val();
		if (_password != "" && _password2 != "") {
			var postdata = {
				'data[Account][password]': _password,
				'data[Account][password2]': _password2
			}
			$("#esito_password2").html('');
			$("#esito_password2").load('/accounts/ajaxCheckPasswordSimilar', postdata);
		}
	});
	
	$(".field #AccountPassword2").keyup(function() {
		var _password = $(".field #AccountPassword").val();
		var _password2 = $(".field #AccountPassword2").val();
		if (_password != "" && _password2 != "") {
			var postdata = {
				'data[Account][password]': _password,
				'data[Account][password2]': _password2
			}
			$("#esito_password2").html('');
			$("#esito_password2").load('/accounts/ajaxCheckPasswordSimilar', postdata);
		}
	});
}

function ThickBoxInitForm() {
	
	$('#ajax_form input[type=checkbox].checkbox-green').checkbox({
		cls: "jquery-checkbox_g",
		empty: '/img/empty.gif'
	});
	
	setTimeout("setThickBoxFocus();", 100);
	
}

function setThickBoxFocus(){	
	$('#ajax_form input[type="text"]:first').focus();
}

function ThickBoxLogin() {	
	tb_show("", "/accounts/login?height=280&width=330", "");
}

function ThickBoxCreateNewPassword(account_id, password_code) {
	tb_show("", "/accounts/createNewPasswordPopup/" + account_id + "/" + password_code + "/?height=280&width=330", "");
}

function ThickBoxRegister() {
	tb_show("", "/accounts/register?height=370&width=720", "");
}

function ThickBoxRecoveryPassword() {
	tb_show("", "/accounts/recoveryPassword?height=160&width=330", "");
}

function ThickBoxEditProfile() {
	tb_show("", "/accounts/edit?height=350&width=720", "");
}

function ThickBoxUnsubscribe() {
	tb_show("", "/accounts/unsubscribePopup?height=160&width=330", "");
}

function ajaxSubmit(form) {
	
	$.ajax({
		url: $(form).attr('action'),
		data: $(form).formSerialize(),
		success: function (data){
			if (data.indexOf("<ajax_answer") >= 0) {
				parseAnswer(data, $(form).parent(), true);
			} else {
				$(form).parent().html(data);
			}
			
			$("input[type=checkbox].autopostback").unbind("change").change(function(){	
				var form = $(this).parents("form");
				ajaxSubmit(form);	
			});
			
			$("a.autopostback").unbind("click").click(function(event){	
				var form = $(this).parents("form");
				ajaxSubmit(form);
				event.stopPropagation();
				return false;	
			});
			
			enablePublic();
		}
	});
	
	return false;
}

function ajaxRequestUrl(url, target) {

	
	$.ajax({
		url: url,
		success: function (data){
			if (data.indexOf("<ajax_answer") >= 0) {
				parseAnswer(data, target, true);
			} else {
				$('#'+target).html(data);
			}
		}
	});
	
	return false;
}

function changeLanguage() {
	document.location = $('#language').val();
}

function parseXML( xmlText ) {
    if( window.ActiveXObject && window.GetObject ) {
        var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
        dom.loadXML( xmlText );
        return dom;
    }
    if( window.DOMParser )
        return new DOMParser().parseFromString( xmlText, 'text/xml' );
    throw new Error( 'No XML parser available' );
} 



function parseAnswer(xmlText, target, replace) {
	try {	
	
		var dom = parseXML(xmlText);
		var $dom = $(dom);
		
		error = ($dom.find('result').text() != '1');
		if (error) {
			errorMessage = $dom.find('errorMessage').text();
			
			if (errorMessage != "") {
				if (messages[errorMessage] != null)
					ShowError(messages[errorMessage], true);					
				else
					ShowError(errorMessage, true);
			} else 
				ShowError(data, true) ;
		}
		else {
			
			try {
				
				var redirect = $dom.find('redirect').text();
				if (redirect != '' && redirect != null) {
					window.location = redirect;
				}
				else
				{	
					try {
						tb_remove();
					} catch (error) {}
							
					var contentHtml = $dom.find('contentHtml').text();
					if (contentHtml != '' && contentHtml != null && target != null) {
						if (replace == 'REPLACE') {
							target.replaceWith(contentHtml);
						} else if (replace) {
							target.html(contentHtml);
						} else {
							target.append(contentHtml);
						}
					}
					
					if ($dom.find('validationErrors').text() != '') {
						var validationErrors = $dom.find('validationErrors');
						var errorsText = "";
						validationErrors.find('error').each(function(index){
							//console.log(this.textContent);
							errorsText += this.textContent + "\n";
							$("#" + $(this).attr("field")).parent(".autopostback_field").addClass("error");
						});
						
						ShowError(errorsText, false);
					}
				}
			} 
			catch (error) {

				alert (error);
			}
			
			try {
				
				var jsCalls = $dom.find('jsCalls').text().split(";");
				//console.log(jsCalls);
				for (k = 0; k < jsCalls.length; k++) {
					eval(jsCalls[k]);
				}
				
				
			} catch (error) {
				
			}
		}
	} catch (error) {
		alert (error);
	}
	
	try {
		var sectionMenu = $dom.find('sectionMenu').text();
		if (sectionMenu != '' && sectionMenu != null) {
			$('#sectionMenu').html(sectionMenu);
		}
	} 
	catch (error) {
		alert(error);
	}
}

function loseAnswer(HttpRequest, textStatus, errorThrown) {
	ShowError(textStatus, true);
}

function ShowError(message, lockApplication) {
	if (messages != null)
		alert(message, messages["AlertTitle"]);
	else
		alert(message, 'Attenzione!!');
}

$.ajaxSetup({
	type: "POST",
	dataType: "text",
	error: loseAnswer
});

function ShowFooterAddSection() {
	$("#footerAddSection").show();
}

function HideFooterAddSection() {
	$("#footerAddSection").hide();
}


function cveerPageTracker(url) {
	
	pageTracker._trackPageview(url);
}

function Reload() {
	window.location.reload();
}

function enablePublic(){
	if ($('#ACCOUNTID').val() == '-1') {
		if (!$('a#btn_cv_publish').hasClass('thickbox')) {
			// INIZIALIZZO THICKBOX
			$('a#btn_cv_publish').addClass('thickbox')
			tb_init('a#btn_cv_publish');
		}		
	} else {
		
		$('a#btn_cv_publish').removeClass('disable_make_public');
		$('a#btn_cv_publish').addClass('make_public');
		
		if ($('#CVPUBLISHED').val() == '1') {
			$('a#btn_cv_undo').removeClass('disable_cancel_modification');
			$('a#btn_cv_undo').addClass('cancel_modification');
		} else {
			$('a#btn_cv_undo').addClass('disable_cancel_modification');
			$('a#btn_cv_undo').removeClass('cancel_modification');
		}
	}
}


$(document).ready(function () {
	$("input[type=checkbox].autopostback").unbind("change").change(function(){	
		var form = $(this).parents("form");
		ajaxSubmit(form);	
	});
	
	$("a.autopostback").unbind("click").click(function(event){	
		var form = $(this).parents("form");
		if (form.find('input[name="data[Cveer][postback_link]"]') != null) {
			var paramValue = $(this).attr('href').replace('#', '');
			form.find('input[name="data[Cveer][postback_link]"]').val(paramValue);
		}
		ajaxSubmit(form);
		event.stopPropagation();
		return false;	
	});
	
	$("a.helpstate").unbind("click").click(function(event){
		
		if ($(this).hasClass('delete')) {
			$("#news_list").fadeOut();
		} else if ($(this).hasClass('close')) {
			$("#news_list .help").slideUp();
			$("#news_list a.read").removeClass("bye");
			$("#news_list a.close").addClass("bye");
		} else if ($(this).hasClass('read')) {
			$("#news_list .help").slideDown();
			$("#news_list a.read").addClass("bye");
			$("#news_list a.close").removeClass("bye");
		}
		
		$.ajax({
			url: $(this).attr('href'), 
			success: function (data) {
			}
		});

		event.stopPropagation();
		return false;	
	});
	
	$('#btn_cv_publish').click(function (event) {
		if ($(this).hasClass('disable_make_public')) {
			event.stopPropagation();
			return false;
		}
		else {
			cveerPageTracker('/curriculums/publish');
			return true;
		}
	});

	
	$('#btn_cv_undo').click(function (event) {
		if ($(this).hasClass('disable_cancel_modification')) {
			event.stopPropagation();
			return false;
		}
		else {
			cveerPageTracker('/curriculums/undo');
			return true;
		}
	});
	
	$("#checkbox_public_cv").click( function (){
		if($("#link_published_cv").hasClass("bye")) {
			$("#link_published_cv").removeClass("bye");
			$("#link_published_cv").removeClass("bye");
			$("#input_published_cv").slideDown("fast");
		} else{
			$("#link_published_cv").addClass("bye");
			$("#input_published_cv").slideUp("fast", function() {
				$("#link_published_cv").addClass("bye");
			});
		}
		
	});
	
	// enablePublic();
});
