
//// CONSTANTS ////

// Tipus de sistema de caché
var CACHE_SYSTEM_NONE			= 0; // No efectua cap modificació de la URL
var CACHE_SYSTEM_RANDOM			= 1; // 
var CACHE_SYSTEM_SERVER			= 2; // SÍ incrementa 'css_timestamp'
var CACHE_SYSTEM_SERVER_READER	= 3; // NO incrementa 'css_timestamp'


//// VARIABLES ////

// Properties de 'CACHE_SYSTEM_SERVER'
var css_now			= null;
var css_timestamp	= null;


////////////////////////////////////////////////////////////////////////////////////////////////

//// URLCached ////

function URLCached(url, type, interval) {
	this.url		= url;
	this.type		= type==null ? CACHE_SYSTEM_NONE : type;
	this.interval	= interval==null ? 5 : interval;
	//alert(this.url+";"+this.type+";"+this.interval);
}

// Obté la URL textual en base al sistema de caché definit.
URLCached.prototype.getURL = function() {
	return this.url + URLCached_getToken(this.url, this.type, this.interval);
}

// GET
URLCached.prototype.getType = function() {
	return this.type;
}

// GET
URLCached.prototype.getInterval = function() {
	return this.interval;
}

//// MÈTODES ////

// Obté el parm cache-token per una URL, en funció del sistema de caché definit.
function URLCached_getToken(url, type, interval) {
	var result = type==CACHE_SYSTEM_NONE ? "" : "&";
	if ( url.indexOf("?")<0 ) { 
		result = "?"; 
	} else 
	if ( url.indexOf("&")<0 ) { 
		result = "&"; 
	}
	switch ( type ) {
		// afegeix un parm 'r' aleatori
		case CACHE_SYSTEM_RANDOM : 
			result += "r=" + Math.round( Math.random() * 999999999999999 );
			break;
		// afegeix un parm 'r' en funció de la data/hora actual 
		case CACHE_SYSTEM_SERVER :				// .. s'incrementa per cada url
		case CACHE_SYSTEM_SERVER_READER :		// .. solament efectua lectura (no incrementa)
			if ( css_now==null ) {
				css_now = new System().getTime(DF_HHmmssyyyyMMdd).split("-");
			}
			if ( css_timestamp==null ) {
				var now_in_seconds = parseInt(css_now[0])*60*60 + parseInt(css_now[1])*60 + parseInt(css_now[2]);
				css_timestamp = Math.floor( now_in_seconds / interval );
			}
			var now_yyyyMMdd = css_now[3];
			var incr = type==CACHE_SYSTEM_SERVER_READER ? 0 : 1;
			css_timestamp = css_timestamp + incr;
			result += "r=" + now_yyyyMMdd + "" + css_timestamp;
			break;
		// no s'afegeix res
		default : 
			break;	
	}
	return result;
}

// Reset.
function URLCached_CacheSystemServer_reset() {
	css_now = null;
	css_timestamp = null;
}

