/*
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
	document.writeln('<style type="text/css">img { visibility:hidden; } </style>');
	window.attachEvent("onload", fnLoadPngs);
}

function fnLoadPngs() {
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

	for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
		if (itsAllGood && img.src.match(/\.png$/i) != null) {
			var src = img.src;
			img.style.width = img.width + "px";
			img.style.height = img.height + "px";
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
			img.src = "/colada2k4/gfx/salce/blank.gif";
		}
		img.style.visibility = "visible";
	}
}
*/

/* cache system images */
var img1 = new Image();
img1.src = '/gfx/salce/table-background.gif';
var img2 = new Image();
img2.src = '/gfx/salce/table-bottom.gif';
var img3 = new Image();
img3.src = '/gfx/salce/table-bottom-hover.gif';
var img4 = new Image();
img4.src = '/gfx/salce/table-background-hover.gif';
var img5 = new Image();
img5.src = '/gfx/salce/button-background.gif';
var img6 = new Image();
img6.src = '/gfx/salce/button-background-hover.gif';
var img7 = new Image();
img7.src = '/gfx/salce/button-background-inactive.gif';

var imgNodeMaximize = new Image();
imgNodeMaximize.src = '/gfx/salce/node-maximize.gif';
var imgNodeMinimize = new Image();
imgNodeMinimize.src = '/gfx/salce/node-minimize.gif';



function disableButton( Object )
	{
	var Class = Object.className;

	Object.disabled = true;
	Object.className = "disbutton";

	return Class;
	};

function enableButton( Object )
	{
	Object.disabled = false;
	Object.className = "mainbutton";
	};

function selectAll( Object )
	{
	for( i = 0; i < Object.length; ++i )
		Object.options[i].selected = true;
	};

function getFrame( Name )
	{
	var Object = null;

	if( Name != undefined )
		Object = parent.document.getElementById( Name ).contentWindow;

	return Object;
	};

/* 2004-05-10/fd: temporary */
function getParentFrame( Name )
	{
	var Object = null;

	if( Name != undefined )
		Object = parent.parent.document.getElementById( Name ).contentWindow;

	return Object;
	};
	
function getObject( Name, Frame )
	{
	var Frame = getFrame( Frame );
	var Object = null;

	if( Frame )
		{
		if( Frame.document.getElementById )
			Object = Frame.document.getElementById( Name );
		else if( Frame.document.all )
			Object = Frame.document.all[ Name ];
		}
	else
		{
		if( document.getElementById )
			Object = document.getElementById( Name );
		else if( document.all )
			Object = document.all[ Name ];
		};

	return Object;
	};

// convert all characters to lowercase to simplify testing
var userAgent = navigator.userAgent.toLowerCase();
var is_gecko = (userAgent.indexOf('gecko') != -1);
var fullVersion = userAgent.substring(userAgent.lastIndexOf('/') + 1);
var majorVersion = fullVersion.substring(0,1);
var minorVersion = fullVersion.substring(2,3);

// fix for Gecko-based browsers to force recalculations of table layouts
function redrawLayout( Object )
	{
	if( is_gecko )
		{
		if( Object == undefined )
			redrawLayout( document.getElementsByTagName( 'body' ).item(0) );
		else
			{
			if( majorVersion < 1 || ( majorVersion == 1 && minorVersion < 5 ) )
				{
				var Clear = Object.style.clear;
				Object.style.clear = 'both';
				Object.style.clear = Clear;
				}
			else
				{
				if( frames.length > 0 && 
					frames[0].name.length > 0 && 
					frames[0].name != 'frameContent' && 
					frames[0].name != 'frameForm' && 
					frames[0].name != 'frameSettings' && 
					frames[0].name != 'frameInformation' && 
					frames[0].name != 'frameList' && 
					frames[0].name != 'frameDash' && 
					frames[0].name != 'frameDef' && 
					frames[0].name != 'frm_preview' && 
					frames[0].name != 'frm_selmanleft' && 
					frames[0].name != 'frm_packlist' && 
					frames[0].name != 'frm_grouplist' && 
					frames[0].name != 'frameSplash' && 
					frames[0].name != 'idSelection' )
					{
	//				alert(frames.length+':'+frames[0].name);
					Object.style.position = 'fixed';
					};
				};
			};
		};
	};

//2006-04-30/fd: load box-content only on request	
function loadBoxcontent(boxname)	{
	if(navigator.userAgent.indexOf("MSIE",0) >= 0)	{	//IE
		if(frames[boxname].document.getElementById('targeturl'))	{
			frames[boxname].location.href = frames[boxname].document.getElementById('targeturl').value;	}	}
	else	{	//FF
		if(document.getElementById(boxname).contentDocument.getElementById('targeturl') != null )	{
			document.getElementById(boxname).contentDocument.location.href = document.getElementById(boxname).contentDocument.getElementById('targeturl').value;	}	
		}
}

//2006-05-02/fd: open box-content in popup
function popupBoxcontent(boxid)	{
	if(navigator.userAgent.indexOf("MSIE",0) >= 0)	{	//IE
		if(document.frames[boxid].targeturl)	{
			var popupBoxTarget = document.frames[boxid].targeturl.value;
		}
		else	{
			var popupBoxTarget = document.frames[boxid].document.location;
		}
	}
	else	 {
		if(document.getElementById(boxid).contentDocument.getElementById('targeturl'))	{
			var popupBoxTarget = document.getElementById(boxid).contentDocument.getElementById('targeturl').value;
		}
		else	{
			var popupBoxTarget = document.getElementById(boxid).contentDocument.location;
		}
	}
	
	popupBoxWin = window.open(popupBoxTarget+'&popupbox=1','popupBox','width=720,height=520,scrollbars=1,resizable=1,status=1,menubar=1');
	popupBoxWin.focus();
}

//2005-05-04/fd: submit the search form in left frame
function submitQuickSearch(target) {
	if (document.getElementById('list').value == 0) {
		var sellist = parent[target].document.getElementById('h_actualList').value;
		document.getElementById('list').value = sellist;
	}	 	
	document.forms['searchForm'].submit();
}

//2005-05-05/fd: collaps/expand left frame
function closeLeftFrame(framesetid,lblexpand,lblcollapse)
	{
	var theFrame = parent.document.getElementById( framesetid );
	var theImg = document.getElementById( 'img_closeframe' );
	var theLink = document.getElementById( 'lnk_closeframe' );

	if( theFrame.getAttribute( 'isMinimized' ) == true || theFrame.getAttribute( 'isMinimized' ) == "true" )
		{
		theFrame.setAttribute( 'cols', theFrame.getAttribute( 'colsbefore' ) );
		theFrame.setAttribute( 'isMinimized', false );

		theImg.src = "/gfx/salce/expand_left.jpg";
		theLink.title = lblcollapse;
		}
	else
		{
		theFrame.setAttribute( 'colsbefore', theFrame.getAttribute( 'cols' ) );
		theFrame.setAttribute( 'cols', "15,*" );
		theFrame.setAttribute( 'isMinimized', true );

		theImg.src = "/gfx/salce/expand_right.jpg";
		theLink.title = lblexpand;
		};
	};

function toggleFrame( frameName, labelExpand, labelCollapse, imageExpand, imageCollapse )
	{
	var idFrame = parent.document.getElementById( frameName );
	var idSidebar = document.getElementById( 'idSidebar' );

	if( idFrame.getAttribute( 'isMinimized' ) == true || idFrame.getAttribute( 'isMinimized' ) == "true" )
		{
		idFrame.setAttribute( 'cols', idFrame.getAttribute( 'colsbefore' ) );
		idFrame.setAttribute( 'isMinimized', false );

		idSidebar.setAttribute( 'isMinimized', "false" );
		if( typeof imageCollapse == 'string' )
			idSidebar.src = imageCollapse;
		else
			idSidebar.src = "/gfx/salce/frame-collapse.gif"
		idSidebar.title = labelCollapse;
		}
	else
		{
		idFrame.setAttribute( 'colsbefore', idFrame.getAttribute( 'cols' ) );
		idFrame.setAttribute( 'cols', "0,9,*" );
		idFrame.setAttribute( 'isMinimized', true );

		idSidebar.setAttribute( 'isMinimized', "true" );
		if( typeof imageExpand == 'string' )
			idSidebar.src = imageExpand;
		else
			idSidebar.src = "/gfx/salce/frame-expand.gif";
		idSidebar.title = labelExpand;
		};
	};

function toggleFrameRow( frameName, labelExpand, labelCollapse, imageExpand, imageCollapse )
	{
	var idFrame = parent.document.getElementById( frameName );
	var idSidebar = document.getElementById( 'idSidebarRow' );

	if( idFrame.getAttribute( 'isMinimized' ) == true || idFrame.getAttribute( 'isMinimized' ) == "true" )
		{
		idFrame.setAttribute( 'rows', idFrame.getAttribute( 'rowsbefore' ) );
		idFrame.setAttribute( 'isMinimized', false );

		idSidebar.setAttribute( 'isMinimized', "false" );
		idSidebar.src = imageCollapse;
		idSidebar.title = labelCollapse;
		}
	else
		{
		idFrame.setAttribute( 'rowsbefore', idFrame.getAttribute( 'rows' ) );
		idFrame.setAttribute( 'rows', "0,9,*" );
		idFrame.setAttribute( 'isMinimized', true );

		idSidebar.setAttribute( 'isMinimized', "true" );
		idSidebar.src = imageExpand;
		idSidebar.title = labelExpand;
		};
	};

/* 2006-10-26 phg: global layout box functions */
var imgNodeMaximize = new Image();
	imgNodeMaximize.src = '/gfx/salce/node-maximize.gif';
var imgNodeMaximizeHover = new Image();
	imgNodeMaximizeHover.src = '/gfx/salce/node-maximize-hover.gif';
var imgNodeMinimize = new Image();
	imgNodeMinimize.src = '/gfx/salce/node-minimize.gif';
var imgNodeMinimizeHover = new Image();
	imgNodeMinimizeHover.src = '/gfx/salce/node-minimize-hover.gif';
var imgTableBackground = new Image();
	imgTableBackground.src = '/gfx/salce/table-background.gif';
var imgTableBottom = new Image();
	imgTableBottom.src = '/gfx/salce/table-bottom.gif';
var imgTableBottomHover = new Image();
	imgTableBottomHover.src = '/gfx/salce/table-bottom-hover.gif';

function boxDisplayContent( idContent, bStatus )
	{
	var e = document.getElementById( "boxContent|" + idContent );

	if( e )
		{
		if( ( e.style.display != "none" ) != bStatus )
			{
			boxToggleContent( "boxContent|" + idContent );
			boxToggleContent( "boxFooter|" + idContent );
			boxToggleImage( "boxImage|" + idContent );
			boxChangeImage( "boxImage|" + idContent, bStatus );
			};
		};
	};

function boxToggleContent( idContent )
	{
	var e = document.getElementById( idContent );

	if( e )
		{
		if( e.style.display != "none" )
			e.style.display = "none";
		else
			e.style.display = "";
		};

	redrawLayout();
	};

function boxToggleImage( idImage )
	{
	var e = document.getElementById( idImage );

	if( e )
		{
		if( e.getAttribute( "isMinimized" ) == "true" )
			{
			e.src = "/gfx/salce/node-minimize.gif";
			e.setAttribute( "isMinimized", "false" );
			}
		else
			{
			e.src = "/gfx/salce/node-maximize.gif";
			e.setAttribute( "isMinimized", "true" );
			};
		};
	};

function boxChangeImage( idImage, bState )
	{
	var e = document.getElementById( idImage );

	if( e )
		{
		if( e.getAttribute( "isMinimized" ) == "true" )
			e.src = "/gfx/salce/node-maximize" + ( bState ? "-hover" : "" ) + ".gif";
		else
			e.src = "/gfx/salce/node-minimize" + ( bState ? "-hover" : "" ) + ".gif";
		};
	};

function openWindow( sURL, sName, iWidth, iHeight, sParameter )
	{
	if( screen )
		var xMax = screen.availWidth, yMax = screen.availHeight;
	else
		if( document.layers )
			var xMax = window.outerWidth, yMax = window.outerHeight;
		else
			var xMax = 640, yMax = 480;

	var xOffset = ( xMax - iWidth ) / 2, yOffset = ( yMax - iHeight ) / 2;

	window.open( sURL, sName, ( typeof sParameter == 'string' ? sParameter + ',' : '' ) + 'width=' + iWidth + ',height=' + iHeight + ',screenX=' + xOffset + ',screenY=' + yOffset + ',top=' + yOffset + ',left=' + xOffset + ',status=yes,resizable=yes,alwaysRaised=yes,dependent=yes' ).focus();
	};

function defined(val) {
	return (typeof val != "undefined");
}

// Renders a nice meter with the percentage value
function setMeterBar(id, fraq, text) {
	if(isNaN(fraq)) fraq = 0;
	fraq = Math.max(0, Math.min(100, Math.round(fraq))) + "%";
	var node = (typeof id == "string" ? document.getElementById(id) : id);
	if(node) {
		if(node.firstChild) {
			node.firstChild.childNodes[0].style.width = fraq;
			node.firstChild.childNodes[1].firstChild.data = fraq;
			if(defined(text)) node.lastChild.data = text;
		} else {
			node.innerHTML = '<div class="meter"><div class="bar" style="width:' + fraq + ';"></div>'
				+ '<div class="text">' + fraq + '</div></div>' + (defined(text) ? text : "");
		}
	}
}

// Adds an eventlistner to object
function addEvent(object, type, func) {
	if(object.addEventListener)
		object.addEventListener(type, func, false);
	else if (object.attachEvent)
		object.attachEvent("on" + type, func);
}

// Removes an eventlistner from object
function removeEvent(object, type, func) {
	if(object.removeEventListener)
		object.removeEventListener(type, func, false);
	else if (object.detachEvent)
		object.detachEvent("on" + type, func);
}

// Class for requesting updates periodically using ajax
function StatusUpdate(_url, _frequency) {
	var request;
	var timer;
	var url = _url;
	var frequency = _frequency * 1000;
	var me = this;
	var callbacks = new Object();
	var updates = new Object();

	this.start = function() {
		if((!window.XMLHttpRequest && !window.ActiveXObject) || frequency == 0) return false;
/*
		if(document.getElementsByName("refresh_button"))
			document.getElementsByName("refresh_button")[0].disabled = true;
*/
		timer = setTimeout(me.doUpdate, frequency);
	}

	this.stop = function() {
		clearTimeout(timer);
/*
		if(document.getElementsByName("refresh_button"))
			document.getElementsByName("refresh_button")[0].disabled = false;
*/
		request = null;
	}

	this.onUpdate = function(id, func) {
		callbacks[id] = func;
	}

	this.doUpdate = function() {
		if(request && request.readyState < 4) return;
		if(window.XMLHttpRequest) request = new XMLHttpRequest();
		if(window.ActiveXObject) request = new ActiveXObject("Microsoft.XMLHTTP");
		request.open("GET", url + ( url.indexOf( "?" ) == -1 ? '?' : '&' ) + 'r=' + Math.random(), true);
		request.onreadystatechange = function() {
			if(request.readyState < 4 || request.status != 200) return;
			var activeCallbacks = new Array();
			var regex = /\{(\w+)::([^\}]*)\}/g;
			while(result = regex.exec(request.responseText)) {
				var key = result[1];
				var value = result[2];
				if(updates[key] != undefined && updates[key] == value) continue;
				updates[key] = value;
				if(callbacks[key] != undefined) activeCallbacks.push(callbacks[key]);
//				setElementContent(key, value);
			}
			for(var i = 0; i < activeCallbacks.length; i++) { (activeCallbacks[i])(updates); }
			if( frequency > 0 )
				timer = setTimeout(me.doUpdate, frequency);
		}
		request.send("");
	}

	this.forceUpdate = function(_url) {
		if(_url)
			url = _url;

		this.stop();
		this.doUpdate();
	}
}

var IE = window.external && ( navigator.platform == "Win32" || ( window.ScriptEngine && ScriptEngine().indexOf( "InScript" ) + 1 ) );
var FF = ( navigator.userAgent.toLowerCase().indexOf( "firefox" ) + 1 ) ? true : false;
var OP = window.opera && window.print;
var NS = window.netscape && !OP;

function ClipboardCopy( textString )
	{
	if( window.clipboardData || NS )
		{
		if( IE && !FF )
			return( window.clipboardData.setData( "Text", textString ) );
		else
			{
			try { netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect" ); }
			catch(e) { return false; };

			try { nsClipboard = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( Components.interfaces.nsIClipboard ); }
			catch(e) { return false; };

			try { nsTransferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( Components.interfaces.nsITransferable ); }
			catch(e) { return false; };

			nsTransferable.addDataFlavor( "text/unicode" );
			nsSupportsString = Components.classes["@mozilla.org/supports-string;1"].createInstance( Components.interfaces.nsISupportsString );
			nsSupportsString.data = textString;
			nsTransferable.setTransferData( "text/unicode", nsSupportsString, textString.length * 2 );

			try { nsIClipboard = Components.interfaces.nsIClipboard; }
			catch(e) { return false; };

			nsClipboard.setData( nsTransferable, null, nsIClipboard.kGlobalClipboard );
			};
		};

	return true;
	};

function buttonHandler(theButton)
	{
	if( theButton )
		{
		theButton.setAttribute( "onMouseOver", "" );
		theButton.setAttribute( "onMouseOut", "" );
		theButton.className = "disbutton";
		theButton.disabled = true;
		};
	};
	
	
function removeitem(formname,listname)
	{
		s2 = eval( 'document.' + formname + '.' + listname );
		var deleters=s2.options.length-1;
		for(z=deleters; z>=0; z--) {
		if (s2.options[z].selected) s2.remove(z);
		}
	}

function sortUp( form_name, listname ) {
		ctl = eval( 'document.' + form_name + '.' + listname );
		if( ! ctl )  return;
		if( ctl.options[0].selected ) return;
		for( i=1; i<ctl.length; i++ ) {
			if( ctl.options[i].selected ) {
				tmp1 = new Option( ctl.options[i-1].text );
				tmp1.value = ctl.options[i-1].value;
				tmp = new Option( ctl.options[i].text );
				tmp.value = ctl.options[i].value;
				ctl.options[i-1] = tmp;
				ctl.options[i-1].selected = true;
				ctl.options[i] = tmp1;
			}
		}
	}


function sortDown( form_name, listname ) {
		ctl = eval( 'document.' + form_name + '.' + listname );
		if( ! ctl )  return;
		n = ctl.length;
		if( ctl.options[n-1].selected ){
			return;}
		for( i=n-2; i>=0; i-- ) {
			if( ctl.options[i].selected ) {
				tmp1 = new Option( ctl.options[i+1].text );
				tmp1.value = ctl.options[i+1].value;
				tmp = new Option( ctl.options[i].text );
				tmp.value = ctl.options[i].value;
				ctl.options[i] = tmp1;
				ctl.options[i+1] = tmp;
				ctl.options[i+1].selected = true;
			}
		}
	}
	
function getEnabledRows(formname,fieldname,doalert)	{
	var rows = document.forms[formname].elements[fieldname];	//how many rows to check
	var recs = "";
	if(rows)	{
		if(isArray(rows))	{
			for (var i=0; i<rows.length ; i++) {
				if(rows[i].checked == true)	{
					if(recs.length == 0)
						recs = rows[i].value;
					else
						recs = recs + ',' + rows[i].value;
				}
			}
		}
		else if(rows.checked)	{
			recs = rows.value;
		}
	}
	else	{
		recs.length = 0;
	}
		
	if(!recs.length && doalert == true)	{	
		alert('no record selected');
		return false;
	}
	else	{
		return recs;
	}
	
}