﻿function SwapImage(elem, imgFile)
{
	var tempImg = new Image();
	tempImg.src = imgFile;
	elem.src = tempImg.src;
}

function SwapImageById(id, imgFile)
{
	var elem = document.getElementById(id);
	
	if (elem != null)
	{
		var tempImg = new Image();
		tempImg.src = imgFile;
		elem.src = tempImg.src;
	}
}

function PreloadImage()
{

	var preload;
	var args = PreloadImage.arguments;
	var i = 0;
	
	for (i = 0; i < args.length; i++)
	{
		preload = new Image();
		preload.src = args[i];
	}
}

function GoPage(url)
{
	window.location.href = url;
}

// Multi-Click timeout
var SMC_page_busy = false;
var SMC_page_TimeOutValue = 0;

function SupressMultiClick( timeout ) {
	var nTimeout;
	
	if (timeout == null) {
		nTimeout = 5000;
	}
	else {
		nTimeout = timeout;
	}
	
	if( false == SMC_page_busy ) {
		SMC_page_busy = true;
		SMC_page_TimeOutValue = window.setTimeout( "ClearMultiClickTimeout()", nTimeout );
		return true;
	}
	else {
		return false;
	}
}

function ClearMultiClickTimeout() {
	SMC_page_busy = false;
	clearTimeout( SMC_page_TimeOutValue );
}


var enterHandled = false;
// handle [enter] keypress - submit form by sending click command to appropriate button
function HandleEnter( e, elm )
{
	e = e || window.event;
	
	if( ( e.which && e.which == 13 ) || ( e.keyCode && e.keyCode == 13 ) )	// [enter] keypress?
	{
		if( !enterHandled )	// has the [enter] keypress already been handled once on the page
		{
			enterHandled = true;
			document.getElementById( elm ).click();	// send click command to appropriate button			
		}
		else
			return false;
		return true;
	}
	else	// FIX: firefox/mozilla try to resubmit if validation fails and alert box is closed using [enter] keypress (enters a loop)
		enterHandled = false;	// don't handle [enter] keypress again until another key has been pressed
	return false;
}


// Get a QS var
function GetQSVar( QS, varToGet )
{

	var val = "";
	var tempUrl = "";
	var start = 0;
	var end = 0;
	
	if( QS.indexOf( '?' + varToGet ) != -1 )
	{
		
		start = QS.indexOf( '?' + varToGet );
		
		if( start != -1 )
		{
		
			tempQS = QS.substring( ( start + varToGet.length + 1 ), QS.length );
			end = tempQS.indexOf( '&' );
			
			if( end == -1 )
				end = tempQS.length;
			
		}
		
		if( start != -1 && end != -1 )
		{
			val = tempQS.substring( 0, end );
		}	
		else
		{
			val = "";
		}
		
	}
	else if( QS.indexOf( '&' + varToGet ) != -1 )
	{
		
		start = QS.indexOf( '&' + varToGet );
		
		if( start != -1 )
		{
		
			tempQS = QS.substring( ( start + varToGet.length + 1 ), QS.length );
			end = tempQS.indexOf( '&' );
			
			if( end == -1 )
				end = QS.length;
			
		}
		
		if( start != -1 && end != -1 )
		{
			val = tempQS.substring( 0, end );
		}	
		else
		{
			val = "";
		}
		
	}
	
	return val;

}


function StripCharsInBagFromControl( Control , Bag )
{
	Control.value = stripCharsInBag( Control.value , Bag );
}


function HasInvalidCharacters( Control )
{
	var s = Control.value;
	
	if( s.indexOf( "\n" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "\n" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "\r" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "\t" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "<" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( ">" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "{" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "}" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "\"" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "'" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "[" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "]" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "&lt;" ) != -1 )
	{
		return true;
	}
	
	if( s.indexOf( "&gt;" ) != -1 )
	{
		return true;
	}

	if (s.indexOf("%") != -1)
	{
		return true;
	}
	
	return false;
	
}


function StripInvalidCharactersFromControl( Control )
{
	var s = stripCharsInBag( Control.value , "\n\r\t<>{}\"'[]%" );
	s = s.replace( /&lt;/g, "" );
	s = s.replace( /&gt;/g, "" );
	Control.value = s;
}

function CheckMultiple(formId, idPrefix, doCheck)
{
	var frm = document.getElementById(formId);
	var elementCount = frm.elements.length;
	
	for (var i = 0; i < elementCount; i++)
	{
		if( frm.elements[i].name.indexOf(idPrefix) >= 0 )
		{
			frm.elements[i].checked = doCheck;
		}
	}
}

function FindPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}


// Menu Code //
var isOverMenu = false;
var curTimeoutID = 0;

var curOwnerID = '';
var curMenuID = '';

function DisplayMenu(ownerID, menuID)
{
	var objOwner = document.getElementById(ownerID);
	var coords = FindPos(objOwner);
	
	if (curOwnerID == '')
	{
		curOwnerID = ownerID;
		curMenuID = menuID;
	}
	else if (curOwnerID != ownerID)
	{
		HideMenu(curOwnerID, curMenuID);
		curOwnerID = ownerID;
		curMenuID = menuID;
	}
	else
	{
		curOwnerID = ownerID;
		curMenuID = menuID;
	}
	
	var objMenu = document.getElementById(menuID);
	
	yCoords = parseInt(coords[1]);
	xCoords = parseInt(coords[0]);
	
	// Icon height
	yCoords = (yCoords + 16);
	
	objMenu.className = 'MenuOpen';
	document.getElementById(menuID).style.top = (yCoords + 'px');
	document.getElementById(menuID).style.left = (xCoords + 'px');
	
	isOverMenu = true;
	
	if (isOverMenu && curTimeoutID > 0)
	{
		clearTimeout(curTimeoutID);
		curTimeoutID = 0;
	}
	
}


function HideMenu(ownerID, menuID)
{
	var objOwner = document.getElementById(ownerID);
	var objMenu = document.getElementById(menuID);
	
	if (objMenu.className == 'MenuOpen')
	{
		
		objMenu.className = 'MenuClosed';
		objMenu.style.top = '-5000px';
		objMenu.style.left = '-5000px';
		
		isOverMenu = false;
		
		if (isOverMenu && curTimeoutID > 0)
		{
			clearTimeout(curTimeoutID);
			curTimeoutID = 0;
		}
		
	}
	
}


function InitCloseMenu(ownerID, menuID)
{
	if (isOverMenu && curTimeoutID > 0)
	{
		clearTimeout(curTimeoutID);
		curTimeoutID = 0;
	}
	else if (isOverMenu)
	{
		curTimeoutID = setTimeout('HideMenu("' + ownerID + '", "' + menuID + '")', MENU_TIMEOUT);
		isOverMenu = false;
	}
}


function ResizeImage(elem, MAX_W, MAX_H)
{
	if (!Object.isUndefined(elem) && elem != null)
	{
		var width = elem.width;
		var height = elem.height;
	
		var newWidth;
		var newHeight;
		
		if (width > height)
		{
			if (width > MAX_W)
			{
				newWidth = (MAX_W + 'px');
				newHeight = (height*(MAX_W/width));
				elem.setStyle({width: newWidth, height: newHeight});
			}
		}
		else
		{
			if (height > MAX_H)
			{
				newHeight = (MAX_H + 'px');
				newWidth = (width*(MAX_H/height));
				elem.setStyle({width: newWidth, height: newHeight});
			}
		}
	
	}
}

// PV: 2009-01-13: integer TryParse function
function TryParseInt(str, defaultValue) 
{ 
	return /^\d+$/.test(str) ? parseInt(str) : defaultValue; 
}
	
