/* base */
function goToOpenX() {
	// I hate this replace("&amp", "&")
	// TODO - fix it
	window.location = settings.OPENX_REDIRECT_URL.replace("&amp;", "&").replace("{%SESSION%}", $.cookie("sess")).replace("{%EXIT_URL%}", escape(window.location));
}

function goToVTiger() {
	window.location = settings.VTIGER_REDIRECT_URL.replace("{%SESSION%}", $.cookie("sess"));
}

function logout() {
	removeLogoutIframes();
	var openx = $('<iframe id="openxLogout" src="'+settings.OPENX_LOGOUT_URL+'" width="0" height="0"></iframe>');
	var vtiger = $('<iframe id="vtigerLogout" src="'+settings.VTIGER_LOGOUT_URL+'" width="0" height="0"></iframe>');
	var vtigerPortal = $('<iframe id="vtigerPortalLogout" src="'+settings.VTIGER_PORTAL_LOGOUT_URL+'" width="0" height="0"></iframe>');

	$('#logout-container')
	    .append(openx)
	    .append(vtiger)
	    .append(vtigerPortal);
	$.cookie("sess", null);
	anonymousState();
}

function removeLogoutIframes() {
    $('#openxLogout').remove();
    $('#vtigerLogout').remove();
    $('#vtigerPortalLogout').remove();
}

function loggedState() {
	$(".anonymous-user").hide();
	$(".logged-user").show();
}

function anonymousState() {
	$(".anonymous-user").show();
	$(".logged-user").hide();
}

function isLogged() {
	$.ajax({
		url: settings.API_PROXY_URL + "is-logged",
		dataType: "json",
		success: function(response) {
			if (response && response.logged == true)
				loggedState();
			else
				this.error();
		},
		error: function() {
			anonymousState();
		}
	});
}

$(function() {
	if (!$.cookie("sess")) {
		anonymousState();
	}
	else {
		isLogged();
	}
	$("a#login").fancybox({
		'hideOnContentClick': false,
		'frameWidth': 400,
		'frameHeight': 150,
		'callbackOnShow': function () {
			removeLogoutIframes();
			$("#fancy_div [name=username]").focus();
			$("#login-frame form").submit(function(){
				var params = {
					username: $("#fancy_div [name=username]").val(),
					password: $("#fancy_div [name=password]").val()
				};
				$("#login-frame .error").hide();
				$("#login-frame .loading").show();
				$.ajax({
					url: settings.API_PROXY_URL + "login",
					data: params,
					type: "POST",
					dataType: "json",
					success: function(response) {
						$("#login-frame .loading").hide();
						if (!response)
						{
							this.error();
							return;
						}

						switch(response.status)
						{
							case "ok":
								$.cookie("sess", response.sess);
								$("#fancy_close").click();
								loggedState();
								break;
							case "error":
								$("#login-frame .login-error").show();
								break;
							default:
								this.error();
						}
					},
					error: function () {
						$("#login-frame .loading").hide();
						$("#login-frame .general-error").show();
					}
				});
				return false;
			});
		}
	});
	
	var classes = $("body").attr("class");
	if (classes) {
		classes = classes.split(" ");
		for(i = 0; i < classes.length; i++) {
			var clazz = classes[i];
			if (eval('typeof '+clazz) == "object") {
				if (eval('typeof '+clazz+'.load') == "function") {
					eval(clazz+'.load()');
				}
			}
		}
	}
	
});

/* contact */
var contact = {
	load: function() {
		$('#contact-success').hide();
		$('#contact-error').hide()
		$.validator.messages.required = "יש למלא שדה זה.";
		$.validator.messages.email = "יש למלא כתובת אימייל חוקית.";
		
		$('[name=type]').change(contact.registerValidators);
		$('[name=type]').change();
	},
	
	registerValidators: function() {
		$('#contact-form')
			.find('input, select, textarea')
			.removeClass('required')
			.removeClass('email');
			
		switch($('[name=type]').val())
		{
			case 'quote':
				$('[name=first-name]').addClass('required');
				$('[name=phone]').addClass('required');
				$('[name=email]').addClass('required').addClass('email');
				$('[name=website]').addClass('required');
				$('[name=impressions]').addClass('required');
				$('[name=contact-msg]').addClass('required');
				break;
			default:
				$('[name=first-name]').addClass('required');
				$('[name=email]').addClass('required').addClass('email');
				$('[name=contact-msg]').addClass('required');
				break;
		}
		
		$('#contact-form').validate({
			submitHandler: contact.submit
		});
	},
	
	submit: function(form) {
		$(form).ajaxSubmit({
			dataType: "json",
			success: contact.submitSuccess,
			error: contact.submitError
		});
	},
	
	submitSuccess: function(response) {
		if (!response || response.status != "ok")
			return this.error();
		
		$('#contact-form').hide();
		$('#contact-success').show();
	},
	
	submitError: function() {
		$('#contact-form').hide();
		$('#contact-error').show()
	}
}

