/***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
//
//@implementing and optimizing for Talent Banque: Alex Baskov, 2009
/***************************/

//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatusRequestEdit = 0;


//loading popup with jQuery magic!
function loadPopupRequestEdit()
{
	//loads popup only if it is disabled
	if(popupStatusRequestEdit == 0)
	{
		$("#popupRequestEditBackground").css({
			"opacity": "0.5" // set to zero, if you don't want to have a background
		});
		$("#popupRequestEditBackground").fadeIn("slow");
		$("#popupRequestEdit").fadeIn("slow");
		popupStatusRequestEdit = 1;
	}
	request_edit_validator = $("#form_request_edit").validate({
		errorElement: "div",
		rules: {
			request_edit_desc: {
				required: true,
				minlength: 2
			},
			request_edit_profile: {
				required: true,
				accept:'rar|s?7z|tar|tar.gz|zip|jpe?g|gif|png|bmp|tiff?|docx?'
			}
		},
		messages: {
			request_edit_desc: {
				required: "Missing profile description",
				minlength: jQuery.format("Enter at least {0} characters"),
				maxlength: jQuery.format("Enter less than {0} characters")
			},
			request_edit_profile: {
				required: "Missing attachment",
				accept: "Unsupportable file extension"
			}
		},
		errorPlacement: function(error, element) {
				element.next().append(error);
		},
		// set this class to error-labels to indicate valid fields
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
			label.parent().hide();
		},
		highlight: function(element, errorClass) {
			$(element).next().show();
		},
		submitHandler: function() {
			//alert("submitted!");
		}
	});
	$("#popupRequestEdit input").keypress(function(){
		request_edit_validator.element("#" + $(this).attr('id'));
	}).change(function(){
		request_edit_validator.element("#" + $(this).attr('id'));
	});
}

//disabling popup with jQuery magic!
function disablePopupRequestEdit()
{
	//disables popup only if it is enabled
	if(popupStatusRequestEdit == 1)
	{
		$("#popupRequestEditBackground").fadeOut("slow");
		$("#popupRequestEdit").fadeOut("slow");
		popupStatusRequestEdit = 0;
	}
	$("#popupRequestEdit .field_error").hide();
	$("#popupRequestEdit input").val("");
	showRequestEditForm();
}

//centering popup
function centerPopupRequestEdit()
{
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupRequestEdit").height();
	var popupWidth = $("#popupRequestEdit").width();

	//
	// we need here to emulate fixed position... so we use offsetHeight and offsetWidth instead
	// (c) Alex Baskov
	//
	var topScrollerPosition = 0;
	
	// we may just scroll to top and see nice popup
	//scroll(0,0);

	// center vertically in the visible area...
	if ($.browser.msie) {
		topScrollerPosition = document.body.scrollTop;
	}
	else {
		topScrollerPosition = window.pageYOffset;
	}

	//centering
	$("#popupRequestEdit").css({
		"position": "fixed",
		"top": windowHeight/2-popupHeight/2,
		//"top": parseInt((windowHeight-popupHeight)/2) + topScrollerPosition,
		//"top": topScrollerPosition + 60,
		"left": windowWidth/2-popupWidth/2
	});
	//only need force for IE6
	
	$("#popupRequestEditBackground").css({
		"height": windowHeight
	});
	
}

function showRequestEditSuccess() {
	$("#popupRequestEdit .popup_button.button_ok").show();
	
	$("#popupRequestEdit .message").hide();
	$("#popupRequestEdit .message.success").show();
	$("#popupRequestEdit #request_edit_button_ok_holder").show();
	$("#popupRequestEdit #request_edit_button_ok_holder .popup_label").show();
	$("#buttonRequestEditOk").parent().show();
}

function showRequestEditProgress() {
	$("#popupRequestEdit .popup_label").hide();
	$("#popupRequestEdit .popup_field").hide();
	
	$("#popupRequestEdit .message").hide();
	$("#popupRequestEdit .message.in_process").show();
}

function showRequestEditErrors(message) {
	$("#popupRequestEdit .message.desc_error").html(message);
	$("#popupRequestEdit .message").hide();
	$("#popupRequestEdit .message.error").show();
	$("#popupRequestEdit #request_edit_button_ok_holder").show();
	$("#popupRequestEdit #request_edit_button_ok_holder .popup_label").show();
	$("#buttonRequestEditBack").parent().show();
	$("#buttonRequestEditOk").parent().show();
}

function showRequestEditForm() {
	$("#popupRequestEdit .message").hide();
	$("#popupRequestEdit .message.desc").show();
	$("#popupRequestEdit .popup_label").show();
	$("#popupRequestEdit .popup_field").show();
	$("#popupRequestEdit .popup_button").show();
	$("#popupRequestEdit #request_edit_button_ok_holder").hide();
	$("#buttonRequestEditBack").parent().hide();
}


 function sendRequestEdit()
    {
		if (!request_edit_validator.form()) {
			return false;
		}
		showRequestEditProgress();
		var data = $('#form_request_edit input').fieldSerialize();
		$('#form_request_edit').ajaxSubmit
        ({
			type: "POST",
            url:'/external/requestProfileEdit', 
            success: function (data, status)
			{
				if (data.indexOf("success:") != -1) {
					showRequestEditSuccess();
				}
				else if (data.indexOf("error:") != -1) {
					var errors = data.substring(data.indexOf("error:") + "error:".length);
					var errorsList = errors.split(";");
					var message = "";
					for (var i = 0; errorsList.length; i++) {
						var errorInfo = errorsList[i];
							if (errorInfo == undefined || errorInfo == "") {
								break;
							}
					var splitted = errorInfo.split("=");
					var key = splitted[0];
					var value = splitted[1];
					message += "<li>" + key +": " +value +"</li>";
				}
				if (message == "") message = "Error during sending request.";
					showRequestEditErrors(message);
				}
            },
            error: function (data, status, e)
            {
                showRequestEditErrors(e);
            }
        })
		return false;

    } 
	
//CONTROLLING EVENTS IN jQuery
$(document).ready(function() {

	//LOADING POPUP
	//Click the button event!
	
	$("#buttonRequestEdit").click(function() {

		disablePopupLogin();
		
		//centering with css
		centerPopupRequestEdit();
		//load popup
		loadPopupRequestEdit();
	});
	$("#buttonRequestEditBack").click(function() {
		showRequestEditForm();
	});
		
	$("#buttonRequestEditSubmit").click(function() {
		sendRequestEdit();
	});
		
	//CLOSING POPUP
	$("#popupRequestEditClose, #buttonRequestEditOk").click(function() {
		disablePopupRequestEdit();
	});
	
	//Click out event!
	$("#popupRequestEditBackground").click(function() {
		disablePopupRequestEdit();
	});
	
	//Press Escape event!
	$(document).keypress(function(e) {
		if(e.keyCode == 27 && popupStatusRequestEdit == 1) {
			disablePopupRequestEdit();
		}
	});

});


