var SSN_COL_DELIMITER = String.fromCharCode(16);
var SSN_ROW_DELIMITER = String.fromCharCode(15);

window.onload = __ssn_Page_OnLoad;

function __ssn_ClientAPIEnabled()
{
	return typeof(ssn) != 'undefined';
}

function __ssn_Page_OnLoad()
{
	if (__ssn_ClientAPIEnabled())
	{
		var sLoadHandlers = ssn.getVar('__ssn_pageload');
		if (sLoadHandlers != null)
			eval(sLoadHandlers);
	}
}

function __ssn_KeyDown(iKeyCode, sFunc, e)
{
	if (e == null)
		e = window.event;

	if (e.keyCode == iKeyCode)
	{
		eval(unescape(sFunc));
		return false;
	}
}

function __ssn_bodyscroll() 
{
	var oF=document.forms[0];
	if (__ssn_ClientAPIEnabled())
		oF.ScrollTop.value=ssn.dom.getByTagName("body")[0].scrollTop;
}

function __ssn_setScrollTop(iTop)
{
	if (__ssn_ClientAPIEnabled())
		ssn.dom.getByTagName("body")[0].scrollTop = iTop;
}

//Focus logic
function __ssn_SetInitialFocus(sID)
{
	var oCtl = ssn.dom.getById(sID);	
	if (oCtl != null && __ssn_CanReceiveFocus(oCtl))
		oCtl.focus();
}	

function __ssn_CanReceiveFocus(e)
{
	//probably should call getComputedStyle for classes that cause item to be hidden
	if (e.style.display != 'none' && e.tabIndex > -1 && e.disabled == false && e.style.visible != 'hidden')
	{
		var eParent = e.parentElement;
		while (eParent != null && eParent.tagName != 'BODY')
		{
			if (eParent.style.display == 'none' || eParent.disabled || eParent.style.visible == 'hidden')
				return false;
			eParent = eParent.parentElement;
		}
		return true;
	}
	else
	    return false;
}

// String wordWrap function
String.prototype.wordWrap = function(m, b, c) {
    var i, j, l, s, r;
    if (m < 1)
        return this;
    for (i = -1, l = (r = this.split("\n")).length; ++i < l; r[i] += s)
        for (s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : ""))
        j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length
			|| c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
    return r.join("\n");
};