var funcs_Load = new Array();

function integerFormat(numero) {
	numero=numero.toString().replace(/[\D]/g,"");
	return numero;
}
function doubleFormat(numero, decimal) {
	if(decimal == undefined)
		decimal=2;
   numero=numero.toString().replace(/[^,\d]/g,"");
   number_part = numero.split(",");
   if(number_part[1]==undefined)
   		return number_part[0].replace(/\.+$/,"");
   else
   {
		number_part[1] = number_part[1].substring(0,decimal);
		return number_part[0].replace(/\.+$/,"")+","+number_part[1];
	}
}

function getDynamicSelectValues(fieldRif, value, fieldChange, start, type, selectValue, callback) {
	if(!selectValue) selectValue = "";
	var fieldSelect = document.getElementById(fieldRif);
	var fieldSelectChange = document.getElementById(fieldChange);
	$.ajax({
    	url: "/ajax/getDynamicSelectValues.php?type="+type+"&value="+value,
    	type: 'GET',
		timeout: 10000,
		beforeSend: function(){
			var l=fieldSelectChange.length;
			for(var j = (l-1); j>=start; j--) {
				//fieldSelectChange.options[j]=null;
				fieldSelectChange.remove(j);
			}
			fieldSelectChange.options[start] = new Option("...attendere...","");
			$('#'+fieldChange).attr("disabled", true);
		},
		error: function(){
			$('#'+fieldChange).attr("disabled", false);
        	alert('Error loading XML document'+url);
	    },
    	success: function(msg){
			if(msg.indexOf('|' != -1)) {
				var update = msg.split('|');
				//fieldSelectChange.options[start]=null;
				fieldSelectChange.remove(start);
				for(var i=0; i < (update.length-1); i++) {
					var selectField = update[i].split('^');
					var nuovo = new Option(selectField[1],selectField[0]);
					fieldSelectChange.options[fieldSelectChange.length] = nuovo;
					//if(selectValue==selectField[0]) fieldSelectChange.options[(fieldSelectChange.length-1)].selected = true;
				}
				if(selectValue!="" && selectValue!=undefined)
					fieldSelectChange.options[selectValue].selected = true;
				if(callback!=undefined) {
					eval(callback);
				}
			}
			$('#'+fieldChange).attr("disabled", false);
	    }
	});
}

function checkValue(div, type, value, min) {
	if(min==undefined)
		min = 3;
	if(value.length==0) {
		$("#"+div).html('');
	} else if(value.length>=min) {
		$.ajax({
			url: "/ajax/checkvalue.php?type="+type+"&value="+value,
			type: 'GET',
			timeout: 10000,
			error: function(){
				alert('Error loading XML document');
			},
			beforeSend: function(){
				$("#"+div).html('<img src="/img/loading.gif" />');
			},
			success: function(msg){
				$("#"+div).html(msg);
			}
		});
	}
}

function loadContent(url_s, nowaiting, before, success, error) {
	if(nowaiting==undefined) nowaiting = false;
	$.ajax({
    	url: url_s,
    	type: 'GET',
		timeout: 28000,
		beforeSend: function(){
        	if(!nowaiting)
        		waiting();
        	if(before!=undefined) {
				eval(before);
			}
	    },
		error: function(){
        	alert('Error loading HTML document: '+url_s);
			unwaiting();
			if(error!=undefined) {
				eval(error);
			}
	    },
    	success: function(data){
			ajaxSuccess(data);
			if(success!=undefined) {
				eval(success);
			}
	    }
	});
}

function ajaxSuccess(data) {
	if(data.substr(0,13)=='_MULTISCROLL_') {
		var data_scroll = data.substr(13).split("_|_");
		var dataDivs = data_scroll[1].split('$-$');
		var dataDiv = '';
		var dataData = '';
		for(var tmpdiv in dataDivs) {
			dataTmpArr = dataDivs[tmpdiv].split('-|-');
			dataDiv = dataTmpArr[0];
			dataData = dataTmpArr[1];
			if($("#"+dataDiv).length <= 0)
				alert('Div "'+dataDiv+'" non presente');
			else {
				$("#"+dataDiv).html(dataData);
				funcLoad("#"+dataDiv);
			}
		}
		var pos = $("#"+data_scroll[0]).offset();
		$('html, body').animate({scrollTop:pos.top}, 'slow');
		unwaiting();
	} else if(data.substr(0,7)=='_MULTI_') {
		var dataDivs = data.substr(7).split('$-$');
		var dataDiv = '';
		var dataData = '';
		for(var tmpdiv in dataDivs) {
			dataTmpArr = dataDivs[tmpdiv].split('-|-');
			dataDiv = dataTmpArr[0];
			dataData = dataTmpArr[1];
			if($("#"+dataDiv).length <= 0)
				alert('Div "'+dataDiv+'" non presente');
			else {
				$("#"+dataDiv).html(dataData);
				funcLoad("#"+dataDiv);
			}
		}
		unwaiting();
	} else if(data.substr(0,10)=='_REDIRECT_') {
			window.location = data.substr(10);
	} else if(data.indexOf("-|-")!=-1) {
		var dataPos = data.indexOf("-|-");
		var dataDiv = data.substr(0, dataPos);
		var dataData = data.substr(dataPos+3);
		if(dataDiv.length==0 || $("#"+dataDiv).length <= 0)
			alert('Div "'+dataDiv+'" non presente');
		else if(dataData.substr(0,4)=='_OK_') {
			$("#"+dataDiv).html(dataData.substr(4));
			funcLoad("#"+dataDiv);
			var pos = $("#"+dataDiv).offset();
			unwaiting();
		} else if(dataData.substr(0,10)=='_OKSCROLL_') {
			var data_scroll = dataData.substr(10).split("_|_");
			$("#"+dataDiv).html(data_scroll[1]);
			funcLoad("#"+dataDiv);
			var pos = $("#"+data_scroll[0]).offset();
			$('html, body').animate({scrollTop:pos.top}, 'slow');
			unwaiting();
		} else if(dataData.substr(0,7)=='_ERROR_') {
			showErrorDiv(dataDiv);
			$("#"+dataDiv).html(dataData.substr(7));
			unwaiting();
			var pos = $("#"+dataDiv).offset();
			$('html, body').animate({scrollTop:pos.top}, 'slow');
			$('img.WTFormCaptcha').each(function() {
				$(this).attr('src', $(this).attr('src')+'&'+Math.random());
				$(this).parent().next().next().find('input').val('');
			});
		}
		else
			alert(data);
	} else
		alert(data);
}

function MakeAjaxLink(div) {
	$(div+"a").filter(".ajax").click(function(){
	   var ajaxLink = '/_ajax_'+this.href.replace("http://"+window.location.host, "");
	   if($(this).hasClass('notwaiting'))
	   	loadContent(ajaxLink, true);
	   else
	   	loadContent(ajaxLink);
	   return false;
	 })
	.end();
	$(div+"a").not(".ajax").not(".notwaiting").not("[target*=blank]").not("[target*=_blank]").click(function(){
	    waiting();
	})
	$(div+"form").not(".ajax").not(".notwaiting").attr("onsubmit", "waiting();");
}

function MakeAjaxForm(div) {
	var id;
	$(div+"form").filter(".ajax").each(function (i) {
		id = this.id;
		$("#"+id).validate({
			submitHandler: function(form) {
				if($("textarea").is(".tinymce"))
					tinyMCE.triggerSave();
				var ajaxLink = $("#"+form.id).attr("action").replace("/_ajax_", "");
				ajaxLink = '/_ajax_'+ajaxLink.replace("http://"+window.location.host, "");
				$("#"+form.id).attr("action", ajaxLink);
				$("#"+form.id).ajaxSubmit({
					beforeSubmit: function(a,f,o) {
						hideErrorDiv();
						waiting();
					},
					success: function(data) {
						ajaxSuccess(data);
					}
				});
				return false;
			}
		});
		
	});
}

function waiting() {
	;
}

function unwaiting() {
	;
}

function showErrorDiv(div) {
	$("#"+div).show();
}

function hideErrorDiv() {
	;
}

$(document).ready(function(){
	funcLoad();
});

function funcLoad(div) {
	if(div==undefined) div = '';
	else div += ' ';
	for (afunc in funcs_Load) {
		eval(funcs_Load[afunc]+"(div)");
	}
	MakeAjaxLink(div);
	MakeAjaxForm(div);
}

