/* -  (c) 2008 Miguel Gastelumendi

	www.SAtelier.com.br
	2008.07.24 -- 30

*/
	var oRecent, oOlder, oResult;
	var cFormat= '%Y-%m-%d';
	var miliPerDay= 86400000;
	var cLanguage= 'en';
	var cLanguageName= '';

	//---------------------------------------------------------------------
	function _debug( cMsg ){
		if ( false ) alert( cMsg );
	}
	//---------------------------------------------------------------------
	function doCalc(){
		var i= Math.ceil( ( oRecent.date - oOlder.date ) / miliPerDay );
		oResult.value= i;
	}
	//---------------------------------------------------------------------
	function setDate( oVar, dValue ){
		if ( dValue ) { oVar.date= dValue; }
		oVar.date.setHours( 0, 0, 0, 0 );
		oVar.value= oVar.date.print( cFormat );
		doCalc();
	}
	//---------------------------------------------------------------------
	function recentMove( oCalendar ) {
		setDate( oRecent, oCalendar.date );
	}
	//---------------------------------------------------------------------
	function olderMove( oCalendar ) {
		setDate( oOlder, oCalendar.date );
	}
	//---------------------------------------------------------------------
	function loadFile( cFilename, cId ){
		var cParent= 'head';
		var oScript= document.createElement('script');
		var oLast= document.getElementById( cId );

		oScript.setAttribute( 'id', cId );
		oScript.setAttribute( 'type', 'text/javascript' );
		oScript.setAttribute( 'src', cFilename );
		oScript.setAttribute( 'charset', 'utf-8' );
		
		if (( oLast ) && ( oLast.parentNode.tagName.toLowerCase() == cParent ) ){
			document.getElementsByTagName(cParent)[0].replaceChild( oScript, oLast )
			oLast= document.getElementById( cId );
			_debug( 'File replaced: ' + cFilename);
		} else {
			document.getElementsByTagName(cParent)[0].appendChild( oScript );
			_debug( 'File appended: ' + cFilename);
		}

	}
	//---------------------------------------------------------------------
	function prepareLanguage( cLng ){
	
		loadFile( './jsCalc/lang/calendar-' + cLng + '.js', 'file_lng' );
		
	}
	//---------------------------------------------------------------------
	function createCalendars(){

		if ( oRecent.calendar ) { oRecent.calendar.destroy(); _debug( 'Recent Calendar destroyed' );}
		if ( oOlder.calendar ) { oOlder.calendar.destroy(); _debug( 'Older Calendar destroyed' );}

		if ( typeof( Calendar._SDN ) != "undefined") _debug( ' Month: ' + Calendar._MN[0] )
		oRecent.calendar= Calendar.setup(
						{	flat: 'calRecent',
							onSelect: recentMove,
							weekNumbers: false
						}
					);
		_debug( 'Recent Calendar created' );

		oOlder.calendar= Calendar.setup(
						{	flat: 'calOlder',
							onSelect: olderMove,
							weekNumbers: false
						}
					);
		_debug( 'Older Calendar created' );
	}
	//---------------------------------------------------------------------
	function setLabels( cLng ){
		var lbls= new Array( 'lTitle', 'lRecent', 'lOlder', 'lResult', 'dRecent.title:date', 'dOlder.title:date', 'nResult.title:days' );
		var	cText,
			cCell,
			cAtt,
			oName= document.getElementById( '_' + cLng ),
			cObj;

		if ( !( oName ) ){
			alert( 'Ups!, unknown language ' + cLng );
			return;
		}
		cLanguageName= oName.innerHTML;

		cFormat= Calendar._TT['DEF_DATE_FORMAT'];
		for ( var i= 0; i < lbls.length; i++ ){
			var j;
			cObj= lbls[i];
			if ( ( j= cObj.indexOf('.'))  == -1 ){
				cAtt= '.innerHTML';
				cCell= cObj.substr( 1 );
			} else {
				cAtt= cObj.substr( j, cObj.indexOf(':') - j );
				cCell= cObj.substr( cObj.indexOf(':') + 1 );
				cObj= cObj.substr( 0, j );
			}
			cText= document.getElementById( (cLng + '_' + cCell ).toLowerCase() ).innerHTML;
			eval( 'document.getElementById("' + cObj + '")' + cAtt + '= "'  + cText + '"');
		}
		_debug( cLng + ' labels set.' )
	}
	//---------------------------------------------------------------------
	function syncDate( oVar, d ){
		var dTo= ( (d)? d: oVar.date );
		
		oVar.calendar.setDate( dTo );
		oVar.calendar.onSelected( oVar.calendar );
		_debug( oVar.id + ' sync ' + dTo );
	
	}
	
	//---------------------------------------------------------------------
	function setLanguage( o ){
		var cLng= o.id.substr( 1 ).toLowerCase();

//		if ( cLng == cLanguage ) return;  /// see below why is commeted

		prepareLanguage( cLng );
		setLabels( cLng );

		if (( cLng !== cLanguage ) && ( !document.all )){  alert( cLanguageName ); } /*   if not given, Calendar will not refresh the correct language, why ??. mgd 2008.07.30 */

		createCalendars();
		
		syncDate( oRecent );
		syncDate( oOlder );
		
		cLanguage= cLng;

	}
	//---------------------------------------------------------------------
	function initiate(){
		oRecent= document.getElementById( 'dRecent' );
		oOlder=  document.getElementById( 'dOlder' );
		oResult= document.getElementById( 'nResult' );

		setLabels( cLanguage );
		setDate( oRecent, new Date() );
		setDate( oOlder, new Date() );

		doCalc();
		createCalendars();

	}
	//---------------------------------------------------------------------
	// Events
	//---------------------------------------------------------------------
	function doGotoDate( oButton ){
		var oInput= ( oButton.type.toLowerCase == 'text' )? oButton: document.getElementById( 'd' + oButton.id.substring( 1 ) );
		oInput.calendar.parseDate( oInput.value, cFormat );
		oInput.calendar.onSelected( oInput.calendar );
	}
	//---------------------------------------------------------------------
	function doGotoDays(){
		var nDays= parseInt( oResult.value );
		if (!isNaN( nDays ) ){
			var d= new Date( oOlder.calendar.date.getTime() + ( Math.round(nDays) * miliPerDay ) );
			d.setHours( 0, 0, 0, 0 );
			syncDate( oRecent, d );
		}
	}
	//---------------------------------------------------------------------
	function ifEnterGotoDate( e, o ){
		if ( e.keyCode == 13 ){ doGotoDate( o ) };
	}
	//---------------------------------------------------------------------
	function ifEnterGotoDays( e ){
		if ( e.keyCode == 13 ){ doGotoDays() };
	}
	//---------------------------------------------------------------------
	function setAlign( o, cAlign ){
		o.style.textAlign= cAlign;
	}

	//---------------------------------------------------------------------
	// start
	//---------------------------------------------------------------------
	cLanguage= 'en';
	if ( navigator.language ) { cLanguage= navigator.language.substr(0, 2).toLowerCase(); }
	if ( navigator.userLanguage ) { cLanguage= navigator.userLanguage.substr(0, 2).toLowerCase();}

	switch (cLanguage){
		case 'pt':
		case 'br': cLanguage= 'br';break;
		case 'es': cLanguage= 'es';break;
		default: cLanguage= 'en';
	}

	prepareLanguage( cLanguage );
	loadFile( './jsCalc/calendar-setup.js', 'file_cs' );

/* eof */

