function RedirectToURL(strURL){
	self.location = strURL; 
}

function TargettedSubmit(objForm, objHiddenVarTargetURL, strUrl){
	objHiddenVarTargetURL.value = strUrl;
	objForm.submit();
}

function ValidateAndRedirectToURL(strValidationMessage, strURL){
	if (confirm(strValidationMessage)) {
		RedirectToURL(strURL);
	}
}

function GoBack(intHowFar){
	if (!intHowFar) {
		intHowFar = -1;
	}
	if (intHowFar > 0) {
		intHowFar = -1 * intHowFar
	}
	self.history.go(intHowFar); 
}

function GoForward(intHowFar){
	if (!intHowFar) {
		intHowFar = 1;
	}
	self.history.go(intHowFar); 
}

function CloseCurrentWindow(){
	self.close();
}

function SubmitFormAndCloseCurrentWindow(objForm) {
	objForm.submit();
	CloseCurrentWindow();
}

function CloseCurentWindowAndRefreshParent(strSelectListText, strOriginalParms) {
	if (!self.opener.closed){
		if (strOriginalParms){
			self.opener.location.href = self.opener.location.pathname + strOriginalParms + "&Parm1=" + strSelectListText + '&Time=' + escape(new Date());	
		}
		else{
			self.opener.location.href = self.opener.location.pathname + '?Time=' + escape(new Date()) + "&Parm1=" + strSelectListText;
		}
	}
	CloseCurrentWindow();
}

function refreshParentWindow() {
	if (self.opener) {
		if (!self.opener.closed) {
			var strHREF    = new String(self.opener.location.href);
			var strNewHREF = self.opener.location.href;
				
			if ( strHREF.indexOf("?") > -1 ) {
				strNewHREF += "&";
			}
			else {
				strNewHREF += "?";
			}
			self.opener.location.href = strNewHREF + 'Time=' + escape(new Date());
		}
	}
}

function addQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue) {
	var strQueryString = new String(strQS);

	if (blnEncodeValue == null) {
		blnEncodeValue = false;
	}
	
	if (strQueryString.indexOf("?") == -1) {
		strQueryString += "?";
	}
	else {
		strQueryString += "&";
	}
	
	strQueryString += strParamName + "="
	if (blnEncodeValue) {
		strParamValue += escape(strParamValue);
	}
	strQueryString += strParamValue;
	
	return strQueryString;
}

function setQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue) {
	strQS = deleteQueryStringParam(strQS, strParamName);
	strQS = addQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue);
	return strQS;
}

function deleteQueryStringParam(strQS, strParamName) {
	var strQueryString = new String(strQS);
	var intParamStart  = 0;
	var intParamEnd    = 0;
	
	//is this parameter in query string?
	if (strQueryString.indexOf(strParamName + "=") > -1) {
		//make sure this is the right parameter, it should be preceded with & or ?
		intParamStart = strQueryString.indexOf("?" + strParamName + "=");
		if (intParamStart == -1) {
			intParamStart = strQueryString.indexOf("&" + strParamName + "=");
		}
		if (intParamStart > -1) {
			//the end of paramname=paramvalue group
			//either followed by & or end of query string
			intParamEnd = strQueryString.indexOf("&",intParamStart + 1);
			
			strQueryString = strQueryString.substring(0,intParamStart);
			if (intParamEnd > -1) {
				strQueryString += strQueryString.substring(intParamEnd);
			}
			
		}
	}
	return strQueryString;
}

function setRefresh(strQS) {
	return setQueryStringParam(strQS, "Time", new Date(), true);
}

function addQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue) {
	var strQueryString = new String(strQS);

	if (blnEncodeValue == null) {
		blnEncodeValue = false;
	}
	
	if (strQueryString.indexOf("?") == -1) {
		strQueryString += "?";
	}
	else {
		strQueryString += "&";
	}
	
	strQueryString += strParamName + "="
	if (blnEncodeValue) {
		strParamValue += escape(strParamValue);
	}
	strQueryString += strParamValue;
	
	return strQueryString;
}

function setQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue) {
	strQS = deleteQueryStringParam(strQS, strParamName);
	strQS = addQueryStringParam(strQS, strParamName, strParamValue, blnEncodeValue);
	return strQS;
}

function deleteQueryStringParam(strQS, strParamName) {
	var strQueryString = new String(strQS);
	var intParamStart  = 0;
	var intParamEnd    = 0;
	
	//is this parameter in query string?
	if (strQueryString.indexOf(strParamName + "=") > -1) {
		//make sure this is the right parameter, it should be preceded with & or ?
		intParamStart = strQueryString.indexOf("?" + strParamName + "=");
		if (intParamStart == -1) {
			intParamStart = strQueryString.indexOf("&" + strParamName + "=");
		}
		if (intParamStart > -1) {
			//the end of paramname=paramvalue group
			//either followed by & or end of query string
			intParamEnd = strQueryString.indexOf("&",intParamStart + 1);
			
			strQueryString = strQueryString.substring(0,intParamStart);
			if (intParamEnd > -1) {
				strQueryString += strQueryString.substring(intParamEnd);
			}
			
		}
	}
	return strQueryString;
}

function setRefresh(strQS) {
	return setQueryStringParam(strQS, "Time", new Date(), true);
}

function RedirectParent(strURL){
    var strOriginal = ""
    if (!self.opener.closed){
        if( strURL != "" ){
            self.opener.location = setQueryStringParam(strURL, "Time", new Date(), true);
        } else {
            self.opener.location = setQueryStringParam( self.opener.location.pathname, "Time", new Date(), true);
        }
    }
}

function CloseCurentWindowAndRedirectFromParent(strURL) {
	if (self.opener != null) {
	    RedirectParent(strURL);
		CloseCurrentWindow();
	}
	else {
		RedirectToURL(strURL);
	}
}

function FocusParent(){
    if( !self.opener.closed ){
        self.opener.focus();
    }
}

function closeCurrentWindowAndFocusParent(){
    FocusParent();
    CloseCurrentWindow();       
}

/*********************************************************************
'***    Program: PopupWindow( strURL, strWindow, nWidth, nHeight )
'***    Type: Function
'***
'***    Function: Pops up a new window with displaying the URL passed
'***
'***    Parameters: 
			url - url to use for popup
			width  - window width (optional) default = 40% of document client width
			height - window height (optional) default = 60% of document client height
			windowName - name of window to use (optional) default="new"

'***
'***
'***    Returns: window object representing the newly opened window
'***    Remarks: none
'***
'***    Created by: dimab
'***    Changed by: dimab
'***    Last change: 12/14/08
'*********************************************************************/
function PopupWindow( url, width, height, windowName ) {
	var SE_SUPPORTS_POPUPS = true;
	var Popup = null;
	
   //Default Page
	if (windowName == null)
		windowName = "New";

	//Default Width
	if (width == null)
		width =  screen.availWidth * 0.4;

	//Default Height
	if (height == null)
		height = screen.availHeight * 0.6;


	if (SE_SUPPORTS_POPUPS == (true || null || "")){
	 	Popup = window.open( url, windowName,"toolbar=yes,location=no,directories=yes,status=yes,scrollbars=yes,resizable=yes,width="+width.toString()+",height="+height.toString()+ ",menubar=yes");
	 	Popup.focus();
	}
	else {
	     window.location.href = url;
	}
}


/*********************************************************************
***	Function: configures back/close button on pages depending on history status
***	
***	Parameters: none
***	
***
***	Remarks: 1. assumes that /ClientScripts/navigationLib.js is included
***			2. requires button with ID ="Back"
***
***	Created by: dimab
***	Modified by: dimab
***	Last modified: 12/14/2008
***
*********************************************************************/
function configureBackButton( id ) {
	if (id==null) id = "Back";

	var btn = document.getElementById(id);
	if (btn != null) {
		if (history.length > 0) {
			btn.value = "Back";
			btn.onclick = function() {history.back();}
		}
		else {
			btn.value = "Close";
			btn.onclick = function() {window.close();}
		}
	}
}


