

function closeIbox()
{
    if(window.closeHomeIbox)
    {
        closeHomeIbox();
    }
    else
    {
        hideIbox();
    }
}

function AddEvent(object, eventType, eventHandler)
{
	if (object.addEventListener)
	{
		object.addEventListener(eventType, eventHandler, false); 
		return true; 
	} 
	else if (object.attachEvent)
	{
		var r = object.attachEvent("on" + eventType, eventHandler);
		return r;
	}
	else 
	{
		return false;
	} 
}


function AddStamp(controlName, text, stampAtBottom)
{
	var control = document.getElementById(controlName);
	if(stampAtBottom)
	{
	    if (control.value != "")
		    control.value += "\n";
    		
	    control.value += text + "\n";
    	
	    scrollToBottom(control);
	    setCaretToEnd(control);
	}
	else
	{
	    if(control.value != "")
	    {
	        text += "\n\n";
	    }
	    control.value = text = control.value;
	    
	    scrollToTop(control);
	    setCaretToStart(control);
	}
	control.focus();
}

function StampHtml(clientId, text, stampAtBottom)
{
    try
    {
    	var radE = $find(clientId);
    	if (radE != null)
	    {
		    var html = radE.get_html();
		    if(stampAtBottom)
		    {
		        if (html.length > 0)
		        {
				    html += "<br/><br/>";
		        }
		        html += text + "<br/>";
		    }
		    else
		    {
		        if(html.length > 0)
		        {
		            text += "<br /><br />";
		        }
		        html = text + html;
		    }

		    radE.setFocus();
		    radE.set_html(html);
		    if(stampAtBottom)
		    {
		    	try
		    	{
		    		if (radE.Document.selection)//IE
		    		{
		    			var oRange = radE.Document.selection.createRange();
		    			oRange.scrollIntoView();
		    		}
		    		else //Moz
		    		{
		    			//We assume that the added text is at the bottom of the editor and this is the zone that we want to show
		    			var oBody = radE.Document.body;
		    			//Set cursor at the end of the text
		    			radE.Fire("SelectAll");
		    			var oSel = radE.ContentWindow.getSelection();
		    			oSel.collapseToEnd();
		    			//Scroll the body to make the text visible
		    			var top = oBody.offsetHeight;
		    			oBody.scrollTop = top;
		    		}
		    	}
		    	catch (e) { }
            }
	    }
	}
	catch(e)
	{
	    AddStamp(clientId, text, stampAtBottom);
	}
}

/////////////////////////
// Functions for scrolling and setting the input for a TextArea HTML control
// code copied from: http://www.faqts.com/knowledge_base/view.phtml/aid/7746/fid/130
/////////////////////////
function scrollToTop (element) {
    element.scrollTop = 0;
}
function scrollToBottom (element) {
    element.scrollTop = element.scrollHeight;
}
function setCaretToStart (input) {
  if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.select();
  }
}
function setCaretToEnd (input) {
  if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(false);
    range.select();
  }
}
/////////////////////
// end code copied from: http://www.faqts.com/knowledge_base/view.phtml/aid/7746/fid/130
/////////////////////

function showHideDiv(elemId)
{
	if (document.getElementById)
	{
		var div = document.getElementById(elemId);
		if (div)
		{
			if (div.style.display == "block")
			{
				div.style.display = "none";
			}
			else
			{
				div.style.display = "block";
			}
		}
	}
}

function showHideSpan(elemId)
{
	if (document.getElementById)
	{
		var div = document.getElementById(elemId);
		if (div)
		{
			if (div.style.display == "inline")
			{
				div.style.display = "none";
			}
			else
			{
				div.style.display = "inline";
			}
		}
	}
}

function showSpan(elemId)
{
	if (document.getElementById)
	{
		var span = document.getElementById(elemId);
		if (span)
		{
			span.style.display = "inline";
		}
	}
}

function showDiv(elemId)
{
	if (document.getElementById)
	{
		var div = document.getElementById(elemId);
		if (div)
		{
			div.style.display = "block";
		}
	}
}

function hideDiv(elemId)
{
	if (document.getElementById)
	{
		var div = document.getElementById(elemId);
		if (div)
		{
			div.style.display = "none";
		}
	}
}

function closeWindow(redirectUrl, inWindow)
{
    redirectUrl = unescape(redirectUrl);
    if(!inWindow)
    {
        window.location = redirectUrl;
    }
    else
    {
        if(self.opener)
        {
            if(self.opener.doHomeRefresh)
            {
                self.opener.doHomeRefresh();
            }
            else
            {
                self.opener.doRefresh();
            }
        }
        self.close();
    }
}

function getBrowserInformation()
{
	try
	{
		if (typeof window.parent.BrowserInformation != 'undefined')
			return window.parent.BrowserInformation;
	}
	catch(ex)
	{
	}
	
	return getThisWindowBrowserInformation();
}

function getThisWindowBrowserInformation()
{
	try
	{
		if (typeof window.BrowserInformation != 'undefined')
			return window.BrowserInformation;
	}
	catch(ex)
	{
	}
	
	return null;
}

function clearList(selectList)
{
	// clear list
	while (selectList.options.length > 0)
	{
		selectList.options[0] = null;
	}
}
		
function parentPickListValueChanged(sender, senderId, itemType)
{
	var val = sender.value;
	if (!isNaN(Number.parseInvariant(val)))
	{
		var wsr = new webServiceRunner(Axosoft.CustomerPortal.services.OnTimeService.ParentPicklistValueChanged, [senderId, val, itemType, getPageSessionGuid()], ParentPicklistValueChanged_Complete);
		wsr.runService();
	}
}
function ParentPicklistValueChanged_Complete(result)
{
	if(!result)
		return;
		
	var foo = "var vals = " + result;
	eval(foo);
	var i =0;
	for(i = 0;i< vals.length;i++)
	{
		if(!vals[i])
			break;
		var childList = document.getElementById(vals[i].ChildPickListId);
		if(!childList)
			continue;
							
		clearList(childList);
		var j = 0;
		for (j=0; j < vals[i].PickListValues.length; j++)
		{
			var opt = document.createElement("option");
			childList.options.add(opt);
			opt.text = vals[i].PickListValues[j].Text;
			opt.value  = vals[i].PickListValues[j].Value;
		}
	}
}

function webServiceRunner(webServiceFunction, webServiceArguments, returnFunction, returnParams, errorFunction)
{
	var _returnFunction = returnFunction;
	var _returnParams = returnParams;
	var _webServiceFunction = webServiceFunction;
	var _webServiceArguments = webServiceArguments;
	var _errorFunction = errorFunction;

	this.runService = function()
	{
		if (_errorFunction == undefined)
			_errorFunction = onservice_error;

		if(_webServiceArguments == null || _webServiceArguments.length == 0)
			_webServiceFunction(onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 1)
			_webServiceFunction(_webServiceArguments[0], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 2)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 3)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 4)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 5)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 6)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 7)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], _webServiceArguments[6], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 8)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], _webServiceArguments[6], _webServiceArguments[7], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 9)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], _webServiceArguments[6], _webServiceArguments[7], _webServiceArguments[8], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 10)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], _webServiceArguments[6], _webServiceArguments[7], _webServiceArguments[8], _webServiceArguments[9], onServiceComplete, _errorFunction);
		else if(_webServiceArguments.length == 11)
			_webServiceFunction(_webServiceArguments[0], _webServiceArguments[1], _webServiceArguments[2], _webServiceArguments[3], _webServiceArguments[4], _webServiceArguments[5], _webServiceArguments[6], _webServiceArguments[7], _webServiceArguments[8], _webServiceArguments[9], _webServiceArguments[10], onServiceComplete, _errorFunction);
		else
			alert('too many web service arguments');
	}

	function onServiceComplete(result)
	{
		// reset session timer
		try
		{
			if (window._axosessiontimer != undefined)
			{
				window._axosessiontimer.resetSessionTimer();
			}
		}
		catch(ex) {}

		if (_returnFunction)
		{
			var r = '_returnFunction(';
			if (_returnParams)
			{
				var needsComma = false;
				for(var i = 0; i < _returnParams.length; i++)
				{
					needsComma = true;
					r += 'returnParams[' + i.toString() + ']';
					if(i < returnParams.length - 1)
						r += ',';
				}
				if(needsComma)
					r+= ',';
			}
			if(result == undefined)
				r += 'false);';
			else
				r += 'result);';

			eval(r);
		}
	}
}

/* web service timeout and error callbacks */
function onservice_timeout(result)
{
	// timeout
	alert('Timeout: ' + result.get_message());
}		
function onservice_error(result)
{
	// unexpected error
	alert(result.get_message());
}