/*
 *	MxToggleImage - Implements image toggling
 *	Author: Dmitry Rakovitsky
 */
 
// MxToggleImage - inherits from MxDHTML
function MxToggleImage(id, state, onNeutralImg, onSelectedImg, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback) {
	if (arguments.length > 0) {
		this.init(id, state, onNeutralImg, onSelectedImg, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback);
	}
}
MxToggleImage.prototype = new MxDHTML();
MxToggleImage.superclass = MxDHTML.prototype;

// MxToggleImage method: init - object initialization
MxToggleImage.prototype.init = function( id, state, onNeutralImg, onSelectedImg, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback ) {
	MxToggleImage.superclass.init.call( this, false );
	
	
	this.objId = id;
	this.id = id + "_elemId";
	this.state = this.STATE_NEUTRAL;
	if (state != null && state != '')
		this.state = state;

	if ( (onNeutralImg == null || onNeutralImg == '') || (onSelectedImg == null || onSelectedImg == '') )
		mxError("MxToggleImage:init - invalid arguments!");
		
	this.onNeutralImg = onNeutralImg;
	this.onSelectedImg = onSelectedImg;
	
	this.onNeutralTitle = '';
	this.onSelectedTitle = '';
	if (onNeutralTitle != null && onNeutralTitle != '')
		this.onNeutralTitle = onNeutralTitle;
	if (onSelectedTitle != null && onSelectedTitle != '')
		this.onSelectedTitle = onSelectedTitle;		
		
	this.onNeutralCallback = onNeutralCallback;
	this.onSelectedCallback = onSelectedCallback;
}

// MxToggleImage method: getHTML - returns the inner HTML for a MxToggleImage object as string
MxToggleImage.prototype.getHTML = function() {
	var onClick = this.objId + ".toggleState();";

	var title="";
	var html = "<img src='" + this.getImageUrl() + "/";
	if (this.state ==  this.STATE_NEUTRAL) {
		html += this.onNeutralImg;
		title = this.onNeutralTitle;
	} else {
		html += this.onSelectedImg;
		title = this.onSelectedTitle;
	}	

	html += "' id=" + this.id;		
	html += " title='" + title + "' border='0' onClick='" + onClick + "'/>";

	return html;	
}
	
// MxToggleImage method: toggleClick -  toggles the image with every click
MxToggleImage.prototype.toggleState = function()
{
	if (this.state == this.STATE_NEUTRAL) 
		this.setState(this.STATE_SELECTED);
	else
		this.setState(this.STATE_NEUTRAL);
}	
	
	
// MxToggleImage method: stateNeutral - implements option's "neutral" or "default" state
MxToggleImage.prototype.stateNeutral = function() {
	var element = document.getElementById(this.id);
	element.src = this.getImageUrl() + "/" + this.onNeutralImg;
	if (this.onNeutralTitle != null && this.onNeutralTitle != '')
		element.title = this.onNeutralTitle;

	if (this.onNeutralCallback) {
		eval(this.onNeutralCallback);
	}

}


// MxToggleImage method: stateSelected - implements option's "selected" state
MxToggleImage.prototype.stateSelected = function() {
	var element = document.getElementById(this.id);
	element.src = this.getImageUrl() + "/" + this.onSelectedImg;
	if (this.onSelectedTitle != null && this.onSelectedTitle != '')
		element.title = this.onSelectedTitle;

	if (this.onSelectedCallback) {
		eval(this.onSelectedCallback);
	}
	
}	




/*
 *	MxToggleLink - Implements link toggling
 *	Author: Dmitry Rakovitsky
 */
 
// MxToggleLink - inherits from MxDHTML
function MxToggleLink(id, state, onNeutralText, onSelectedText, onNeutralStyle, onSelectedStyle, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback) {
	this.init(id, state, onNeutralText, onSelectedText, onNeutralStyle, onSelectedStyle, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback);
}
MxToggleLink.prototype = new MxDHTML();
MxToggleLink.superclass = MxDHTML.prototype;

// MxToggleImage method: init - object initialization
MxToggleLink.prototype.init = function( id, state, onNeutralText, onSelectedText, onNeutralStyleClass, onSelectedStyleClass, onNeutralTitle, onSelectedTitle, onNeutralCallback, onSelectedCallback ) {
	MxToggleLink.superclass.init.call( this, false );
	
	this.objId = id;
	this.id = id + "_elemId";
	this.state = this.STATE_NEUTRAL;
	if (state != null && state != '')
		this.state = state;

	if ( (onNeutralText == null || onNeutralText == '') || (onSelectedText == null || onSelectedText == '') )
		mxError("MxToggleLink:init - invalid arguments!");

	this.toggleStateNeutral = true;

	this.onNeutralText = onNeutralText;
	this.onSelectedText = onSelectedText;

	this.onNeutralStyleClass = onNeutralStyleClass;
	this.onSelectedStyleClass = onSelectedStyleClass;

	this.onNeutralTitle = '';
	this.onSelectedTitle = '';
	if (onNeutralTitle != null && onNeutralTitle != '')
		this.onNeutralTitle = onNeutralTitle;
	if (onSelectedTitle != null && onSelectedTitle != '')
		this.onSelectedTitle = onSelectedTitle;		

	this.onNeutralCallback = onNeutralCallback;
	this.onSelectedCallback = onSelectedCallback;
}

// MxToggleLink method: getHTML - returns the inner HTML for a MxToggleLink object as string
MxToggleLink.prototype.getHTML = function() {
	var onClick = this.objId + ".toggleState();";

	var title="";
	var styleClass="";
	var text="";
		
	if (this.state ==  this.STATE_NEUTRAL) {
		title = this.onNeutralTitle;
		styleClass = this.onNeutralStyleClass;
		text = this.onNeutralText;				
	} else {
		title = this.onSelectedTitle;
		styleClass = this.onSelectedStyleClass;
		text = this.onSelectedText;				
	}	

	var html = "<a href='javascript:" + onClick;
	if (styleClass != '')
		html += "' class='" + styleClass;

	if (title != '')
		html += "' title='" + title;
	
	html += "' id=" + this.id + ">";		
	html += text + "</a>";

	return html;	
}

// MxToggleLink method: toggleOff -  sets a value to enable toggle or not
MxToggleLink.prototype.toggleStateNeutralOn = function(value)
{
	this.toggleStateNeutral = value;
}	

// MxToggleLink method: toggleClick -  toggles the image with every click
MxToggleLink.prototype.toggleState = function()
{

	if (this.state == this.STATE_NEUTRAL) {
		this.setState(this.STATE_SELECTED);
	} else {
		if (!this.toggleStateNeutral)
			return;
		this.setState(this.STATE_NEUTRAL);
	}
}	
	
	
// MxToggleLink method: stateNeutral - implements option's "neutral" or "default" state
MxToggleLink.prototype.stateNeutral = function() {
	if (this.onNeutralCallback)
		eval(this.onNeutralCallback);
	
	var element = document.getElementById(this.id);
	if (element != null) {
		element.innerHTML = this.onNeutralText;	
		element.className = this.onNeutralStyleClass;
		
		if (this.onNeutralTitle != null && this.onNeutralTitle != '')
			element.title = this.onNeutralTitle;		
	}	

	
}


// MxToggleLink method: stateSelected - implements option's "selected" state
MxToggleLink.prototype.stateSelected = function() {
	if (this.onSelectedCallback)
		eval(this.onSelectedCallback);

	var element = document.getElementById(this.id);
	if (element != null) {
		element.innerHTML = this.onSelectedText;
		element.className = this.onSelectedStyleClass;
		
		if (this.onSelectedTitle != null && this.onSelectedTitle != '')
			element.title = this.onSelectedTitle;
	}
	
	
}	
