// Create the namespace
if( !window.com ) {
	/**
	 * @ignore
	 **/
	window.com = new Object();
}
if( !com.jitjat ) {
	/**
	 * @ignore
	 **/
	 com.jitjat = new Object();
}

/**
 * Robust Image Rollover Class
 * <p>Example:</p>
 * 
 * <pre><code>
 * &lt;script language="javascript" type="text/javascript"&gt;
 *   var ro = new com.jitjat.RollOvers();
 *   ro.addPreloader( function() {
 *      this.addRollover( "home", ["over","down"],"/images/nav/primary/",".gif","-",true);
 *      this.preloaded = true;
 *   });
 *
 * &lt;/script&gt;
 * &lt;a href="/" 
 *     onmouseover="return ro.swapImage('home', 'over');"
 *     onmouseout="return ro.swapImage('home', 'normal');"
 *     onmousedown="return ro.swapImage('home', 'down');"
 *     onmouseup="return ro.swapImage('home', 'over');"&gt;&lt;img id="home" src="/images/nav/primary/home.gif" /&gt;&lt;/a&gt;
 * </code></pre>
 *
 *
 * @constructor
 * @author Gregory Ramsperger <gregory-at-jitjat.com>
 **/
com.jitjat.RollOvers = function() {}

/**
 * Preload state: true if the images represented in this rollover set have been preloaded
 * <p>Instances must set this to true.</p>
 * @type boolean
 */
com.jitjat.RollOvers.prototype.preloaded = false;

/**
 * Create a "normal" state by default.
 * @type boolean
 */
com.jitjat.RollOvers.prototype.createNormalState = false;

/**
 * All rollovers created by this set.
 * @private
 * @type Array
 */
com.jitjat.RollOvers.prototype.rollovers = new Object();

/**
 * Preload the image.
 * @private
 * @param url <dfn>String</dfn> the URL of the image to be loaded
 * @type Image
 * @return The <code>Image</code> loaded from the given URL
 **/
com.jitjat.RollOvers.prototype.createImage = function( uri ) {
	var img = new Image();
	img.src = uri;
	return img;
}

/**
 * Swap the given image.
 * @param id <dfn>string</dfn> the unique ID of the image to be swapped
 * @param newState <dfn>string</dfn> the new state of the image.
 * @type boolean
 * @return <code>true</code>
 **/
com.jitjat.RollOvers.prototype.swapImage = function( id, newState ) {
	if( document.images && this.preloaded && this.rollovers[id] ) {
		if( newState == null && this.defaultStates[id] ) newState = this.defaultStates[id];
		if( newState == null ) return true;

		if( this.rollovers[id][newState] ) {
			// use getElementByID instead of document.images[id] to allow for <input type="image" />
			var ele = document.getElementById(id);
			if( ele && ele.src )
				ele.src = this.rollovers[id][newState].src;
		}
	}
	return true;
}

/**
 * Add images and their rollover states to the set using the IDs as the base file name.
 * <p>Images are loaded using the following naming convention:</p>
 * <p><code><var>urlPrefix</var> + <var>id</var> + <var>stateDelimiter</var> + <var>state</var> + <var>urlSuffix</var></code></p>
 *
 * @param ids <dfn>string or string[]</dfn> The unique id or ids of the images for which to create rollovers.
 * @param states <dfn>string or string[]</dfn> The rollover state or states to create for each image.
 * @param urlPrefix <dfn>string</dfn> The prefix to prepend to each id when creating the rollovers.
 * @param urlSuffix <dfn>string</dfn> The prefix to append to each id when creating the rollovers.
 * @param stateDelimiter <dfn>string</dfn> The character(s) to place between the id and state name when creating rollover images.
 * @param createNormalState <dfn>boolean</dfn> Create a "normal" state for the rollovers. If <code>null</code> or omitted, the RollOvers instance's createNormalState value will be used.
 * @type Void
 **/
com.jitjat.RollOvers.prototype.addRollover = function( ids, states, urlPrefix, urlSuffix, stateDelimiter, createNormalState ) {
	if( typeof ids == "string" ) ids = [ids];
	if( typeof states == "string" ) states = [states];

	if( typeof createNormalState != "boolean" ) createNormalState = this.createNormalState;

	for( var i=0; i<ids.length; i++ ) {
		this.rollovers[ids[i]] = new Object();

		if( createNormalState ) this.rollovers[ids[i]].normal = this.createImage( urlPrefix + ids[i] + urlSuffix );

		for( var j=0; j<states.length; j++ ) {
			this.rollovers[ids[i]][states[j]] = this.createImage( urlPrefix + ids[i] + stateDelimiter + states[j] + urlSuffix );
		}
	}
}

/**
 * Add images and their rollover states to the set.
 * <p>Images are loaded using the following naming convention:</p>
 * <p><code><var>urlPrefix</var> + <var>stateDelimiter</var> + <var>state</var> + <var>urlSuffix</var></code></p>
 *
 * @param uniqueRoId <dfn>string</dfn> The unique id of this set of rollovers. <var>uniqueRoId</var> does need to not match the unique id of the image.
 * @param states <dfn>string or string[]</dfn> The rollover state or states to create for each image.
 * @param urlPrefix <dfn>string</dfn> The prefix to prepend to each id when creating the rollovers.
 * @param urlSuffix <dfn>string</dfn> The prefix to append to each id when creating the rollovers.
 * @param stateDelimiter <dfn>string</dfn> The character(s) to place between the id and state name when creating rollover images.
 * @param createNormalState <dfn>boolean</dfn> Create a "normal" state for the rollovers. If <code>null</code> or omitted, the RollOvers instance's createNormalState value will be used.
 * @type Void
 **/
com.jitjat.RollOvers.prototype.addGenericRollover = function( uniqueRoId, states, urlPrefix, urlSuffix, stateDelimiter, createNormalState ) {
	if( typeof states == "string" ) states = [states];

	if( createNormalState != true && createNormalState != false ) createNormalState = this.createNormalState;

	this.rollovers[uniqueRoId] = new Object();

	if( createNormalState ) this.rollovers[uniqueRoId].normal = this.createImage( urlPrefix + urlSuffix );

	for( var j=0; j<states.length; j++ ) {
		this.rollovers[uniqueRoId][states[j]] = this.createImage( urlPrefix + stateDelimiter + states[j] + urlSuffix );
	}
}

/**
 * Swap the given generic image.
 * @param id <dfn>string, image, image form input</dfn> the unique ID of the image to be swapped
 * @param uniqueRoId <dfn>string</dfn> the unique ID of the generic rollover
 * @param newState <dfn>string</dfn> the new state of the image.
 * @type boolean
 * @return <code>true</code>
 **/
com.jitjat.RollOvers.prototype.swapGenericImage = function( id, uniqueRoId, newState ) {
	if( document.images && this.preloaded && this.rollovers[uniqueRoId] ) {
		if( newState == null && this.defaultStates[uniqueRoId] ) newState = this.defaultStates[uniqueRoId];
		if( newState == null ) return true;

		if( this.rollovers[uniqueRoId][newState] ) {
			var ele;
			if( id.nodeName ) {
				if( id.nodeName.toLowerCase() == "img" || id.nodeName.toLowerCase() == "input" )
					ele = id;
			}
			else {
				ele = document.getElementById(id);
			}

			if( ele && ele.src )
				ele.src = this.rollovers[uniqueRoId][newState].src;
		}
	}
	return true;
}

/**
 * Add images and their rollover states by name-src pairs
 * <p>Example:</p>
 * <p><code>var ro = new com.jitjat.RollOvers();<br />ro.addSimpleRollover( "myImg", {normal:"/img/src.jpg", over:"/img/src-over.jpg"} );</code></p>
 * 
 * @param uniqueRoId <dfn>string</dfn> the unique ID of the rollover
 * @param stateMap <dfn>object</dfn> an associative array of state to image source mappings.
 **/
com.jitjat.RollOvers.prototype.addSimpleRollover = function( uniqueRoId, stateMap ) {
	this.rollovers[uniqueRoId] = new Object();

	for( state in stateMap ) {
		if( typeof stateMap[state] == "string" )
			this.rollovers[uniqueRoId][state] = this.createImage( stateMap[state] );
	}
}

/**
 * Swap the given simple image.
 * @param id <dfn>string, image, image form input</dfn> the unique ID of the image to be swapped
 * @param uniqueRoId <dfn>string</dfn> the unique ID of the generic rollover
 * @param newState <dfn>string</dfn> the new state of the image.
 * @type boolean
 * @return <code>true</code>
 **/
com.jitjat.RollOvers.prototype.swapSimpleImage = function( id, uniqueRoId, newState ) {
	return this.swapGenericImage( id, uniqueRoId, newState );
/*
	if( document.images && this.preloaded && this.rollovers[uniqueRoId] ) {
		if( newState == null && this.defaultStates[uniqueRoId] ) newState = this.defaultStates[uniqueRoId];
		if( newState == null ) return true;

		if( this.rollovers[uniqueRoId][newState] ) {
			var ele = (id.nodeName.toLowerCase() == "img" || id.nodeName.toLowerCase() == "input") ? id : document.getElementById(id);
			if( ele && ele.src )
				ele.src = this.rollovers[uniqueRoId][newState].src;
		}
	}
	return true;
*/
}


/**
 * Default states for rollovers.
 * @private
 * @type Array
 **/
com.jitjat.RollOvers.prototype.defaultStates = new Object();

/** 
 * Set a default date for a rollover ID.
 * @param id <dfn>string</dfn> image id or generic rollover id.
 * @param state <dfn>string</dfn> the new default state of the rollover.
 * @return Void
 **/
com.jitjat.RollOvers.prototype.setDefaultState = function( id, state ) {
	if( id == null || id == "" ) return;
	
	if( typeof id == "string" ) id = [id];

	for( var i=0; i<id.length; i++ ) {
		if( state == null || state == "" ) delete this.defaultStates[id[i]];
		else this.defaultStates[id[i]] = state;
	}
}

/**
 * Preload the rollovers.
 * <p>Call the functions added via the <code>addPreloader( funcRef:Function )</code> method.
 **/
com.jitjat.RollOvers.prototype.preload = function() {
	for( var i=0; i<this.preloaders.length; i++ ) {
		this.preloaders[i].apply(this);
	}
	this.preloaded = true;
}

/**
 * An array of functions preload information.
 * @private
 * @type Array
 **/
com.jitjat.RollOvers.prototype.preloaders = new Array();

/**
 * Add a preloader function.
 * <p>Functions will be called via the Function.apply method. "<code>this</code>" will refer to this RollOvers instance.</p>
 **/
com.jitjat.RollOvers.prototype.addPreloader = function( funcRef ) {
	if( typeof funcRef == "function" )
		this.preloaders[this.preloaders.length] = funcRef;
}

function launchAudio(file) {
audioWindow = window.open (file,'audio','height=150,width=250,scrollbars=0,resizeable=0,toolbar=0,location=0');
 }
 
function win(url)

{
window.open(url, "remote",
"height=600,width=750,scrollbars,resizable,location,left=200,top=100")

}


function cantor_win(url)

{
window.open(url, "remote",
"height=700,width=750,scrollbars,resizable,location=0, left=200,top=50, status=0")

}
