
vlcJS = {	
	//submitLock: "free", 	
		
	postJSON : function(url, data, errorDivName, tabsName, tabIndex, dataContainer, functionEnd, buttonDivs) {
		/*if(vlcJS.submitLock != "free") {
			return;
		}
		vlcJS.submitLock = "inuse";*/
		if(buttonDivs) {
			vlcJS.disableButtons(buttonDivs);
		}
		var bodyContent = jQuery.ajax( {
			url : url,
			global : false,
			type : "POST",
			data : data,
			dataType : "json",
			success : function(msg) {

				 /*alert("success::msg.data::"+msg.data);*/ 
				if (msg.status == "error") {
					jQuery("#" + errorDivName).html(msg.errors);
				}
				if (msg.status == "success") {
					if (tabIndex != -1) {
						/* this.next1(tabsName,tabIndex); */
						jQuery('#' + tabsName).tabs('enable', tabIndex);
						jQuery('#' + tabsName).tabs('select', tabIndex);
					}
					if (dataContainer != null) {
						jQuery('#' + dataContainer).attr("value", msg.data);
					}

					if (functionEnd != 'undefined'
							&& (typeof functionEnd == 'function')) {
						functionEnd(msg.data);
					}
				}
				if(buttonDivs) {
					vlcJS.enableButtons(buttonDivs);
				}
				//vlcJS.submitLock = "free";
			},
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				this;
				if(buttonDivs) {
					vlcJS.enableButtons(buttonDivs);
				}
				//vlcJS.submitLock = "free";
				if(textStatus != 'parsererror') {
					alert("postJSON textStatus::" + textStatus);
					alert("errorThrown::" + errorThrown);
					alert("text::" + XMLHttpRequest.responseText);
				} else {
					//response redirected to unknown error page which is unparsable for json.
					jQuery("#" + errorDivName).html("<ul><li>An unknown error occurred while processing data</li></ul>");
				}
			}

		});
	},
	
	next : function(tabsName, tabIndex) {
		jQuery('#'+tabsName).tabs('select', tabIndex); 
	},
	
	refreshTab : function(tabsName, tabIndex) {
		jQuery('#'+tabsName).tabs('load', tabIndex); 
	},
	
	loadPage : function(url, data, divName, errorDivName) {
		jQuery.ajax( {
			url : url,
			data : data,
			cache : false,
			success : function(html) {
				jQuery("#" + divName).html(html);
			},
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				this;
				if(XMLHttpRequest.status != 0) {
					alert("textStatus::" + textStatus + "\nurl::" + url + "\ndata::" + data + "\nstatusCode::" + XMLHttpRequest.status);
					alert("errorThrown::" + errorThrown);
					alert("text::" + XMLHttpRequest.responseText);
				}
			}
		});
	},
	
	successFunction:function() {},
	
	errorFunction:function() {},
	
	submit : function(formName, errorDivName, tabsContainerName, tabIndex, dataContainer, functionEnd, data, buttonDivs) {
		var form = jQuery("#" + formName);
		var queryString = form.serialize() + "&" + data;
		var url = form.attr('action');
		this.postJSON(url, queryString, errorDivName, tabsContainerName, tabIndex, dataContainer, functionEnd, buttonDivs);
	},
	
	clearContainer : function(containerDivName) {
	    jQuery('#'+containerDivName).html('');                    
	},
	
	disableButtons: function(targetElements) {
		for(var i = 0; i < targetElements.length; i++) {
			context = jQuery("#" + targetElements[i]);
			jQuery("input[type='button']", context).each(
				function() {
					this.disabled='disabled';
				}
			);
		}
	},
	
	enableButtons: function(targetElements) {
		for(var i = 0; i < targetElements.length; i++) {
			context = jQuery("#" + targetElements[i]);
			jQuery("input[type='button']", context).each(
				function() {
					this.disabled='';
				}
			);
		}
	}
};
