var loader = '<div id="loader"><img src="/img/loading.gif" align="middle" /> Elaborazione in corso...</div>';
var localDivs = 'Hello world';
var debug = false;
var activeButton = null;
var div_name = null;
var form_name;
var editor_id = null;
var company_data = new Array();
var contact_data = new Array();
var working_divs = new Array();
var lookup_fallback_function = new Array();
var safe_form_name = null;
var loaded = false;

function load_box( url, panel, msg ) {
	e = document.getElementById( panel );
	
	if ( msg != null ) {
		msg = loader + msg;
	} else {
		msg = loader;
	}

	if ( e != null ) {
		new Ajax.Updater(
			panel,
			url,
			{
				method:		"GET",
				evalScripts: true,
				onLoading:	function(){ e.innerHTML = msg; dropLoader(); }
			}
		);
	}
}

function send_form( fN, divN, url ) {
	dati = $( fN ).serialize();
	e = document.getElementById( divN );
	
	showLoader();
	
	new Ajax.Updater( divN, url, {
		method:			"POST",
		evalScripts:	true,
		onLoaded:		divHide( "helperdiv" ),
		postBody:		dati
	});
}

function div_sendForm( el ) {
	if ( working_divs[ el ] == null ) { alert( "Matrice [working_divs] non inzializzata. Operazione annullata" ); return false; } 
	arr = working_divs[ el ];

	if ( arr[ "divname" ] == null ) { alert( "[divname] Non definito - operazione annullata" ); return false; }
	divN = arr[ "divname" ];
	
	if ( arr[ "formname" ] == null ) { alert( "[formname] Non definito - operazione annullata" ); return false; }
	fN = arr[ "formname" ];

	if ( arr[ "url" ] == null ) { alert( "[url] Non definito - operazione annullata" ); return false; }
	url = arr[ "url" ];
	
	send_form( fN, divN, url ); 
}

function div_loadWorker( el, url, msg ) {
	if ( working_divs[ el ] == null ) { alert( "Matrice [working_divs] non inzializzata. Operazione annullata" ); return false; } 
	arr = working_divs[ el ];

	if ( arr[ "divname" ] == null ) { alert( "[divname] Non definito - operazione annullata" ); return false; }
	divN = arr[ "divname" ];
	load_box( url, divN, msg );
	
	if ( arr[ "anchor" ] != null ) { anchor = "#" + arr[ "anchor" ]; window.location = anchor; }
	return true;
}

function HideMessageDiv() {
	divN = document.getElementById( "message" );
	divN.style.visibility = "hidden";
	divN.style.display = "none";
}

function toggleDivDisplay( divN ) {
	e = document.getElementById( divN );
	if ( e.style.visibility == "hidden" ) {
		divShow( divN );
	} else {
		divHide( divN );
	}
	
	e = null;
	return true;
}

function showLoader() {
	e = document.getElementById( "helperdiv" );
	e.innerHTML = loader;
	divShow( "helperdiv" );
	dropLoader();
}

function divHide( divN ) {
	e = document.getElementById( divN );
	e.style.visibility = "hidden";
	e.style.display = "none";
	return true;
}

function divShow( divN ) {
	if ( debug == true ) alert( "Going to show " + divN );
	e = document.getElementById( divN );
	e.style.visibility = "visible";
	e.style.display = "block";
	return true;
}

function dropShadow() {
	divShow( "overlay" );
	new Effect.Appear( overlay, { duration: 0.5,  to: 0.8 } );
}
	
function loadDialog( dUrl ) {
	dPanel = "dialogBox";
	dropShadow();
	divShow( dPanel );
	load_box( dUrl, dPanel );
}

function initDialogBox() {
	container = document.body;
	this.container = $(container);
	this.overlay = $('overlay');
	this.dialog = $('dialogBox');
	Event.observe( this.overlay, 'click', function(event) { unloadDialog() } );
	Event.observe( this.dialog, 'click',  function(event) { event.stop() } );
}

function unloadDialog() {
	document.getElementById( "dialogBox" ).innerHTML = "";
	divHide( "dialogBox" );
	divHide( "overlay" );
}

function fixDialogBox() {
	if ( $(document.viewport).getHeight() < $("dialogBox").getHeight() ) {
		var nHeight = $(document.viewport).getHeight() - 32;
		$( "dialogBox" ).setStyle( { height: nHeight } );
	}
	
	var nTop = Math.round( ( $(document.viewport).getHeight() - $("dialogBox").getHeight() ) / 2 );
	$( "dialogBox" ).setStyle( { top: nTop } );
}

function dropLoader() {
	var nLeft = Math.round( ( $(document.viewport).getWidth() - $("loader").getWidth() - 32 ) );
	var nTop = Math.round( ( $(document.viewport).getHeight() - $("loader").getHeight() ) - 32 );
	$("loader").setStyle( { top: nTop, left: nLeft } );
}

function hideDivs() {
	i = 0;
	while ( i < localDivs.length ) {
		e = document.getElementById( localDivs[ i ] );
		if ( e != null ) {
			e.style.visibility = "hidden";
			e.style.display = "none";
		}
		
		i++;
	}
}

function lookup_company( fN ) {
	dati = $( fN ).serialize();
	e = document.getElementById( div_name );
	
	if ( loader != '' ) {
		loader = '<center>' + loader + '</center>';
	} else {
		loader = '';
	}
	
	new Ajax.Updater( div_name, url, {
		method:			"POST",
		evalScripts:	true,
		onLoading:		e.innerHTML = loader,
		postBody:		dati
	});
}

function dialog_companyLookup() {
	url = '/load.php?application=knock&function=company&sub=companylookup';
	loadDialog( url );
}

function dialog_addContact() {
	if ( company_data[ "ID_company" ] == null ) {
		alert( "Selezionare un'azienda prima di procedere" );
		return false;
	}
	url = '/load.php?application=knock&function=company&sub=addcontact';
	url = url + '&ID_company=' + company_data[ "ID_company" ];
	loadDialog( url );
}

function select_company() {
	alert( form_name );
}

function saveEditorAndStay() {
	document.forms[ form_name ].elements[ editor_name ].value = tinyMCE.get( editor_id ).getContent();
	send_form( form_name, worker_div, editor_action_url );
}

function saveEditor() {
	saveEditorAndStay();
	tinyMCE.execCommand( "mceRemoveControl", false, editor_id );
}

function hideLoader() {
}

function dropDownHeight( ddName, refId ) {
	$( ddName ).setStyle( { height: 320 } );
	alert( $( refId ).getHeight() );
}

function dropDownUnload( ddName ) {
	if ( $( ddName ).visible() == true ) {
		Effect.SlideUp( ddName, { duration: 0.5, scaleFrom: 100, scaleTo: 0 } );
	}
}

function dropDownLoad( ddName, url ) {
	loaded = false;
	dropDownUnload( ddName );
	
	setTimeout( function() {
		new Ajax.Updater(
			ddName,
			url,
			{
				method:			"GET",
				evalScripts: 	true,
				onLoading:		showLoader(),
				onComplete:		function() {
					loaded = true;
					hideLoader();
					Effect.SlideDown( ddName, { duration: 1, scaleFrom: 0, scaleTo: 100 } );
				}
			}
		);
	}, 550 );
}


