//Old default.js

function empty(mixed_var) {
	var key;
	if (mixed_var === "" || mixed_var === 0 || mixed_var === "0"
			|| mixed_var === null || mixed_var === false
			|| mixed_var === undefined) {
		return true;
	}
	if (typeof mixed_var == 'object') {
		for (key in mixed_var) {
			return false;
		}
		return true;
	}
	return false;
}

function genericPrototype(url, successFunc, method, parameters) {
	method = empty(method) ? 'post' : method;
	successFunc = empty(successFunc) ? 'genericJson' : successFunc;
	if (!empty(parameters)) {
		$.ajax( {
			url :url,
			type :method,
			data :parameters,
			success :eval(successFunc),
			error :eval(failureFunc)
		});
	} else {
		$.ajax( {
			url :url,
			type :method,
			success :eval(successFunc),
			error :eval(failureFunc)
		});
	}
}

function generiqueStatusCbk(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (0 == response.error) {
			// successMessageForm();
		} else {
			failureFunc(response);
			if (response.currentStatus == 1)
				$('#status_' + response.id).checked = true;
			else
				$('#status_' + response.id).checked = false;
		}
	} else {
		failureFunc(response);
	}
}

function generiqueActiveCbk(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (0 == response.error) {
			successMessageForm();
		} else {
			failureFunc(response);
			if (response.currentStatus == 1)
				$('#active_' + response.id).checked = true;
			else
				$('#active_' + response.id).checked = false;
		}
	} else {
		failureFunc(response);
	}
}

function failureFunc(response) {
	errorMessageForm(response.error);
}

function emptyFct(response) {
	return;
}

function errorMessageForm(msg, id) {

	var idDiv = empty(id) ? '#statusLayer' : '#' + id;

	if ($(idDiv) == undefined) {
		alert('Element "' + id + '" do not exist');
	}
	$(idDiv).show();
	showMsg = empty(msg) ? 'Error data save / Erreur de sauvegarde' : msg;
	$(idDiv).attr("class", 'errorBox');
	$(idDiv).html(showMsg);
	// $("html").animate( {
	// scrollTop :100
	// }, "slow");

	setTimeout( function() {
		$("#statusLayer").fadeOut("slow");
	}, 4000);
}

function removeRow(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (0 == response.error) {
			var result = parseInt($('#intResultTotal').html());
			$('#contentRow_' + response.row).hide();
			$('#intResultTotal').html(result - 1);
		} else {
			failureFunc(transport, textStatus);
		}
	} else {
		failureFunc(transport, textStatus);
	}
}

function removeRowList(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (empty(response.error)) {
			$('#contentRow_' + response.row).remove();
			// verifie le nombre d'asset pour recharger le message vide
			var resultatPage = parseInt($('#intResultPage').val());
			var PageInfo = parseInt($('#PageInfo').val());
			var result = parseInt($('#intResultTotal').html());
			$('#intResultTotal').html(result - 1);
			$('#intResultPage').val(resultatPage - 1);
			// si le total des asset est vide on recharge la page
			if ($('#intResultTotal').html() == '0') {

				if (response.urlReload != null)
					window.location.href = response.urlReload;
				else
					location.reload(true);
				// si le nombre d'asset est vide dans la page on recule d'une
				// page
			} else if ($('#intResultPage').val() == '0') {
				if (PageInfo > 1) {
					Page = PageInfo - 1;
				} else {
					Page = 1;
				}
				// window.location.href = response.urlReload;
			}
		} else {
			genericJson(transport, textStatus);
		}
	} else {
		genericJson(transport, textStatus);
	}
}

function successMessageForm(msg) {
	var showMsg;

	if ($(idDiv) == undefined) {
		alert('Element "statusLayer" do not exist');
	}
	$(idDiv).show();
	var showMsg = empty(msg) ? 'Data saved / Sauvegardé' : msg;
	$(idDiv).attr("class", 'confirmBox');
	$(idDiv).html(showMsg);
	$("html").animate( {
		scrollTop :100
	}, "slow");

	setTimeout( function() {
		$("#statusLayer").fadeOut("slow");
	}, 4000);

}

function formsClass() {
	var host;

	return {
		$ : function() {
			return host = this;
		},

		saveAction : function(callback, msg) {
			if (empty(callback))
				var callback = 'genericJson';

			genericPrototype(host.urlSave, callback, 'post', $(host.formName).serialize());
		},

		saveActionNoajax : function(callback, msg) {
			$(host.formName).unbind('submit')
			$(host.formName).attr('action', host.urlSave);
			calling = $(host.formName)

			$(host.formName).trigger("submit")

		},

		urlSave :null,
		formName :null
	}.$();
}

$.formsClassJson = {

	saveAction : function(jsonString, callback, msg) {
		if (empty(callback))
			var callback = 'genericJson';

		
		genericPrototype(jsonString.urlSave, callback, 'post', $(jsonString.formName).serialize());
	},

	saveActionNoajax : function(jsonString, callback, msg) {
		$(jsonString.formName).unbind('submit')
		$(jsonString.formName).attr('action', jsonString.urlSave);
		calling = $(jsonString.formName)

		$(jsonString.formName).trigger("submit")

	}

}

function formsSaveAction(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (empty(response.error)) {
			$("input[type=file]").each( function() {
				ajaxFileUpload(response.urlSaveFile, $(this).attr("id"));
			})

			successMessageForm();
			if (response.type == 'insert') {
				setTimeout( function() {
					window.location.href = response.redirection;
				}, 2500);
			}
		} else {
			failureFunc(response);
		}
	} else {
		failureFunc(response);
	}
}

function failureFunc(response) {
	errorMessageForm(response.error);
}

function successMessageForm(msg) {
	var showMsg;

	if ($('#statusLayer') == undefined) {
		alert('Element "statusLayer" do not exist');
	}
	$('#statusLayer').show();
	var showMsg = empty(msg) ? 'Data saved / Sauvegardé' : msg;
	$('#statusLayer').attr("class", 'confirmBox');
	$('#statusLayer').html(showMsg);
	$("html").animate( {
		scrollTop :100
	}, "slow");

	setTimeout( function() {
		$("#statusLayer").fadeOut("slow");
	}, 4000);

}

function hide(layer) {
	$(layer).hide();
}

function show(layer) {
	$(layer).show();
}

function reloadPage() {
	window.location.reload();
}

function hideLayer(layer) {
	$(layer).hide();
}

function showOrHideLayer(layer) {
	$(layer).slideToggle();
}

function pendingMessageForm(msg) {
	var showMsg;
	var img;
	$('#statusLayer').show();
	img = '<img src="/modules/core/admin/images/ajax-loader.gif" /> ';
	showMsg = empty(msg) ? ' Wait / Patientez ...' : msg;
	$('#statusLayer').attr("class", 'pendingBox');
	$('#statusLayer').html(img + showMsg);
	$("html").animate( {
		scrollTop :0
	}, "slow");
}

function ajaxFileUpload(urlElement, element) {
	$("#loading").ajaxStart( function() {
		$(this).show();
	}).ajaxComplete( function() {
		$(this).hide();
	});

	$.ajaxFileUpload( {
		url :urlElement,
		secureuri :false,
		fileElementId :element,
		dataType :'json',
		success : function(data, status) {
			// set metaId
		if (!empty(data.uploadedImgMetaId)) {
			$("#uploadedImgMetaId").val(data.uploadedImgMetaId);
		}

		// JSON
		var json = $.toJSON(data);
		genericJson(json, status);

		return false;
	},
	error : function(data, status, e) {
		alert(e);
		alert(data.toSource());
		return true;
	}
	});
}

function bindGenericValidation(formId) {

	$(formId).validationEngine( {
		unbindEngine :false,
		success : function() {
			$.formsClassJson.saveAction(sendformOrder);

		},
		failure : function() {
		}
	});

}

//captcha
function regenerateCaptcha(){
	$.ajax({url: '/index/ajaxreloadcaptcha/',type: 'get',
		   success: function (response) {
						$('#captchabox').html(response);
					}
		 });
}


function genericJson(transport, textStatus) {
	if (textStatus == 'success') {
		response = $.evalJSON(transport);
		if (response.error) {
			// form green
			$(".formError.greenPopup").remove();
			$.each(response.errorfield, function() {
				if (this.field == 'captchaCode') {
					regenerateCaptcha();
				}
				fieldId = "#" + this.field
				$.validationEngine.buildPrompt(fieldId, this.txt, "error");

				if (!empty(this.scroll)) {
					var destination = $(".formError").eq(0).offset().top;
					$("html:not(:animated),body:not(:animated)").animate( {scrollTop :destination}, 1100);
				}
				// set time out
					if (!empty(this.timeout)) {
						timeoutval=(this.timeout==true)?'5000':this.timeout;
						setTimeout("$.validationEngine.closePrompt('" + fieldId + "')", timeoutval);
					}

				})
		} else {
			$("input[type=file]").each( function() {
				if (!empty(response.urlSaveFile)) {
					ajaxFileUpload(response.urlSaveFile, $(this).attr("id"));
				}
			});

			if (response.redirection) {
				window.location.href = response.redirection;
			} else {
				// setAjaxValueField
				if (!empty(response.valuefield)) {
					$.each(response.valuefield, function() {
						fieldId = "#" + this.field;
						$(fieldId).val(this.value);
					});
				}

				// setAjaxValueAttribute
				if (!empty(response.valueattribute)) {
					$.each(response.valueattribute, function() {
						// image
							if (this.attribute == 'src') {
								var img = this.value;
								this.value = img.replace(/&amp;/g, "&");
							}
							fieldId = "#" + this.field;
							console.log(fieldId);
							
							$(fieldId).attr(this.attribute, this.value);
						});
				}

				// replace html
				if (!empty(response.htmlvalue)) {
					$.each(response.htmlvalue, function() {
						fieldId = "#" + this.field;
						//$(fieldId).show();
						$(fieldId).html(this.value);
						//var formId = "#" + $(fieldId).find("form").attr("id")
						//bindGenericValidation(formId);
					});
				}

				// setAjaxSuccessField
				if (!empty(response.successfield)) {
					$.each(response.successfield, function() {
						fieldId = "#" + this.field;
						timeout = this.timeout;
						$.validationEngine.buildPrompt(fieldId, this.txt,"pass");
						setTimeout("$.validationEngine.closePrompt('" + fieldId+ "')", timeout);
						
					});
				}
			}
		}
		// callback
		if (!empty(response.callback)) {
			$.each(response.callback, function() {
				//alert(this.cb);
				eval(this.cb);
			});
		}
	}
}

// ajax delete module element

function confirmationDelete(msg, url, callBack) {

	// manage callBack
	callBack = (empty(callBack)) ? 'removeRowList' : callBack;

	// action
	if (confirm(msg)) {
		genericPrototype(url, callBack);
	}
}

// change list option
function changeMultilist(element, url, vdefault) {
	genericPrototype(url, false, false, 'default=' + vdefault + '&id='
			+ $('#' + element).val());
}
