/****************************************************************************/
/*				Start crossbrowser script section							*/
/****************************************************************************/
function getObj(name)
{
	if (!name || name == "")
		return null;
		
	return getObjFromDoc(document, name);
}

function getObjFromDoc(doc, name)
{
	if (!name || !doc)
		return null;
	
	if (doc.getElementById)
		return doc.getElementById(name);
	else if (doc.all)
		return doc.all[name];
	return null;
}

function getObjects(name)
{
	if (!name || name == "")
		return null;
		
	return getObjectsFromDoc(document, name);
}

function getObjectsFromDoc(doc, name)
{
	if (!name || !doc)
		return null;
	
	if (doc.all)
	{
		if (!doc.all[name])
			return null;
		
		if (typeof(doc.all[name].length) == "undefined") // If only one element is matched, doc.all returns
			return new Array(doc.all[name]);             // the element itself, rather than a collection
		else
			return doc.all[name];
	}
	else if (doc.getElementsByName)
	{
		return doc.getElementsByName(name);
	}
	return null;
}

function getChildObjsByTag(parent, name)
{
	if (!parent || !name || name == "")
		return null;
	
	var result = null;
	
	if (parent.getElementsByTagName) {	// Try the W3C DOM method first
		result = parent.getElementsByTagName(name.toUpperCase());
		if (!result  ||  (result.length == 0))
			result = parent.getElementsByTagName(name.toLowerCase());
	}
	
	// It might not work for MSIE5.0 for "*" (any tag). In that case, try again using the Microsoft DOM
	// level 0 method
	if (result.length == 0 && name == "*") result = null;
	
	 // If the W3C DOM method did not succeed, try again using the Microsoft DOM level 0 method
	if (parent.all  &&  parent.all.tags  &&  (result == null)) {
		result = parent.all.tags(name.toUpperCase());
		if (!result  ||  (result.length == 0))
			result = parent.all.tags(name.toLowerCase());
	}
	
	return result;
}

function getAttr(elem, attr)
{
	if (!elem || !attr || attr == "")
		return null;
		
	// Elad 22/2/2004 - The attribute name is lowercased to support safari
	// Elad 22/4/2004 - Opera cannot accept a case that is not accurate in getAttribute
	if (elem.getAttribute)
	{
		var res = elem.getAttribute(attr.toLowerCase());
		if (!res)
			res = elem.getAttribute(attr.toUpperCase());
		if (res)
			return res;
		// else (the exact case must be given)
		res = elem.getAttribute(attr);
		if (res)
			return res;
		// else (the attribute does not exist)
		return null;
	}
	else
	{
		eval("var res = elem."+attr);
		return res; 
	}
}

function hasAttr(elem, attr) {
	var result = false;
	if (elem  &&  attr  &&  (attr != "")) {
		if (elem.getAttribute) {
			var resL = elem.getAttribute(attr.toLowerCase());
			var resU = elem.getAttribute(attr.toUpperCase());
			var resS = elem.getAttribute(attr);
			result = !(!resL || !resU || !resS);
		} else {
			eval("var res = elem."+attr);
			if (typeof(res) != "undefined")
				result = true;
		}
	}
	return result;
}

function appendObj(parent, elem)
{
	if (!parent || !elem)
		return null;
		
	if (parent.appendChild)
		return parent.appendChild(elem);
	else if (parent.insertAdjacentElement)
		return parent.insertAdjacentElement("beforeEnd", elem);
	return null;
}

// function from OwcDHTML.js from WebComponents
function getInnerHeight(wnd)
{
	if (!wnd) wnd = window;
	var y;
	if (typeof(wnd.self.innerHeight) != "undefined" ) // All browsers except MSIE
	{
		y = self.innerHeight;
	}
	else if (wnd.document.documentElement && wnd.document.documentElement.clientHeight)
		 // MSIE strict mode
	{
		y = wnd.document.documentElement.clientHeight;
	}
	else if (wnd.document.body) // MSIE in other occasions
	{
		y = wnd.document.body.clientHeight;
	}
	return y;

}

function getInnerWidth(wnd)
{
	if (!wnd) wnd = window;
	var x;
	if (typeof(wnd.self.innerHeight)!= "undefined") // All browsers except MSIE
	{
		x = wnd.self.innerWidth;
	}
	else if (wnd.document.documentElement && wnd.document.documentElement.clientWidth)
		 // MSIE strict mode
	{
		x = wnd.document.documentElement.clientWidth;
	}
	else if (wnd.document.body) // MSIE in other occasions
	{
		x = wnd.document.body.clientWidth;
	}
	return x;
}

function DHTML_Layout(oDocument)
{
	if (DHTML_Layout.initialized)
		return;
	if (!oDocument)
		oDocument = document;
	var oLayout = arguments.callee;

	// Create temporary DIV element to perform layout calculations
	var oRootElem = DHTML_getRootElement(oDocument);

	var oTempDiv = oDocument.createElement("div");
	oTempDiv.style.position = "absolute";
	oTempDiv.style.width = "50px";
	oTempDiv.style.height = "50px";
	oTempDiv.style.margin = "0px";
	oTempDiv.style.padding = "0px";
	oTempDiv = oRootElem.appendChild(oTempDiv);

	oTempDiv.style.padding = "1px";
	if (oTempDiv.offsetWidth == 50)	// Padding is not a part of offsetWidth/offsetHeight
		oLayout.excludePadding = false;		// IE6
	else
		oLayout.excludePadding = true;		// Firefox, Safari
	oTempDiv.style.padding = "";

	oTempDiv.style.border = "solid 1px black";
	if (oTempDiv.offsetWidth == 50)	// Padding is not a part of offsetWidth/offsetHeight
		oLayout.excludeBorder = false;		// Firefox, Safari
	else
		oLayout.excludeBorder = true;		// IE6;
	oTempDiv.style.border = "";
	oRootElem.removeChild(oTempDiv);

	DHTML_Layout.initialized = true;
}

DHTML_Layout.initialized = false;
DHTML_Layout.excludePadding = true;
DHTML_Layout.excludeBorder = true;

// Resizes HTML element so that its offsetWidth will be exactly nWidth pixels
function DHTML_setElemWidth(oHtmlElement, nWidth)
{
	if (!oHtmlElement)
		return;

	if (!DHTML_Layout.initialized)
		DHTML_Layout(oHtmlElement.ownerDocument);

	var nOffset = 0;
    
	// Ignore margins
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-left");
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-right");

	// Ignore borders
	if (DHTML_Layout.excludeBorder)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-left-width");
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-right-width");
	}

	// Ignore padding
	if (DHTML_Layout.excludePadding)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-left");
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-right");
	}

	var nStyleWidth = ((nWidth > nOffset) ? nWidth - nOffset : 0);
	oHtmlElement.style.width = String(nStyleWidth) + "px";
} // DHTML_setElemWidth()

// Returns HTML element offset width
function DHTML_getElemOffsetWidth(oHtmlElement)
{
	if (!oHtmlElement)
		return;

	if (!DHTML_Layout.initialized)
		DHTML_Layout(oHtmlElement.ownerDocument);

	var nOffset = 0;
    
	// Ignore margins
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-left");
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-right");

	// Ignore borders
	if (DHTML_Layout.excludeBorder)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-left-width");
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-right-width");
	}

	// Ignore padding
	if (DHTML_Layout.excludePadding)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-left");
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-right");
	}

	return nOffset;
} // DHTML_getElemOffsetWidth()

// Resizes HTML element so that its offsetHeight will be exactly nHeight pixels
function DHTML_setElemHeight(oHtmlElement, nHeight)
{
	if (!oHtmlElement)
		return;

	if (!DHTML_Layout.initialized)
		DHTML_Layout(oHtmlElement.ownerDocument);

	var nOffset = 0;

	// Ignore margins
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-top");
	nOffset += DHTML_computeCssSize(oHtmlElement, "margin-bottom");

	// Ignore borders
	if (DHTML_Layout.excludeBorder)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-top-width");
		nOffset += DHTML_computeCssSize(oHtmlElement, "border-bottom-width");
	}

	// Ignore padding
	if (DHTML_Layout.excludePadding)
	{
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-top");
		nOffset += DHTML_computeCssSize(oHtmlElement, "padding-bottom");
	}

	var nStyleHeight = ((nHeight > nOffset) ? nHeight - nOffset : 0);
	oHtmlElement.style.height = String(nStyleHeight) + "px";
} // DHTML_setElemHeight()

function DHTML_getRootElement(oDocument)
{
	if (!oDocument)
		oDocument = document;

	var oRootElem = getChildObjectByTag(oDocument, "body", 0);
	if (!oRootElem)
		oRootElem = getChildObjectByTag(oDocument, "frameset", 0);
	return oRootElem;
}

function getChildObjectByTag(parent, name, nIndex)
{
	var arrChildObjs = getChildObjsByTag(parent, name);
	if (!arrChildObjs || arrChildObjs.length == 0)
		return null;
	if (!nIndex)
		nIndex = 0;
	return arrChildObjs[nIndex];
}

function DHTML_getStyle(oElem, sCssStyle)
{
    var sValue = "";

    if (document.defaultView && document.defaultView.getComputedStyle)
    {
		var oDoc = getOwnerDoc(oElem);
		if (!oDoc)
			oDoc = document;
		var oComputedStyle = oDoc.defaultView.getComputedStyle(oElem, null);
		if (oComputedStyle)
	        sValue = oComputedStyle.getPropertyValue(sCssStyle);
	}
    else if (oElem.currentStyle)
    {
        sCssStyle = sCssStyle.replace(/\-(\w)/g, function (strMatch, p1) { return p1.toUpperCase();} );
        sValue = oElem.currentStyle[sCssStyle];
    }
    return sValue;
} // DHTML_getStyle()

function getOwnerDoc(elem)
{
	if (!elem)
		return null;
	
	if (elem.ownerDocument)
		return elem.ownerDocument;
	else if (elem.document)
		return elem.document;
	else
		return null;
}

function DHTML_computeCssSize(oElem, sCssStyle)
{
	var sValue = DHTML_getStyle(oElem, sCssStyle);
	if (!sValue)
		return 0;

	// Test value for "<number> px" format
	var rePixels = /([0-9]+)px/i;
	var arrMatch = rePixels.exec(sValue);
	if (arrMatch)
		return parseInt(arrMatch[1], 10);

	// TODO: Test value for "<number> %" format
	return 0;
}

function DHTML_replaceCssClassToElem(oHtmlElem, sFindClass, sReplaceBy, bDoNotAddIfNone)
{
  if (!oHtmlElem)
      return;

  var reClass = new RegExp("(\\s|^)" + sFindClass + "(\\s|$)", "gi");
  var arrMatch = reClass.exec(oHtmlElem.className);
  if (arrMatch != null)
      oHtmlElem.className = oHtmlElem.className.replace(reClass, arrMatch[1] + sReplaceBy + arrMatch[2]);
  else if (!bDoNotAddIfNone)
  {
      reClass = new RegExp("(\\s|^)" + sReplaceBy + "(\\s|$)", "gi");
      if (reClass.exec(oHtmlElem.className) == null)
          oHtmlElem.className += (((oHtmlElem.className != "") ? " " : "") + sReplaceBy);
  }
}

// This function checks if Browser is Safari it checks if some specific properties exist or not in dom model. 
function isSafari()
{
    return ((typeof(document.childNodes) != "undefined")  &&  (typeof(document.all) == "undefined")
            &&  (typeof(navigator.taintEnabled) == "undefined") &&  (typeof(navigator.accentColorName) == "undefined"));
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// DOM HTML implementation helper functions

// This function and the next one find the position of the an element relative to the client area of
// the window.
// WARNING: the following functions (findPosX, findPosY) have a few limitations and bugs in various
//          browsers under very curious specific circumstances. Caution and test is advised when using
//          these functions.
function findPosLeft(obj)
{
	// Go up the offset chain (ancestor-wise) and accumulate the x position
	var curLeft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curLeft += obj.offsetLeft;
			if (obj.clientLeft  &&
				((typeof(obj.filters) == "undefined")  ||
				(typeof(obj.isDisabled) != "undefined"))	// Don't use for MAC MS IE
				)							// For MSIE: the border is not counted within offsetLeft, it
				curLeft += obj.clientLeft;	// is contained within the clientLeft property
			
			obj = obj.offsetParent;
		}
	} else if (obj.x)
		curLeft += obj.x;
	return curLeft;
}

function findPosTop(obj)
{
	// Go up the offset chain (ancestor-wise) and accumulate the y position
	var curTop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curTop += obj.offsetTop;
			if (obj.clientTop  &&
				((typeof(obj.filters) == "undefined")  ||
				(typeof(obj.isDisabled) != "undefined"))	// Don't use for MAC MS IE
				)							// For MSIE: the border is not counted within offsetLeft, it
				curTop += obj.clientTop;	// is contained within the clientLeft property
			
			obj = obj.offsetParent;
		}
	} else if (obj.y)
		curTop += obj.y;
	return curTop;
}

// This function, as well as the next one retrieves the given window's scrolling offset. If no window is
// specified, the current window is assumed.
function getScrollOffsetX(wnd)
{
	if (!wnd) wnd = window;
	if (typeof(wnd.self.pageXOffset) != "undefined") // All browsers except MSIE
		return wnd.self.pageXOffset;
	else if (wnd.document.documentElement && wnd.document.documentElement.scrollLeft) // MSIE strict mode
		return wnd.document.documentElement.scrollLeft;
	else if (wnd.document.body) // MSIE in other occasions
		return wnd.document.body.scrollLeft;
	else
		return null;
}

function getPageWidth(wnd)
{
	if (!wnd) wnd = window;
	var x = 0;
	var test1 = wnd.document.body.scrollHeight;
	var test2 = wnd.document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = wnd.document.body.scrollWidth;
	}
	else // Explorer Mac;
		//would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = wnd.document.body.offsetWidth;
	}
	return x;
}
/****************************************************************************/
/*					End crossbrowser script section							*/
/****************************************************************************/

function formChanged(objName, objValue, formToProcess)
{
	var searchUrl = "";
	searchUrl = __formChanged(objName, objValue, formToProcess);
	preserveForms();
	window.top.sys.execUrl(searchUrl);
}


function updateUrl(curUrl, name, value, bUnique)
{
	if (curUrl)
	{
		if(bUnique)
		{
			var re = new RegExp("\&" + name + "=[^&]*","ig");
			curUrl = curUrl.replace(re, "");
		}
		return curUrl += "&"+ name + "=" + value;
	}
	return curUrl;
}


function __formChanged(objName, objValue, formToProcess)
{
	var curURL = "";
	if (typeof(homeBase) != "undefined")
		curURL = homeBase;
	var formName = "SearchForm";
	if( typeof(objName) != "undefined" && objName == "sScopeID" &&
		objValue == "DR")
		{
			var oDateFrom = getObj("sDateFrom");
			var oDateTo = getObj("sDateTo");
			if( oDateFrom != null )
				oDateFrom.value = "";
			if( oDateTo != null )
				oDateTo.value = "";
		} //{if} In selected Date Range option from ScopeId select object
	if (formToProcess && typeof(formToProcess) == "string")
		formName = formToProcess;
	var selectElems = getChildObjsByTag(getObj(formName), "SELECT");
	if (selectElems)
	{
		for (var i = 0; i < selectElems.length; i++)
		{
			if (!hasAttr(selectElems[i], "NAME"))
				continue;
			var elemName = getAttr(selectElems[i], "NAME");
			if (objName && elemName.toUpperCase() == objName.toUpperCase())
				continue;
			var arrOptionElems = getChildObjsByTag(selectElems[i], "OPTION");
			var arrValues = new Array();
			for(var j = 0; j < arrOptionElems.length; j++)
			{
				if(arrOptionElems[j].selected)
				{
					curURL = updateUrl(curURL, elemName, arrOptionElems[j].value);
					arrValues.push(arrOptionElems[j].value);
				}
			}
			window.top.sys.saveCurrentParam(formName + "_" + elemName, arrValues)
			/*
			if (selectElems[i].selectedIndex > -1)
			{
				curURL = updateUrl(curURL, getAttr(selectElems[i], "NAME"), selectElems[i].options[selectElems[i].selectedIndex].value);
				window.top.sys.saveCurrentParam(formName+"_"+getAttr(selectElems[i], "NAME"), selectElems[i].options[selectElems[i].selectedIndex].value)
			}
			*/
		}
	}
	var inputElems = getChildObjsByTag(getObj(formName), "INPUT");
	if (inputElems)
	{
		for (var i = 0; i < inputElems.length; i++)
		{
			if (!hasAttr(inputElems[i], "NAME"))
				continue;
			var elemName = getAttr(inputElems[i], "NAME");
			elemName = elemName.toUpperCase();
			if (objName && elemName == objName.toUpperCase())
				continue;	
			var elemType = inputElems[i].type.toUpperCase();
			switch (elemType)
			{
				case "CHECKBOX":
					var bValue = (inputElems[i].checked ? "true" : "false");
					curURL = updateUrl(curURL, getAttr(inputElems[i], "NAME"), bValue);
					window.top.sys.saveCurrentParam(formName+"_"+getAttr(inputElems[i], "NAME"), bValue)
					break;
				case "RADIO":
					if(inputElems[i].checked)
					{
						curURL = updateUrl(curURL, getAttr(inputElems[i], "NAME"), inputElems[i].value);
						window.top.sys.saveCurrentParam(formName+"_"+getAttr(inputElems[i], "NAME"), inputElems[i].value)
					}
					break;
				case "TEXT":
					if (typeof(inputElems[i].value) != "undefined")
					{
						curURL = updateUrl(curURL, getAttr(inputElems[i], "NAME"), stringToHexEscape(inputElems[i].value), true);
						window.top.sys.saveCurrentParam(formName+"_"+getAttr(inputElems[i], "NAME"), inputElems[i].value)
					}
					break;
				default:
					break;
			}
		}
	}
	var textareaElems = getChildObjsByTag(getObj(formName), "TEXTAREA");
	if (inputElems)
	{
		for (var i = 0; i < textareaElems.length; i++)
		{
			if (!hasAttr(textareaElems[i], "NAME"))
				continue;
			var elemName = getAttr(textareaElems[i], "NAME");
			elemName = elemName.toUpperCase();
			if (objName && elemName == objName.toUpperCase())
				continue;	
			if (textareaElems[i].value)
			{
				curURL = updateUrl(curURL, getAttr(textareaElems[i], "NAME"), textareaElems[i].value);
				window.top.sys.saveCurrentParam(formName+"_"+getAttr(textareaElems[i], "NAME"), textareaElems[i].value);
			}
		}
	}
	if (typeof(objName) != "undefined" && typeof(objValue) != "undefined"
		&& objName != null && objValue != null)
	{
		curURL = updateUrl(curURL, objName, objValue);
		window.top.sys.saveCurrentParam(formToProcess+"_"+objName, objValue);
	}
	return curURL;
}


function preserveForms()
{
	var formElems = getChildObjsByTag(document, "FORM");
	if (formElems)
	{
		for (var i = 0; i < formElems.length; i++)
		{
			if (!hasAttr(formElems[i], "NAME"))
				continue;
			var elemName = getAttr(formElems[i], "NAME");
			__formChanged(null,null,elemName);
		}
	}
}


function restoreForms()
{
	var storage = window.top.sys.getSavedParams();
	if (!storage)
		return;
	var formElems = getChildObjsByTag(document, "FORM");
	if (formElems)
	{
		for (var i = 0; i < formElems.length; i++)
		{
			if (!hasAttr(formElems[i], "NAME"))
				continue;
			var formName = getAttr(formElems[i], "NAME");
			var selectElems = getChildObjsByTag(formElems[i], "SELECT");
			if (selectElems)
			{
				for (var j = 0; j < selectElems.length; j++)
				{
					if (!hasAttr(selectElems[j], "NAME"))
						continue;
					var elemName = getAttr(selectElems[j], "NAME");
					var arrEnabledOptions = storage[formName + "_" + elemName];
					if(arrEnabledOptions && arrEnabledOptions.length > 0)
					{
						for (var k = 0; k < selectElems[j].options.length; k++)
						{
							for(var l = 0; l < arrEnabledOptions.length; ++l)
								if (selectElems[j].options[k].value == arrEnabledOptions[l])
								{
									selectElems[j].options[k].selected = true;
									break;
								}
						}
					}
				}
			}
			var inputElems = getChildObjsByTag(getObj(formName), "INPUT");
			if (inputElems)
			{
				for (var j = 0; j < inputElems.length; j++)
				{
					if (!hasAttr(inputElems[j], "NAME"))
						continue;
					var elemName = getAttr(inputElems[j], "NAME");
					var elemType = inputElems[j].type.toUpperCase();
					switch (elemType)
					{
						case "CHECKBOX":
							if (typeof(storage[formName+"_"+elemName]) != "undefined")
								inputElems[j].checked = (storage[formName+"_"+elemName] == "true") ? true : false;
							break;
						case "RADIO":
							if (typeof(storage[formName+"_"+elemName]) != "undefined")
								inputElems[j].checked = (storage[formName+"_"+elemName] == inputElems[j].value) ? true : false;
							break;
						case "TEXT": 
							if (typeof(storage[formName+"_"+elemName]) != "undefined" 
							    && storage[formName+"_"+elemName] != "                                              BFDgnbdfgnBDFGNBDFgsdfrgserBTY$^&MDytn" 
							    && inputElems[j].style.visibility != "hidden")
								inputElems[j].value = storage[formName+"_"+elemName];
							break;
						default:
							break;
					}
				}
			}
			var textareaElems = getChildObjsByTag(getObj(formName), "TEXTAREA");
			if (inputElems)
			{
				for (var j = 0; j < textareaElems.length; j++)
				{
					if (!hasAttr(textareaElems[j], "NAME"))
						continue;
					var elemName = getAttr(textareaElems[i], "NAME");
					
					if (typeof(storage[formName+"_"+elemName]) != "undefined")
					{
						textareaElems[j].value = storage[formName+"_"+elemName];
					}
				}
			}
		}
	}

	// Populating days in search form date range
	restoreDays("SearchForm", "sDateFrom");
	restoreDays("SearchForm", "sDateTo");
	restoreDays("ThumbForm", "tvDateFrom");
	restoreDays("ThumbForm", "tvDateTo");

	// Restore thumbnail navigation selection
	if(storage["thumbNav_Selection"])
	{
		var oSelTable = getObj(storage["thumbNav_Selection"]);
		if(oSelTable)
		{
			oSelTable.className = oSelTable.className + "Selected";
		}
	}
}


function setThumbNavSelection(elem)
{
	var storage = window.top.sys.getSavedParams();
	if (storage)
	{
		if(storage["thumbNav_Selection"])
		{
			var oSelTable = getObj(storage["thumbNav_Selection"]);
			if(oSelTable)
				oSelTable.className = oSelTable.className.replace("Selected", "");
		}
		storage["thumbNav_Selection"] = elem.id;
	}
	elem.className = elem.className + "Selected";
}


function restoreDays(sForm, sControl)
{
	var storage = window.top.sys.getSavedParams();
	if (!storage)
		return;
	var nDay;
	var sElemName = sForm + "_" + sControl + "Day";
	if(typeof(storage[sElemName]) == "object" && storage[sElemName].length > 0)
	{
		nDay = parseInt( storage[sElemName][0], 10);
		nDay = isNaN(nDay) ? 1 : nDay;
	}
	populateDays(sControl, nDay);
}

function populateDays(sPrefix, nDay) 
{
	var years	= null;
	var months	= null;
	var days	= null;
	years		= getObj(sPrefix+"Year");
	months		= getObj(sPrefix+"Month");
	days		= getObj(sPrefix+"Day");
	if (!years || !months || !days)
		return;
	if(years.value == "" || isNaN(parseInt(years.value,10)))
	{				
		years.value = "";
		months.options[0].selected = true;				
		while(days.options.length>0) 
		{
			days.options[0] = null;
		}
		days.options[0] = new Option("");
		days.options[0].selected = true;
		return;
	}

	var timeA = new Date(years.value, months.options[months.selectedIndex].value,1);
	var timeDifference = timeA - 86400000;
	var timeB = new Date(timeDifference);
	var daysInMonth = timeB.getDate();
	if(!nDay && days.selectedIndex > 0)
		nDay = days.selectedIndex;
		
	while(days.options.length>0) 
	{
		days.options[0] = null;
	}
	
	if(months.selectedIndex > 0)
	{
		for (var i = 0; i < daysInMonth; ++i) 
		{
			days.options[i] = new Option(i+1);
			days.options[i].value = i+1;
		}
		
		if(nDay && nDay < daysInMonth)
			days.options[nDay-1].selected = true;
		else
			days.options[0].selected = true;
	}
}

function getTabImg(tab)
{
	var imgRef						= "../Layout/Images/Colorado/Tabs/"
	var tabsArr						= new Array();
	tabsArr["HOME.ASP"]				= "home";
	tabsArr["ARCHIVEHOME.ASP"]		= "newnavigation";
	tabsArr["SEARCHHOME.ASP"]		= "advanced";
	tabsArr["ARCHIVEVIEW.ASP"]		= "issue";
	tabsArr["SEARCHVIEW.ASP"]		= "searchresults";
	tabsArr["THUMBNAILVIEW.ASP"]	= "thumbnail";
	tabsArr["COLLECTIONS.ASP"]		= "mycollection";
	var tmpArr						= window.location.pathname.split("/");
	var fileName					= "";
	var curURL						= "";
	switch (tab)
	{
		case "HOME.ASP":
		case "ARCHIVEHOME.ASP":
			curURL = window.top.sys.archiveHome_LastUrl;
			break;
		case "SEARCHHOME.ASP":
			curURL = window.top.sys.searchHome_LastUrl;
			break;
		case "ARCHIVEVIEW.ASP":
			curURL = window.top.sys.archiveView_LastUrl;
			break;
		case "SEARCHVIEW.ASP":
			curURL = window.top.sys.searchView_LastUrl;
			break;
		case "THUMBNAILVIEW.ASP":
			curURL = window.top.sys.thumbView_LastUrl;
			break;
		case "COLLECTIONS.ASP":
			curURL = window.top.sys.collectionView_LastUrl;
			break;
		default:
			break
	}
	if (tmpArr && tmpArr.length)
	{
		fileName = tmpArr[tmpArr.length-1];
		if (tab.toUpperCase() == fileName.toUpperCase())
			return imgRef+tabsArr[fileName.toUpperCase()]+"_on.gif";
		try
		{
			window.top.sys.wrongUrl(curURL);
		}
		catch(x)
		{
			curURL = tab;
			var url = curURL.toUpperCase();
			if (("ARCHIVEVIEW.ASP" == tab ) || ("SEARCHVIEW.ASP" == tab ) || ("THUMBNAILVIEW.ASP" == tab ))
				return imgRef+tabsArr[tab.toUpperCase()]+"_dis.gif";	
			return imgRef+tabsArr[tab.toUpperCase()]+"_off.gif";
		}
		if (window.top.sys.wrongUrl(curURL))
			return imgRef+tabsArr[tab.toUpperCase()]+"_dis.gif";
		else
			return imgRef+tabsArr[tab.toUpperCase()]+"_off.gif";
	}
}
function assignTabImages()
{
	var objs = getChildObjsByTag(document, "IMG");
	if (objs)
	{
		for (var i = 0; i < objs.length; i++)
		{
			if (hasAttr(objs[i],"TAB_ASSIGN"))
				objs[i].src = getTabImg(getAttr(objs[i],"TAB_ASSIGN"));
		}
	}
}

function OlvOnLoad()
{
	try
	{
		try
		{
			restoreForms();
		}
		catch(x)
		{
		}
		assignTabImages();
		if (DHTML_getElementById("calendar"))
		{
			OlvControl_InitPage();
			onCalendarLoaded();
		}
		if(Page_OnLoad)
			Page_OnLoad();
	}
	catch(x)
	{
	}
}


function doRefineQuery()
{
	var oRefineInput = getObj("RefineQueryView");
	var oRefineInputHidden = getObj("RefineQuery");
	if(oRefineInput && oRefineInputHidden)
	{
		oRefineInputHidden.value = oRefineInput.value;
		oRefineInput.value = "";
	}
	window.top.sys.sFormattedQueryString = formatHumanReadableSearchQuery(true);		
	formChanged("RefineQuery", stringToHexEscape(oRefineInputHidden.value), 'SearchForm');
	return false;
}


function CheckDateRange(sElemPrefix, bLimitRange) // bLimitRange can be false or have value of limit in months
{
	var oFrom = getObj(sElemPrefix + "From");
	var oTo = getObj(sElemPrefix + "To");
	if(!oFrom && !oTo)
		return true;
		
	var sFrom = oFrom.value;
	var sTo = oTo.value;
	var dFrom = (sFrom && sFrom != "" ? new Date(sFrom) : new Date("01/01/1600"));
	var dTo = (sTo && sTo != "" ? new Date(sTo) : new Date());
	
	if(dFrom.valueOf() > dTo.valueOf())
	{
		alert("The date range entered is invalid.");
		return false;
	}
		
	// This check is performed in ArchivePubBrowser.asp
	if(bLimitRange)
	{	// Check that date range is not bigger than defined in skin settings. Date range 
		var nMonthInFrom = dFrom.getFullYear() * 12 + dFrom.getMonth();
		var nMonthInTo = dTo.getFullYear() * 12 + dTo.getMonth();
		if((nMonthInTo - nMonthInFrom) > bLimitRange)
		{
			alert("Date range is limited to " + dateRange + " months.");
			return false;
		}
	}
	return true;
}

function escapeHRQuery(sQuery)
{	
	sQuery = sQuery.replace(/</g, " ");
	sQuery = sQuery.replace(/>/g, " ");
	return sQuery;
}

function getInputValue(sID)
{
	var oInputObj = getObj(sID);
	if(oInputObj == null)
		return "";
	return oInputObj.value ? escapeHRQuery(oInputObj.value).bold() : "";
}

function formatHumanReadableSearchQuery(bAppendToOldQuery)
{
	var sEmptyQueryMsg = "Search";
	// Hadnle adding new parameters to query when refining
	if(bAppendToOldQuery)
	{
	    var sRefineQuery = getInputValue("RefineQuery");
	    if(sRefineQuery != "")
	    {
		    if(window.top.sys.sFormattedQueryStringPart1 == sEmptyQueryMsg) // previous query was empty
		        window.top.sys.sFormattedQueryStringPart1 = "'" + sRefineQuery + "'";
		    else
		        window.top.sys.sFormattedQueryStringPart1 = "(" + window.top.sys.sFormattedQueryStringPart1 + ") AND '" + sRefineQuery + "'";
	    }
	    
	    return window.top.sys.sFormattedQueryStringPart1 + window.top.sys.sFormattedQueryStringPart2;
	}
		
	var sRes = "";
	var sInputVal = getInputValue("sQuery");
	if(sInputVal != "")
		sRes += "'" + sInputVal + "'";
	else
		sRes += sEmptyQueryMsg;
		
	window.top.sys.sFormattedQueryStringPart1 = sRes;
	sRes = "";

	var arrEntityTypeInputs = getObjects("rEntityType");
	if(arrEntityTypeInputs && arrEntityTypeInputs.length > 0 )
	{
		var arrTypeNames = new Array("All Clippings", "Articles", "Pictures", "Advertisements");
		sRes += " in ";
		for(var nType = 0; nType < arrEntityTypeInputs.length; ++nType)
			if(arrEntityTypeInputs[nType].checked == true)
				sRes += arrTypeNames[nType].toString().bold();
	}
	
	sInputVal = getInputValue("HedLine_hl");
	if(sInputVal != "")
		sRes += ", with Headline containing: '" + sInputVal + "'";
	sInputVal = getInputValue("Byline");
	if(sInputVal != "")
		sRes += ", with Byline containing: '" + sInputVal + "'";
	sInputVal = getInputValue("Body");
	if(sInputVal != "")
		sRes += ", with Body containing: '" + sInputVal + "'";
	sInputVal = getInputValue("Caption");
	if(sInputVal != "")
		sRes += ", with Caption containing: '" + sInputVal + "'";
	sInputVal = getInputValue("RelatedArticle");
	if(sInputVal != "")
		sRes += ", with Related Article containing: '" + sInputVal + "'";
		
	if(getObj("sSearchInAll") && getObj("sSearchInAll").checked)
		sRes += ", in all publications and all sections";
	else
	{
		var oPubs = getObj("sPublication");
		if(oPubs && oPubs.options)
		{
			sRes += ", in publications: ";
			var sComma = "";
			for(var nPub = 0; nPub < oPubs.options.length; ++nPub)
				if(oPubs.options[nPub].selected)
				{
					sRes += sComma + oPubs.options[nPub].text.bold();
					if(sComma == "")
						sComma = ", ";
				}
		}
		var oSecs = getObj("SECTION");
		if(oSecs && oSecs.options && oSecs.selectedIndex != -1)
		{
			sRes += ", in sections: ";
			var sComma = "";
			for(var nSec = 0; nSec < oSecs.options.length; ++nSec)
				if(oSecs.options[nSec].selected)
				{
					sRes += sComma + oSecs.options[nSec].text.bold();
					if(sComma == "")
						sComma = ", ";
				}
		}
	}
	
	var oScope = getObj("sScopeID");
	if(oScope)
	{
		if(oScope.selectedIndex != 0)
			sRes += " in " + oScope.options[oScope.selectedIndex].text.bold();
	
		sInputVal = getInputValue("sDateFrom");
		if(sInputVal != "")
			sRes += " from date: " + sInputVal;
	
		sInputVal = getInputValue("sDateTo");
		if(sInputVal != "")
			sRes += " to date: " + sInputVal;
	}

	sInputVal = getInputValue("dc:creator");
	if(sInputVal != "")
		sRes += ", with Author containing: '" + sInputVal + "'";
	sInputVal = getInputValue("PageLabel");
	if(sInputVal != "")
		sRes += ", with Page Label containing: '" + sInputVal + "'";
	sInputVal = getInputValue("dc:publisher");
	if(sInputVal != "")
		sRes += ", with Publisher containing: '" + sInputVal + "'";
		
	oSortBy = getObj("sSorting");
	if(oSortBy && oSortBy.options)
		sRes += ", sorted by: " + oSortBy.options[oSortBy.selectedIndex].text.bold();

	window.top.sys.sFormattedQueryStringPart2 = sRes;
	return window.top.sys.sFormattedQueryStringPart1 + window.top.sys.sFormattedQueryStringPart2;
}	

function stringToHexEscape(str)
{
	if (!str)
		return "";
	var retVal = "";
	var c,tmp;
	for(var i=0;i<str.length;i++)
	{
		c = str.charCodeAt(i);
		tmp = c.toString(16);
		if(c<=127)
			retVal += "%"+tmp
		else if(tmp.length == 2)
			retVal += "%u00"+tmp;
		else if(tmp.length == 3)
			retVal += "%u0"+tmp;
		else
			retVal += "%u"+tmp;
	}
	return retVal;
}

