//*****************************************************************************
// imageRoll.js
//*****************************************************************************


// Funzioni private

/*
TIPI:

1 - normale
2 - doppio

*/

var r_rolls = new Array()
var r_double_rolls = new Array()
var r_double_enabled;
var r_canRun;
var r_defaultStatusText;


function _testBrowser(min_ie, min_nav)
{
	var agent = navigator.userAgent;
	var	minversion;

	if ( agent.indexOf ( "MSIE " ) > 0)
		minversion = min_ie;
	else
		minversion = min_nav;
			
	return ( parseInt( navigator.appVersion.substring(0,1) ) >= minversion );
}

/*
function _registerRoll(item) 
{
  r_rolls[r_rolls.length] = item
  return (r_rolls.length - 1)
}
*/
function _registerRoll(item, type) 
{
	var	result;
	
	if (type == 1) { // normal
		r_rolls[r_rolls.length] = item;
		result = r_rolls.length - 1;
	
	} else if (type == 2) { // double
		r_double_rolls[r_double_rolls.length] = item;
		result = r_double_rolls.length - 1;
	
	} else // invalid type
		result = 0;
		
	return result;
}

/*
function _getRoll(name)
{
	var i;
	var r;

	//alert("getting name="+name+" from "+r_rolls.length);

	for (i = 0; i < r_rolls.length; i++) {
		r = r_rolls[i];
		//alert(i + " " + r_rolls[i].imgname);
		if (r.imgname == name) {
			//alert("idx "+i+" match "+name+ " - returning "+r.imgname);
			return r;
		}
	}
	
	return 0;
}
*/

function _getRoll(name, type)
{
	var i;
	var r;

	//alert("getting name="+name+" from "+r_rolls.length);

	if (type == 1) { // normal

		for (i = 0; i < r_rolls.length; i++) {
			r = r_rolls[i];
			//alert(i + " " + r_rolls[i].imgname);
			if (r.imgname == name) {
				//alert("idx "+i+" match "+name+ " - returning "+r.imgname);
				return r;
			}
		}
	} else if (type == 2) { // double

		for (i = 0; i < r_double_rolls.length; i++) {
			r = r_double_rolls[i];
			//alert(i + " " + r_double_rolls[i].imgname);
			if (r.imgname == name) {
				//alert("idx "+i+" match "+name+ " - returning "+r.imgname);
				return r;
			}
		}
	}
	
	return 0;
}


// Constructors

function _roll(name, srcOff, srcOn, statusText)
{
	this.id = -1;
	this.imgname = name;
			
	//alert ("adding name="+name);

	/*
	this.imageOn = new Image();
	this.imageOn.src = srcOn;

	this.imageOff = new Image();
	this.imageOff.src = srcOff;
	*/
	this.srcOn = srcOn;
	this.srcOff = srcOff;

	this.statusText = statusText;
}

function _double_roll(name, srcOff, srcOn, statusText, dblName, dblsrcOff, dblsrcOn)
{
	this.id = -1;
	this.imgname = name;
			
	//alert ("adding name="+name);

	/*
	this.imageOn = new Image();
	this.imageOn.src = srcOn;

	this.imageOff = new Image();
	this.imageOff.src = srcOff;
	*/
	this.srcOn = srcOn;
	this.srcOff = srcOff;

	this.dblImgName = dblName;
	this.dblsrcOn = dblsrcOn;
	this.dblsrcOff = dblsrcOff;

	this.statusText = statusText;
}


// Funzioni pubbliche


// - normale

function AddRoll(name, srcOff, srcOn, statusText) 
{
	if (r_canRun) {
		var r = new _roll(name, srcOff, srcOn, statusText);
		r.id = _registerRoll(r, 1);
	}
}

function RollEnter(name)
{
	if (r_canRun) {
		var r = _getRoll(name, 1);

		if (r != 0) {
			document.images[name].src =  r.srcOn;
			window.status = r.statusText;
		}
	}
	return true;
}

function RollLeave(name)
{
	if (r_canRun) {
		var r = _getRoll(name, 1);

		if (r != 0) {
			document.images[name].src =  r.srcOff;
			window.status = r_defaultStatusText;
		}
	}
	return true;
}

// - doppio

function AddDoubleRoll(name, srcOff, srcOn, statusText, dblName, dblsrcOff, dblsrcOn) 
{
	if (r_canRun) {
		var r = new _double_roll(name, srcOff, srcOn, statusText, dblName, dblsrcOff, dblsrcOn);
		r.id = _registerRoll(r, 2);
	}
}

function DoubleRollEnter(name)
{
	if (r_canRun) {
		var r = _getRoll(name, 2);

		if (r != 0) {
			document.images[name].src =  r.srcOn;
			if (r_double_enabled)
				document.images[r.dblImgName].src =  r.dblsrcOn;
			window.status = r.statusText;
		}
	}
	return true;
}

function DoubleRollLeave(name)
{
	if (r_canRun) {
		var r = _getRoll(name, 2);

		if (r != 0) {
			document.images[name].src =  r.srcOff;
			if (r_double_enabled)
				document.images[r.dblImgName].src =  r.dblsrcOff;
			window.status = r_defaultStatusText;
		}
	}
	return true;
}

function EnableDoubleRoll() {
	r_double_enabled = true;
}

function DisableDoubleRoll() {
	r_double_enabled = false;
}


// - misc

function SetDefaultStatus(text) {
	r_defaultStatusText = text;
}


// Inizializzazione

r_canRun = _testBrowser(4,3);
r_defaultStatusText = "";
EnableDoubleRoll();