Update data dump
authorclebeaupin
Fri, 16 Apr 2010 11:35:20 +0200
changeset 61 2d663efe5d81
parent 60 71f4ec652fd8
child 62 ca07ccdd09d3
Update data dump
web/thdProject/web/js/uc.utils.js
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/thdProject/web/js/uc.utils.js	Fri Apr 16 11:35:20 2010 +0200
@@ -0,0 +1,173 @@
+var uc = uc || {};
+uc.utils = uc.utils || {};
+
+uc.utils.centeredContainer = function(html_container) {
+	this.html_container = html_container;
+}
+
+uc.utils.centeredContainer.currentContainer = null;
+
+uc.utils.centeredContainer.centerCurrent = function() {
+	// Center popup in the browser window
+	if (uc.utils.centeredContainer.currentContainer == null) return;
+	var jq_container = uc.utils.centeredContainer.currentContainer;
+	var jq_window = jQuery(window);
+	var popup_x = jq_window.scrollLeft() + ((jq_window.width() - jq_container.width()) / 2);
+	var popup_y = jq_window.scrollTop() + ((jq_window.height() - jq_container.height()) / 2);
+	jq_container.css('top', popup_y);
+	jq_container.css('left', popup_x);
+}
+
+uc.utils.centeredContainer.showCurrent = function() {
+	if (uc.utils.centeredContainer.currentContainer == null) return;
+	var jq_container = uc.utils.centeredContainer.currentContainer;
+	var jq_window = jQuery(window);
+	jq_window.bind("resize", uc.utils.centeredContainer.centerCurrent);
+	jq_window.bind("scroll", uc.utils.centeredContainer.centerCurrent);
+	uc.utils.centeredContainer.centerCurrent();
+	jq_container.show();
+}
+
+uc.utils.centeredContainer.hideCurrent = function() {
+	if (uc.utils.centeredContainer.currentContainer == null) return;
+	var jq_container = uc.utils.centeredContainer.currentContainer;
+	var jq_window = jQuery(window);
+	jq_container.hide();
+	jq_container.remove();
+	jq_window.unbind("resize", uc.utils.centeredContainer.centerCurrent);
+	jq_window.unbind("scroll", uc.utils.centeredContainer.centerCurrent);
+}
+
+uc.utils.centeredContainer.prototype = {
+	show: function() {
+		this.hide();
+		var jq_body = jQuery("body");
+		var jq_container = jQuery(this.html_container);
+		jq_container.hide();
+		jq_container.css('position', 'absolute');
+		jq_container.css('display', 'block');
+		jq_body.append(jq_container);
+		uc.utils.centeredContainer.currentContainer = jq_container;
+		uc.utils.centeredContainer.showCurrent();
+	},
+	hide: function() {
+		uc.utils.centeredContainer.hideCurrent();
+	}
+}
+
+uc.utils.showModalWrapper = function() {
+	if (jQuery('#modal-wrapper').length > 0) return false;
+	var jq_body = jQuery("body");
+	var jq_modal_wrapper = jQuery('<div id="modal-wrapper"></div>');
+	jq_modal_wrapper.height(jq_body.height());
+	jq_body.append(jq_modal_wrapper);
+}
+
+uc.utils.hideModalWrapper = function() {
+	jQuery('#modal-wrapper').remove();
+}
+
+uc.utils.showLoader = function() {
+	var loader = new uc.utils.centeredContainer('<img id="loader" src="/images/pictos/loader.gif" />')
+	loader.show();
+}
+
+uc.utils.hideLoader = function() {
+	jQuery('#loader').remove();
+}
+
+uc.utils.executeServerJS = function(http_url, http_data, http_method, complete_callback, history) {
+	if (http_method == null) http_method = 'GET';
+	if (history == null) history = false;
+	
+	var ajax_callback = function() {
+		if (complete_callback != null) complete_callback();
+		
+		if (history) {
+			var base_url = document.location.href.split('#')[0];
+			var path_url = document.location.pathname;
+			
+			if (http_url.indexOf(path_url) == 0) {
+				document.location.href = base_url + '#ajax/' + http_url.slice(path_url.length+1);
+			}
+		}
+		
+		if (http_method == 'GET') {
+			try {
+				pageTracker._trackPageview(http_url);
+			} catch(e) {}
+		}
+	}
+	
+	if (http_method == 'POST') uc.utils.showModalWrapper();
+	uc.utils.showLoader();
+
+	jQuery.ajax({
+		url: http_url,
+		type: http_method,
+		data: http_data,
+		beforeSend: function(xhr) {xhr.setRequestHeader("Accept", "application/javascript");},
+		complete: function (XMLHttpRequest, textStatus) {uc.utils.hideLoader(); ajax_callback();},
+		success: function (data, textStatus) {},
+		dataType: "script"
+	});
+}
+
+uc.utils.ajaxifyLink = function(jq_selector, http_method, complete_callback, history) {
+	jq_selector.removeClass('ajax').removeClass('ajax-post');
+	jq_selector.parents('.ajax').removeClass('ajax').removeClass('ajax-post');
+	jq_selector.each(function () {
+		var jq_this = jQuery(this);
+		var ajax_url = jq_this.attr('href');
+		if (ajax_url.indexOf('javascript:') == 0) return false;
+		jq_this.attr('href', 'javascript:void(0);');
+		jq_this.removeClass('ajax');
+		jq_this.click(function() {
+			uc.common.ajaxHistoryUpdate = true;
+			uc.utils.executeServerJS(ajax_url, {}, http_method, complete_callback, history);
+			return false;
+		});
+	});
+}
+
+uc.utils.ajaxifyForm = function(jq_selector, complete_callback) {
+	jq_selector.removeClass('ajax');
+	
+	jq_selector.submit(function() {
+		var jq_this = jQuery(this);
+		var ajax_url = jq_this.attr('action');
+		var ajax_data = {};
+
+		// Extract data of form
+		jQuery('textarea, input:text,  input:password, input:hidden, select, input:checked, input:selected', jq_this).each(function () {
+			var jq_input = jQuery(this);
+			ajax_data[jq_input.attr('name')] = jq_input.val();
+		});
+
+		uc.utils.executeServerJS(ajax_url, ajax_data, 'POST', complete_callback);
+
+		// Do not process normal http request
+		return false;
+	});
+}
+
+uc.utils.buildSelectList = function(jq_selector) {
+	// Wait 1 second to make sure css is loaded
+	window.setTimeout(function() {
+		jq_selector.each(function() {
+			var jq_select = jQuery(this);
+
+			// Check for an existing selectedItem
+			var jq_selected_item = jQuery('li.selected', jq_select);
+			if (jq_selected_item.length == 1) {
+				// Scroll to this item
+				var top = jq_selected_item.position().top;
+				if (top > 200) jq_select.scrollTop(top-200);
+			}
+
+			jQuery('li a', jq_select).click(function() {
+				jQuery('li.selected', jq_select).toggleClass('selected');
+				jQuery(this).parents('li').toggleClass('selected');
+			});
+		});}, 1000);
+}
\ No newline at end of file