/*
	# Copyright 2007 Vembu Technologies. All Rights Reserved.
	# This software is the property of Vembu Technologies Distribution
	# or deployment of the source or derived binaries of this
	# software are not permitted without a OEM or distribution
	# license from Vembu Technologies.
	# --------------------------------------------------------
	# $Id: utility.js,v 1.1 2010/05/11 15:06:27 maheshwaran Exp $
	# --------------------------------------------------------
*/

function openWindow(theURL,winName,width,height) 
{ 
    var left = Math.floor( (screen.width - width) / 2);
    var top = Math.floor( (screen.height - height) / 2);
    var winParms = "'top=" + top + ",left=" + left + ",height=" + height + ",width=" + width +",scrollbars=1"+"'";
    //	if (parms) { winParms += "," + parms; }
	//winParms += "," +"" ;
    window.open(theURL, winName, winParms);
}

// Methods for Check Box Selection

function ToggleAll(field)
{
	if (field.checked) 
		checkAll();
	else 
		clearAll();
}

function checkAll()
{
	var d = document.events;
	var len = d.elements.length;

	for (var i = 0; i < len; i++) 
	{
		var field = d.elements[i];
		if (field.name == "eventId") 
			field.checked = true;
	}
	d.allEventId.checked = true;
}

function clearAll()
{
	var d = document.events;
	var len = d.elements.length;

	for (var i = 0; i < len; i++) 
	{
		var field = d.elements[i];
		if (field.name == "eventId") 
			field.checked = false;
	}
	d.allEventId.checked = false;
}

function diskSpaceInfo()
{
	//var svrTgtMachine = document.serverConfiguration.serverName.value ;
	var svrTgtMachine = document.serverConfiguration.tmpServerName.value ;
	var svrClientMachine = document.serverConfiguration.clientName.value ;

	document.write("<form name=srvConfig method=post action='serveradminconfiguration.sgp'>") ;
	document.write("<input type=hidden name=svrConfigStatus value=\"True\" >") ;
	document.write("<input type=hidden name=svrServerMachine value='"+svrTgtMachine+"' >") ;
	document.write("<input type=hidden name=svrClientMachine value='"+svrClientMachine+"' >") ;
	document.write("<font face='arial' style='font-size:11px;font-weight:bold;'>Loading ... </font>");
	document.write("</form>") ;
	document.write("<script>document.srvConfig.submit();</script>");
}

function isNumber(field) 
{
	var str = trim(eval(field).value);
	if(/^[-+]?\d+(\.\d+)?$/.test(str))
	{
		if(str > 0)
		{
			return true;
		}
		else
		{
			alert("Enter positive value for "+ field.name);
		}
	}
	else
	{
		alert("Please enter integer value for '" + field.name +"'");
	}
	eval(field).value = "";
	eval(field).focus();
	return false;
}


function trim(s) 
{
	return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}


function getFormGroup(name) {
        return document.getElementsByName(name);
}


function getSelect(id)        /* use getElementById() instead of the getFormGroup */
{

        element = document.getElementById(id);

        selected = new Array();        /* create a temp array */

        if (element)

        for (i = 0; i < element.options.length; i++)

        if (element.options[i].selected)
                selected.append(element.options[i])        /* this could be an empty array */
 return selected;
}


function getSelectValue(id) { /* get all the selected options */
        options = getSelect(id);
        values = new Array();  /* create a temporary array for return */

        for (i = 0; i < options.length; i++)
                values.append(options[i].value);        /* this could be an empty array */
        return values;
}


function getSelectServer(id)        /* use getElementById() instead of the getFormGroup */
{
	//alert(id);

        element = document.getElementById(id);

        selected = new Array();        /* create a temp array */

        if (element)
var count1 = 0;
        for (i = 0; i < element.options.length; i++)
	{
		  if (element.options[i].selected)
		{
		          selected[count1] = element.options[i] ;
				cournt1 =count1 + 1;
		}
	}/* this could be an empty array */
	//alert("returning");
 return selected;
}

function getSelectServerValue(id) { /* get all the selected options */
        options =  getSelectServer(id);
        values = new Array();  /* create a temporary array for return */
var count1 = 0;
        for (i = 0; i < options.length; i++)
	{
                values[count1]= options[i].value;        /* this could be an empty array */
				count1 = count1 + 1;

	}
        return values;
}
// Methods for Restore File


function isValidIPAddress(ipaddr) {
   var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
   if (re.test(ipaddr)) {
      var parts = ipaddr.split(".");
      if (parseInt(parseFloat(parts[0])) == 0) { return false; }
      for (var i=0; i<parts.length; i++) {
         if (parseInt(parseFloat(parts[i])) > 255) { return false; }
      }
      return true;
   } else {
      return false;
   }
}

function checkInteger(inputStr)
{
	if ( !isNaN(inputStr) && !isNaN(parseInt(inputStr)) && (parseInt(inputStr) > 0) && parseInt(inputStr) == inputStr)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isAlphaNumeric(inputStr)
{
	if (inputStr.match(/^[a-zA-Z0-9]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isValidName(inputStr)
{
	if (inputStr.match(/^[a-zA-Z0-9 _.-]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function isValidNumber(inputStr)
{
	if (inputStr.match(/^[0-9]+$/))
	{
		return true;
	}
	else
	{
		return false;
	}	
}

function daysInFebruary (year)
{
	days = 28;
	if( ( (year % 4 == 0) && ( ( !(year % 100 == 0) ) || (year % 400 == 0) ) ) )
	{
		days = 29;
	}
	return days;
}

function DaysArray(n) 
{
	for (var i = 1; i <= n; i++) 
	{
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) 
		{
			this[i] = 30;
		}
		if (i==2) 
		{
			this[i] = 29;
		}
    }
    return this;
}

function isDate(strMonth, strDay, strYr)
{
	var daysInMonth = DaysArray(12);
	dateObj = new Date();
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	minYear = dateObj.getYear();
	msg = "";

	if (month < 1 || month > 12)
	{
		msg = lang_util_ary[3];
	}	
	if (day < 1 || day > 31 || (month==2 && day > daysInFebruary(year) ) || day > daysInMonth[month])
	{
		msg = lang_util_ary[4];
	}	
	if (year==0 || year < minYear || year > 2035)
	{
		msg = lang_util_ary[5];
	}
	return msg;
}

function checkLicenseFields()
{
	d = document.registerLicense;
	nc = trim(d.totalClient.value);

	if ( (trim(d.userName.value) == "") )// || ( !isValidName( trim(d.userName.value) )) )
	{
		alert(lang_serveradmin_ary[10]);
		d.userName.value = trim(d.userName.value);
		d.userName.focus();
		d.userName.select();
		return false;
	} else {
		d.userName.value = trim(d.userName.value);
	}

	if( ( (trim(d.licenseKey1.value) == "" ) || ( !isAlphaNumeric( trim(d.licenseKey1.value) )) ) ||
		( (trim(d.licenseKey2.value) == "" ) || ( !isAlphaNumeric( trim(d.licenseKey2.value) )) ) ||
		( (trim(d.licenseKey3.value) == "" ) || ( !isAlphaNumeric( trim(d.licenseKey3.value) )) ) ||
		( (trim(d.licenseKey4.value) == "" ) || ( !isAlphaNumeric( trim(d.licenseKey4.value) )) )
	  )
	{
		alert(lang_serveradmin_ary[11]);
		d.licenseKey1.value = trim(d.licenseKey1.value);
		d.licenseKey2.value = trim(d.licenseKey2.value);
		d.licenseKey3.value = trim(d.licenseKey3.value);
		d.licenseKey4.value = trim(d.licenseKey4.value);
		d.licenseKey1.focus();
		d.licenseKey1.select();
		return false;
	}
	if ( (trim(d.totalClient.value) == "" ) || (checkInteger(nc) == false) )
	{
		alert(lang_serveradmin_ary[12]);
		d.totalClient.value = trim(d.totalClient.value);
		d.totalClient.focus();
		d.totalClient.select();
		return false;
	}

	day   = d.expiryDay.value;
	month = d.expiryMonth.value;
	year  = d.expiryYear.value;

	result = isDate(month, day, year);
	if(result.length > 0)
	{
		alert(result);
		return false;
	}

	return true;
}

function moveSelectedOptions(from,to) {
	// Unselect matching options, if required
	if (arguments.length>3) {
		var regex = arguments[3];
		if (regex != "") {
			unSelectMatchingOptions(from,regex);
			}
		}
	// Move them over
	if (!hasOptions(from)) { return; }
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (!hasOptions(to)) { var index = 0; } else { var index=to.options.length; }
			to.options[index] = new Option( o.text, o.value, false, false);
			}
		}
	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
			from.options[i] = null;
			}
		}
	if ((arguments.length<3) || (arguments[2]==true)) {
		sortSelect(from);
		sortSelect(to);
		}
	from.selectedIndex = -1;
	to.selectedIndex = -1;
}

function sortSelect(obj) 
{
	var o = new Array();
	if (!hasOptions(obj)) { return; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
		}
	if (o.length==0) { return; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
			} 
		);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}

function hasOptions(obj) {
	if (obj!=null && obj.options!=null) { return true; }
	return false;
}

function SubmitJobListForNavigation(startRecordNo) 
{
	document.jobnav.startRowNo.value = startRecordNo;
	SendRestoreDetails(0);  
	//document.jobnav.submit(); 
}

/*
 *  Function Name	: SubmitActionForm()
 *
 *  Args      		: JobAction, BackupName, ConfirmSuspend, ScreenFrom, ActionColumn, ElemId
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To process the submitted actions for the backup schedule.
 *
 *  Docs      		: JobList.sgp
 *
 *  Bugs      		:
 *****************************************************************************/
function SubmitActionForm(jobAction, backupSchName, confirmSuspend, frmWhScr, actionRow, elemId, isLocal)
{
	if(frmWhScr == 1 || frmWhScr == 2 || frmWhScr == 3 || frmWhScr == 8)
	{
		if (t)
		{
			alert(lang_ary['busy_http_request']);
			return false;
		}
	}
	if (frmWhScr==1 || frmWhScr==2 || frmWhScr==8)
	{
		d = document.jobnav;
	}
	else if(frmWhScr==3)
	{
		d = document.job;
	}
	else if(frmWhScr==6)
	{
		d = document.diskutil;
	}
	else if(frmWhScr==7)
	{
		d = document.edtBkup;
	}

	if(jobAction == 1 && confirmSuspend == 1 && frmWhScr == 1)
	{
		if(!confirm(lang_ary[54]))
		return false;
	}
	else if(jobAction == 4 && frmWhScr == 1)
	{
		if(!confirm(lang_ary[55]))
		return false;
	}
	else if(jobAction == 0 && frmWhScr==2)
	{
		if(!confirm(lang_ary['abort_restore']))
		return false;
	}
	else if(jobAction == 0 && frmWhScr == 3)
	{
		if(!confirm(lang_ary['sus_res_repln']))
		return false;
	}
	else if(jobAction == 2 && frmWhScr == 3)
	{
		if(!confirm(lang_ary['abort_backup']))
		return false;
	}
	else if(jobAction == 3 && frmWhScr == 3)
	{
		if(!confirm(lang_ary['abort_clntside_rest_from_svr']))
		return false;
	}
	else if(jobAction == 4 && frmWhScr==3)
	{
		if(!confirm(lang_ary['abort_restore']))
		return false;
	}
	else if(jobAction == 5 && frmWhScr==3)
	{
		if(!confirm(lang_ary['replic_now']))
		return false;
	}
	else if(jobAction == 4 && frmWhScr==7)
	{
		if(!confirm(lang_ary[55]))
		return false;
	}
	else if(jobAction == 6 && frmWhScr==3)
	{
		if(!confirm(lang_ary['svr_res_restore_confirm']))
		return false;
	}
	if(jobAction == 1 && confirmSuspend == 1 && frmWhScr == 7)
	{
		if(!confirm(lang_ary[54]))
		return false;
	}
	document.getElementById('errorDiv').style.display='none';
	document.getElementById('sucessDiv').style.display='none';

	var actImgName = actionRow + elemId;
	if (actionRow=='sn') {
		document.getElementById('imgSchNowPrg'+actImgName).style.display='';
		document.getElementById('imgSchNow'+actImgName).style.display='none';
	} else if(actionRow=='sr') {
		document.getElementById('imgSusResPrg'+actImgName).style.display='';
		document.getElementById('imgSusRes'+actImgName).style.display='none';
	} else if(actionRow=='abr') {
		document.getElementById('imgAbortPrg'+actImgName).style.display='';
		document.getElementById('imgAbort'+actImgName).style.display='none';
	} else if (actionRow == 'rstres') {
		document.getElementById('imgRestorePrg'+actImgName).style.display='';
		document.getElementById('imgRestore'+actImgName).style.display='none';
	} else if(actionRow=='srab') {
		document.getElementById('imgSerAbrPrg'+actImgName).style.display='';
		document.getElementById('imgSerAbr'+actImgName).style.display='none';
	} else if(actionRow=='rep') {
		document.getElementById('imgSusResRepPrg'+actImgName).style.display='';
		document.getElementById('imgSusResRep'+actImgName).style.display='none';
	} else if(actionRow=='rn') {
		document.getElementById('imgRepNowPrg'+actImgName).style.display='';
		document.getElementById('imgRepNow'+actImgName).style.display='none';
	} else if(actionRow=='res') {
		document.getElementById('resetProg'+actImgName).style.display='';
		document.getElementById('resetIcon'+actImgName).style.display='none';
	} else if(actionRow=='viewSchNow') {
		document.getElementById('viewSchNow').style.display='none';
		document.getElementById('viewSchNowProg').style.display='';
	} else if(actionRow=='viewSuspendBkup') {
		document.getElementById('viewSusRes').style.display='none';
		document.getElementById('viewSusResProg').style.display='';
	} else if(actionRow=='viewResumeBkup') {
		document.getElementById('viewSusRes').style.display='none';
		document.getElementById('viewSusResProg').style.display='';
	} else if(actionRow=='resSvrRst') {
		document.getElementById('imgResRestore'+elemId).style.display='none';
		document.getElementById('imgResRestorePrg'+elemId).style.display='';
	}
	if (t) 	{ window.clearTimeout(t); }
	req = GetXmlHttpRequestObject();
	if (req)	
	{	
		req.onreadystatechange = GetActionResult;

		if(frmWhScr == 1 || frmWhScr == 2 || frmWhScr == 3)
		{
			formPostData = 'ja=' + jobAction;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'bkn=' + backupSchName;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'scr=' + frmWhScr;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'acl=' + actionRow;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'elm=' + elemId;
			formPostData = formPostData + '&';
		//	formPostData = formPostData + 'ClusterIP=' + d.clusterIP.value;
		//	formPostData = formPostData + '&';
		//	formPostData = formPostData + 'portNumber=' + d.portNumber.value;
		//	formPostData = formPostData + '&';
			if(frmWhScr == 3) {			
				formPostData = formPostData + 'grpName=' + d.clientName.value;
			}
			else {
				formPostData = formPostData + 'grpName=' + d.grpName.value;
			}
			if(jobAction == 6)
			{
				formPostData = formPostData + '&';
				formPostData = formPostData + 'serverName=' + d.hidServerName.value;
				formPostData = formPostData + '&';				
				formPostData = formPostData + 'clntGrpId=' + d.clientId.value;
				formPostData = formPostData + '&';
				formPostData = formPostData + 'parGrpId=' + d.parId.value;
			}
		}
		else if(frmWhScr == 6)
		{
			formPostData = 'actNum=' + jobAction;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'elemId=' + elemId;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'txtServerName=' + d.txtServerName.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'txtSystemID=' + d.txtSystemID.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'txtTabNo=' + d.txtTabNo.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'jobType=' + d.jobType.value;
		}
		else if(frmWhScr == 7)
		{
			formPostData = 'ja=' + jobAction;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'bkn=' + backupSchName;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'scr=' + frmWhScr;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'acl=' + actionRow;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'elm=' + elemId;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'grpName=' + d.grpName.value;
		}
		else if(frmWhScr == 8)
		{
			formPostData = 'ja=' + jobAction;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'bkn=' + backupSchName;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'txtServerName=' + d.txtServerName.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'scr=' + frmWhScr;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'acl=' + actionRow;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'elm=' + elemId;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'grpName=' + d.grpName.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'isLocal=' + isLocal;
		}
		
		if(frmWhScr == 3 && jobAction == 5 && actionRow=='rn')
		{
			formPostData = formPostData + '&';
			formPostData = formPostData + 'clusterIP=' + d.clusterIP.value;
			formPostData = formPostData + '&';
			formPostData = formPostData + 'portNumber=' + d.portNumber.value;
		}
		req.open("POST", d.httpdFile.value, true); 
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
		req.send(formPostData);
	}
	t = window.setTimeout("ClearActionResult('"+actionRow+"', '"+elemId+"');", SG_WIN_CLEAR_TIME_OUT);
//	document.jobnav.jobAction.value = jobAction
//	document.jobnav.actionBackupName.value = backupSchName
//	document.jobnav.submit(); 
}
/*
 ******************** SubmitActionForm Method ends here  ******************/

function FillJobSelectedValues(jobName, jobServerNames, jobDeletedServerNames, jobType, bkupJobType, isSelfBkup)
{
	if(trim(jobType) == 4)//restore
	{
		/* */		
		if(trim(isSelfBkup) == 1 && SG_HOME_EDN == 0)
		{
			alert(lang_alert_ary['rst_local_bkp']);
			return false;
		}
		/* */
	}
	document.job.selectedJob.value = "";
	document.job.selectedServerName.value = "";
	document.job.deletedServers.value = "";
	document.job.jobType.value = "";
	document.job.selectedJob.value = jobName;
	document.job.selectedServerName.value =jobServerNames;
	document.job.deletedServers.value = jobDeletedServerNames;
	document.job.jobType.value = jobType;
	document.job.bkupJobType.value = bkupJobType;
	document.job.submit();
}

function switchToPeer(peerMachine)
{
	docForm = document.peer_form;
	var sgMachineNameValue = docForm.machineName.value; 
	if (sgMachineNameValue == peerMachine)
	{
		alert(lang_util_ary[6]);
		return false;
	}
	if(sgMachineNameValue == "SG_Mc")
	{
		alert(lang_util_ary[7]);
		return false;
	}
}		
function FileSizeConversion(size) 
{
	var units = new Array(' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
	for (i = 0; size > 1024; i++) 
	{ 
		size /= 1024; 
	}
	return (Math.round(size*100)/100)+units[i];
}

function reloadclose(){
	parent.window.opener.document.location.reload();
	window.close();
}

function LeadingZeros(x) {
    return (x < 0 || x >= 10 ? "" : "0") + x;
}

function Seconds2String(Secs) {
	T1 = '';
	if(parseInt(Secs) >= 86400) {  
	   T1 = Math.floor(Secs / 86400) + lang_text_ary['Days'] + " , ";		   
	   Secs = Math.floor(Secs % 86400);
	}
	T1 += LeadingZeros(Math.floor(Secs / 3600)) + ":" + LeadingZeros(Math.floor((Secs / 60) % 60)) + ":" + LeadingZeros(Math.floor(Secs % 60));
	return T1;
}

function ShowPageHelp()
{	
	var helpCnt = document.getElementById('helpContent').value;
	var openUrl = ROOT_PATH + pagehelpArr[helpCnt];	
	var helpWindow = window.open(openUrl,'PageHelp','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=yes,left=200,top=200,width=600,height=400');
	if (window.focus) { helpWindow.focus(); }
} 

function in_array(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) {
            return true;
        }
    }
    return false;
}

function CallScroll(div1,div2,div3,showHideVal)
{
	if(showHideVal==1)
	{
		document.getElementById(div3).style.display="none";
		document.getElementById(div1).style.display="";
		ScrollOut(div1,div2);
	}
	else
	{
		document.getElementById(div3).style.display="";
		document.getElementById(div3).style.height="420px";
		ScrollIn(div1,div2);
	}
}

function ScrollOut(minDiv,maxDiv)
{
	clearTimeout(pid);
	if(this.expandLevel<1)
	{
		this.expandLevel=0;
	}
	var curMaxWidth = parseInt(document.getElementById(maxDiv).style.width);
	var curMinWidth = parseInt(document.getElementById(minDiv).style.width);
	var minusValue = curMaxWidth - expandLevel;
	if(curMinWidth < defaultMinDivWidth)
	{
		document.getElementById(minDiv).style.width = expandLevel + "%";
		if(parseInt(document.getElementById(minDiv).style.width) > defaultMinDivWidth) {
			document.getElementById(minDiv).style.width = defaultMinDivWidth + "%";
		}
		document.getElementById(maxDiv).style.width = minusValue + "%";
		if(parseInt(document.getElementById(maxDiv).style.width) < defaultMaxDivWidth) {
			document.getElementById(maxDiv).style.width = defaultMaxDivWidth + "%";
		}
		expandLevel+=speed;
		pid=setTimeout('ScrollOut("' + minDiv + '","' + maxDiv + '")', 15);
	}
}

function ScrollIn(minDiv,maxDiv)
{
	clearTimeout(pid);
	if(this.expandLevel>defaultMinDivWidth)
	{
		this.expandLevel=defaultMinDivWidth;
	}
	var plusValue = defaultMinDivWidth - expandLevel;
	if( expandLevel >= 0)
	{
		document.getElementById(minDiv).style.width = expandLevel + "%";
		document.getElementById(maxDiv).style.width = parseInt(defaultMaxDivWidth) + parseInt(plusValue) + "%";
		if(parseInt(document.getElementById(maxDiv).style.width) >= 97) {
			document.getElementById(maxDiv).style.width = "98%";
			document.getElementById(minDiv).style.display="none";
		}
		expandLevel-=speed;
		pid=setTimeout('ScrollIn("' + minDiv + '","' + maxDiv + '")', 15);
	}
}

function FindElementPos(obj) {
	var retArr = new Array;
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	retArr[0] = curleft;
	retArr[1] = curtop;
	return retArr;
}

function HideSelectsUnderDIV(divElemId,selStatus)
{
	var divWidth = divHeight = divPos = "";
	var fromX = fromY = toX = toY = "";
	var selBoxes = selPos = selX = selY = "";
	var IE7 = (navigator.userAgent.indexOf("MSIE 7") != -1)? 1 : 0;
	
	if(IE7) return;

	divPos = FindElementPos(document.getElementById(divElemId));
	divW = document.getElementById(divElemId).offsetWidth;
	divH = document.getElementById(divElemId).offsetHeight;
	divX = divPos[0];
	divY = divPos[1];

	selBoxes = document.getElementsByTagName('select');
	for(i=0; i<selBoxes.length; i++)
	{
		selPos = FindElementPos(selBoxes[i]);
		selX = selPos[0];
		selY = selPos[1];
		selW = selBoxes[i].offsetWidth;
		selH = selBoxes[i].offsetHeight;

		if((selX + selW) > divX && selX < (divX + divW) && (selY + selH) > divY && selY < (divY + divH))
			document.getElementsByTagName('select')[i].style.visibility=selStatus;
	}
}

function SetOpacity(obj, opacity)
{
  opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
  obj.style.filter = "alpha(opacity:"+opacity+")";
  
  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

function FadeIn(objId,opacity)
{
	//window.clearTimeout();
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
		  SetOpacity(obj, opacity);
		  opacity += 25;
		  window.setTimeout("FadeIn('"+objId+"',"+opacity+")", 100);
		}
	}
}

function FadeOut(objId,opacity)
{
	//window.clearTimeout();
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity >= 0) {
		  SetOpacity(obj, opacity);
		  opacity -= 20;
		  window.setTimeout("FadeOut('"+objId+"',"+opacity+")", 100);
		}
	}
}

var timeOut = null;
var MSIE = (navigator.userAgent.indexOf("MSIE") != -1)? 1 : 0;

function SetToolTipPos(event)
{
	var xpos = (typeof(xPos) != "undefined")? xPos : 150;
	var ypos = (typeof(yPos) != "undefined")? yPos : 15;
	if(event.clientX || event.clientY) {
		x = event.clientX;
		y = event.clientY;
	}
	else if(event.pageX || event.pageY) {
		x = event.pageX;
		y = event.pageY;
	}
	divElem = document.getElementById('toolTip');
	divElem.style.left = x - xpos;
	divElem.style.top = y + ypos;
	if(MSIE) HideSelectsUnderDIV('toolTip','hidden');
	//timeOut = window.setTimeout("SetToolTipPos('"+event+"')", 100);
}

function SetServerToolTipPos(event,textfield, xPosDiff, yPosDiff)
{
	divElem = document.getElementById('toolTip');   
//	divElem.style.left = FindElementPos(textfield)[0];
//	divElem.style.top  = FindElementPos(textfield)[1]+25;
	if(event.layerX || event.layerY)
	{
		divElem.style.left = event.layerX-xPosDiff;
		divElem.style.top  = event.layerY+yPosDiff;
	}
	else
	{
		divElem.style.left = event.x-xPosDiff;
		divElem.style.top  = event.y+yPosDiff;
	}
	//alert(divElem.style.left);		
	
	if(MSIE) HideSelectsUnderDIV('toolTip','hidden');
	//timeOut = window.setTimeout("SetToolTipPos('"+event+"')", 100);
}

function ClearToolTipPos()
{
	if(timeOut) clearTimeout(timeOut);
	if (document.getElementById('toolTip').style.display=="")
	{
		FadeOut('toolTip', 80);
		window.setTimeout("document.getElementById('toolTip').style.display='none';", 500);
	}
	if(MSIE) HideSelectsUnderDIV('toolTip','visible');
}

function ChangeElemContent(txtcontent,htmlElem)
{
	var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;

    if(!hasInnerText){
        htmlElem.textContent = txtcontent;
    } else {
        htmlElem.innerText = txtcontent;
    }
}

function BlinkIt(spanId)
{
	document.getElementById(spanId).style.visibility = (document.getElementById(spanId).style.visibility=='visible')?'hidden':'visible';
}

function SetScrollPosition()
{
	 document.body.scrollTop=window.parent.document.getElementById('iframeVerPos').value; 
	 document.body.scrollLeft=window.parent.document.getElementById('iframeHorPos').value;
}

function CheckVersionMinVal(Obj,minVal)
{
	if(!isValidNumber(Obj.value)) {
		alert(lang_new_alert_ary['invalid_version_alert']);
		Obj.focus();
		Obj.select();
		return false;
	}	
	else if(Obj.value < minVal) {
		alert(lang_new_alert_ary['min_version_alert'] + minVal);
		Obj.value = minVal;
		Obj.focus();
		return false;
	}
 return true;
}

function GetXmlHttpRequestObject()
{
	var request = "";

	if (window.XMLHttpRequest) // For Safari, Firefox, and other non-MS
	{
		try {
		  request = new XMLHttpRequest();
		} 
		catch (e) {
		  request = false;
		}
	} 
	else if (window.ActiveXObject) // For Internet Explorer on Windows
	{
		try {
		  request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
				request = false;
			}
		}
	}

	return request;
}

function CheckRescheduleAttemptCount(Obj, minVal, maxVal)
{
	if((!isValidNumber(Obj.value)) || (parseInt(Obj.value,10) < minVal ) && Obj.value != -1) 
	{
		alert(lang_new_alert_ary['resch_invalid_cnt_alert']);
		Obj.value = minVal;
		Obj.focus();
		return false;
	}
	if(parseInt(Obj.value,10) > maxVal)
	{
		alert(lang_new_alert_ary['resch_max_cnt_alert'] + maxVal);
		Obj.focus();
		Obj.select();
		return false;
	}	
	return true;
}
/*
 *  Function Name	: GetActionResult()
 *
 *  Args      		: 
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To Process the response text received from server.
 *
 *  Docs      		: JobList.sgp
 *
 *  Bugs      		:
 *****************************************************************************/
function GetActionResult()
{
	if (req.readyState == 4)
	{
		if (req.status == 200)
		{
			if (req.responseText) {
				var decObj = eval("(" + req.responseText + ")");
				if (trim(decObj.res) != "=" && decObj.scr != 5 && decObj.scr != 7)
				{					
//					document.getElementById('divRsltMsg').innerHTML=decObj.res;
//					document.getElementById('divRsltMsg').style.display='';
//					alert(decObj.res);
					document.getElementById('errorDiv').style.display='none';
					document.getElementById('sucessDiv').style.display='none';					
					if (decObj.rno == 1)
					{
						document.getElementById('errorDiv').style.display='';			
						document.getElementById('errorMsg').innerHTML = decObj.res;
						document.getElementById('divRsltMsg').style.display='';
					}
					else if (decObj.rno == 0 && decObj.scr != 6 && decObj.scr != 3 && decObj.scr != 1 && decObj.scr != 2)
					{
						document.getElementById('sucessDiv').style.display='';			
						document.getElementById('successMsg').innerHTML = decObj.res;
						document.getElementById('divRsltMsg').style.display='';
					}
				}
				else if(trim(decObj.res) != "=" && decObj.scr == 5)
				{
					//alert(trim(decObj.res));
					var msg = trim(decObj.res);
					msg = msg.replace(/&#39;/g, "'");
					alert(msg);
					if(decObj.rno == 0)
					{
						ShowHideMonthYearRow(decObj.sid);
					}
					else
					{
						document.getElementById("imgProg"+decObj.sid).style.display = "none";
						document.getElementById("reportSave"+decObj.sid).style.display = "";
						document.getElementById("reportCancel"+decObj.sid).style.display = "";
						document.getElementById("txtFromDate"+decObj.sid).value = "";
						document.getElementById("txtToDate"+decObj.sid).value = "";
					}
				}
				else if(trim(decObj.res) != "=" && decObj.scr == 7)
				{
					if(trim(decObj.sch)=='viewSchNow')
					{
						if(decObj.rno == 0) {
							document.getElementById('viewSchNowProg').style.display='none';
							document.getElementById('viewSchNow').style.display='none';
						} else {
							document.getElementById('viewSchNowProg').style.display='none';
							document.getElementById('viewSchNow').style.display='';
						}
					}
					else if(trim(decObj.sch)=='viewSuspendBkup')
					{
						var BkupJobName=document.getElementById('selectedJob').value;
						document.getElementById('viewSusResProg').style.display='none';
						document.getElementById('viewSusRes').style.display='';
						if(decObj.rno == 0)
						{
							document.getElementById('btnSusResBkup').value=RESUMELABEL;
							document.getElementById('btnSusResBkup').onclick=function(){ SubmitActionForm('2', BkupJobName, '0', 7, 'viewResumeBkup', '', ''); };
							document.getElementById('suspendBkupState').innerHTML=YESLABEL;
							document.getElementById('spanSchNowBtn').style.display='none';
						}
					}
					else if(trim(decObj.sch)=='viewResumeBkup')
					{
						var BkupJobName=document.getElementById('selectedJob').value;
						document.getElementById('viewSusResProg').style.display='none';
						document.getElementById('viewSusRes').style.display='';
						if(decObj.rno == 0)
						{
							document.getElementById('btnSusResBkup').value=SUSPENDLABEL;
							document.getElementById('btnSusResBkup').onclick=function(){ SubmitActionForm('1', BkupJobName, '1', 7, 'viewSuspendBkup', '', ''); };
							document.getElementById('suspendBkupState').innerHTML=NOLABEL;
							document.getElementById('viewSchNowProg').style.display='none';
							document.getElementById('viewSchNow').style.display='';
							document.getElementById('spanSchNowBtn').style.display='';
						}
					}
					alert(trim(decObj.res));
				}
				var actImgName = decObj.sch+decObj.sid;
				if (trim(decObj.sch)=='sn') {
					document.getElementById('imgSchNowPrg'+actImgName).style.display='none';
					if (decObj.rno==1)
					{
						document.getElementById('imgSchNow'+actImgName).style.display='';
					}
				} else if(trim(decObj.sch)=='sr') {
					document.getElementById('imgSusResPrg'+actImgName).style.display='none';
					if (decObj.rno==1)
					{
						document.getElementById('imgSusRes'+actImgName).style.display='';
					}
				} else if(trim(decObj.sch)=='abr') {
					document.getElementById('imgAbortPrg'+actImgName).style.display='none';
					document.getElementById('imgAbort'+actImgName).style.display='none';
				} else if(trim(decObj.sch)=='rstres') {
					document.getElementById('imgRestorePrg'+actImgName).style.display='none';
					document.getElementById('imgRestore'+actImgName).style.display='';
				} else if(trim(decObj.sch)=='srab' && decObj.rno == 1) {
					document.getElementById('imgSerAbrPrg'+actImgName).style.display='none';
					document.getElementById('imgSerAbr'+actImgName).style.display='';
				} else if(trim(decObj.sch)=='rep' && decObj.rno == 1) {
					document.getElementById('imgSusResRepPrg'+actImgName).style.display='none';
					document.getElementById('imgSusResRep'+actImgName).style.display='';
				} else if(trim(decObj.sch)=='rn' && decObj.rno == 1) {
					document.getElementById('imgRepNowPrg'+actImgName).style.display='none';
					document.getElementById('imgRepNow'+actImgName).style.display='';
				} else if(trim(decObj.sch)=='res') {
					document.getElementById('resetProg'+actImgName).style.display='none';
					document.getElementById('resetIcon'+actImgName).style.display='';
				} else if(trim(decObj.sch)=='resSvrRst') {
					document.getElementById('imgResRestorePrg'+decObj.sid).style.display='none';
					document.getElementById('imgResRestore'+decObj.sid).style.display='';
				}
				if (t) 	{ window.clearTimeout(t); }
				if((decObj.scr == 1) || (decObj.scr == 2) || (decObj.scr == 3) || (decObj.scr == 6) || (decObj.scr == 8))
				{
					if(decObj.scr == 6 && (decObj.act == 2 || decObj.act == 5) && decObj.rno == 0)
					{
							if(decObj.act == 2)
							{
								document.getElementById("successMesgStore").value = "";
								AuthorizeServerWithReplication(6);
							}
							else
							{
								document.getElementById("successMesgStore").value = "";
								AuthorizeServerWithReplication(7);
							}
							document.getElementById('sucessDiv').style.display='';			
							document.getElementById('successMsg').innerHTML = decObj.res;
							document.getElementById('divRsltMsg').style.display='';
						if (divt) 	{ window.clearTimeout(divt); }
						var timOutSecs = ((decObj.rno == 1)? SG_ACTION_FAILURE_TIME_OUT : SG_ACTION_SUCCESS_TIME_OUT); //Failure : Success;
						if(decObj.rno == 0)
						{
							divt = window.setTimeout("ClearServerSettingResultDiv("+decObj.rno+", 'divRsltMsg', "+decObj.act+");", timOutSecs);
						}
					}
					else
					{
						if (divt) 	{ window.clearTimeout(divt); }
						var timOutSecs = ((decObj.rno == 1)? SG_ACTION_FAILURE_TIME_OUT : SG_ACTION_SUCCESS_TIME_OUT); //Failure : Success;
						if(decObj.rno == 0)
						{
							divt = window.setTimeout("ClearResultDivElement("+decObj.rno+", 'divRsltMsg', "+decObj.scr+");", timOutSecs);
						}
					}
				}

			}
			/* * /
			else {
				alert(lang_restore_ary[12]); 
			}
			/* */
		}
		/* * /
		else
		{
			alert(lang_restore_ary[13]);
		}
		/* */
	}
	t = null;
}
/*
 ******************** GetActionResult Method ends here  ******************/
/*
 *  Function Name	: ClearActionResult()
 *
 *  Args      		: ActionRow & Element Id
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To clear the progress icon created for Schedule Actions.
 *
 *  Docs      		: JobList.sgp
 *
 *  Bugs      		:
 *****************************************************************************/
function ClearActionResult(actionRow, elemId)
{
	var actImgName = actionRow+elemId;
	if (actionRow=='sn') {
		if(document.getElementById('imgSchNowPrg'+actImgName) != null && document.getElementById('imgSchNow'+actImgName) != null)
		{
			document.getElementById('imgSchNowPrg'+actImgName).style.display='none';
			document.getElementById('imgSchNow'+actImgName).style.display='';
		}
	} else if(actionRow=='sr') {
		if(document.getElementById('imgSusResPrg'+actImgName) != null && document.getElementById('imgSusRes'+actImgName) != null)
		{
			document.getElementById('imgSusResPrg'+actImgName).style.display='none';
			document.getElementById('imgSusRes'+actImgName).style.display='';
		}
	} else if(actionRow=='abr') {
		if(document.getElementById('imgAbortPrg'+actImgName) != null && document.getElementById('imgAbort'+actImgName) != null)
		{
			document.getElementById('imgAbortPrg'+actImgName).style.display='none';
			document.getElementById('imgAbort'+actImgName).style.display='none';
		}
	} else if(actionRow=='srab') {
		if(document.getElementById('imgSerAbrPrg'+actImgName) != null && document.getElementById('imgSerAbr'+actImgName) != null)
		{
			document.getElementById('imgSerAbrPrg'+actImgName).style.display='none';
			document.getElementById('imgSerAbr'+actImgName).style.display='none';
		}
	} else if(actionRow=='rep') {
		if(document.getElementById('imgSusResRepPrg'+actImgName) != null && document.getElementById('imgSusResRep'+actImgName) != null)
		{
			document.getElementById('imgSusResRepPrg'+actImgName).style.display='none';
			document.getElementById('imgSusResRep'+actImgName).style.display='';
		}
	} else if(actionRow=='rn') {
		if(document.getElementById('imgRepNowPrg'+actImgName) != null && document.getElementById('imgRepNow'+actImgName) != null)
		{
			document.getElementById('imgRepNowPrg'+actImgName).style.display='none';
			document.getElementById('imgRepNow'+actImgName).style.display='';
		}
	} else if(actionRow=='res') {
		if(document.getElementById('resetProg'+actImgName) != null && document.getElementById('resetIcon'+actImgName) != null)
		{
			document.getElementById('resetProg'+actImgName).style.display='none';
			document.getElementById('resetIcon'+actImgName).style.display='';
		}
	} else if(actionRow=='resSvrRst') {
		if(document.getElementById('imgResRestorePrg'+elemId) != null && document.getElementById('imgResRestore'+elemId) != null)
		{
			document.getElementById('imgResRestorePrg'+elemId).style.display='none';
			document.getElementById('imgResRestore'+elemId).style.display='';
		}
	}
}
/*
 ******************** ClearActionResult Method ends here  ******************/
/*
 *  Function Name	: ValidateImage()
 *
 *  Args      		: Path of the Image file.
 *
 *  Returns   		: true/false
 *
 *  Task      		: To check whether the given file is an image file or not.
 *
 *  Bugs      		:
 *****************************************************************************/

function ValidateImage(imageLocation,locVal)
{
	var imagePath = imageLocation;
	var pathLength = imagePath.length;
	var lastDot = imagePath.lastIndexOf(".");
	var fileType = imagePath.substring(lastDot,pathLength);

	if (locVal == 2)
	{
		if((fileType == ".gif") || (fileType == ".GIF") || 
		(fileType == ".png") || (fileType == ".PNG") || 
		(fileType == ".JPG") || (fileType == ".jpg") ||
		(fileType == ".JPEG") || (fileType == ".jpeg") ||
		(fileType == ".JPE") || (fileType == ".jpe") ||
		(fileType == ".JFIF") || (fileType == ".jfif") ||
		(fileType == ".TIF") || (fileType == ".tif") ||
		(fileType == ".TIFF") || (fileType == ".tiff"))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else if (locVal == 3)
	{
		return true;
	}
}
/*
 ******************** ValidateImage Method ends here  ******************/
/*
*  Function Name	: ClearResultDivElement()
*
*  Args      		:	1. Result in Number.
						2. Div Element ID.
						3. Screen No.
						4. Form Obj.
*
*  Returns   		: Nothing
*
*  Task      		: To check whether the given file is an image file or not.
*
*  Bugs      		:
*****************************************************************************/
function  ClearResultDivElement(resultNo, divElemId, scrNo, frmObj)
{
	//document.getElementById(divElemId).innerHTML='';
	document.getElementById(divElemId).style.display='none';
	if (resultNo == 0) // Success
	{
		if (scrNo==1 || scrNo==2 || scrNo==8) //Joblist && Restore Joblist Screen
		{
			if(scrNo==1)
			{
				document.getElementById('imgRefresh').onclick();
			}
			else
			{
				document.jobnav.submit();
			}
		}
		else if(scrNo == 3) 
		{
			window.location.reload();	
		}
		else if(scrNo == 6) 
		{
			if(document.serverheader)
			{
				document.serverheader.tb.value = 14;
				document.serverheader.submit();
			}
			else
			{
				document.diskutil.txtServerName.value = "";
				document.diskutil.submit();
			}
		}
	}
	else if (resultNo == 1)//Failure
	{
		if (scrNo==1 || scrNo==2) //Joblist && Restore Joblist Screen
		{
//			document.jobnav.submit();
		}
		else if(scrNo == 3)
		{
			window.location.reload();	
		}
	}
}
/*
 ******************** ClearResultDivElement Method ends here  ******************/
/*
 *  Function Name	: CheckLocalBackupLocation()
 *
 *  Args      		:	1. Backup Dir.
 *						2. OS Type.
 *
 *  Returns   		: Boolean[True/False]
 *
 *  Task      		: To Validate the given Bkup Location based on the 
 *
 *  Bugs      		:
 *****************************************************************************/
function CheckLocalBackupLocation(bkupDir, sgOsType)
{	
	if(sgOsType == 1)
	{
		if(bkupDir.length >= 3) 
		{
			if((bkupDir.charAt(0) != "\\" && bkupDir.charAt(1) != "\\") && (bkupDir.charAt(0) != "/" && bkupDir.charAt(1) != "/"))
			{
				if(!bkupDir.charAt(0).match(/^[a-zA-z]/))  
				{
					alert(lang_text_ary['inv_loc']);
					return false;
				}
				if(bkupDir.charAt(1) == "" ||!bkupDir.charAt(1).match(/^[:]/) || !bkupDir.charAt(2).match(/^[\/\\]/))
				{
					alert(lang_text_ary['inv_loc']);
					return false;
				}		
			}
			if((bkupDir.charAt(0) == "\\" && bkupDir.charAt(1) != "\\") || (bkupDir.charAt(0) == "/" && bkupDir.charAt(1) != "/"))
			{
				alert(lang_text_ary['inv_loc']);
				return false;
			}
		}
		else {
			alert(lang_text_ary['inv_loc']);
			return false;
		}
	}
	else if(sgOsType == 2)
	{
		if(bkupDir.charAt(0) != "/")
		{
			alert(lang_text_ary['inv_loc']);
			return false;
		}
		if(bkupDir.charAt(0) == "/" && bkupDir.charAt(1) == "/")
		{
			alert(lang_text_ary['inv_loc']);
			return false;
		}
	}
	else
	{
		return true;
	}
}
/*
 ******************** CheckLocalBackupLocation Method ends here  ******************/
/*
* Function Name		:	OpenTestServerConnection()
* 
* Arguments			:	1. rootpath 2. width 3. height 4.pageUrl 5. get parameter to the target page 
* 
* Returns			:	Nothing.
*
* Task				:	To open the test server connectivity page.
*
* Docs				:	Yes
*
* Bugs				:	--
************************************************************************************/
function OpenTestServerConnection(rootPath, width, height, pageUrl, tab)
{
	url = rootPath + pageUrl + '?';
	url = url + 'tab=' + tab;
	gPopupContainer = document.getElementById("popupContainer");
	showPopWin(url, width, height, null);
}
/*		OpenTestServerConnection() Function Ends Here
************************************************************************************/
/*
*  Function Name	: ShowHideInformation()
*
*  Args      		: Image Object, Icon Directory, type(1-warning,2-information), information, hide text
*
*  Returns   		: nothing.
*
*  Task      		: To show or hide the information(or warning) table
*
*  Bugs      		:
************************************************************************************/
function ShowHideInformation(imgObj, iconPath, type, info, hideText)
{
	imageSrc = (type == 1) ? "warning-icon.gif" : "information-icon.gif";
	smallImage = (type == 1) ? "migration-failed.gif" : "information-icon-small.gif";
	if(imgObj.src.indexOf("show") != -1)
	{
		imgObj.src = iconPath + "hide-info.gif";
		imgObj.title = lang_text_ary['Hide'];
		document.getElementById('infoImg').src = iconPath + imageSrc;
		document.getElementById('informationTd').innerHTML = info;
	}
	else if(imgObj.src.indexOf("hide") != -1)
	{
		imgObj.src = iconPath + "show-info.gif";
		imgObj.title = lang_text_ary['Show'];
		document.getElementById('infoImg').src = iconPath + smallImage;
		document.getElementById('informationTd').innerHTML = hideText;
	}
}
/*
******************* ShowHideInformation Method ends here  **************************/
/*
 *  Function Name	: ReplaceSplChars()
 *
 *  Args      		: nodeRef
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To Replace the HTMl entities. 
 *
 *  Docs      		: buildupdates.sgp
 *
 *  Bugs      		:
 *****************************************************************************/
function ReplaceSplChars(nodeRef)
{	
	nodeRef = nodeRef.replace(/&amp;/g ,"&");
	nodeRef = nodeRef.replace(/&apos;/g ,"'");
	nodeRef = nodeRef.replace(/&lt;/g ,"<");
	nodeRef = nodeRef.replace(/&gt;/g ,">");
	return nodeRef;
}
/*
 ******************** ReplaceSplChars Method ends here  ******************/
/*
 *  Function Name	: escString()
 *
 *  Args      		: string
 *
 *  Returns   		: string.
 *
 *  Task      		: To escape the string using javascript function.
 *
 *  Docs      		:
 *
 *  Bugs      		:
 *****************************************************************************/
function escString(encStr)
{
	encStr = escape(encStr);
	encStr = encStr.replace(/\//g,"%2F");
	encStr = encStr.replace(/\?/g,"%3F");
	encStr = encStr.replace(/=/g,"%3D");
	encStr = encStr.replace(/&/g,"%26");
	encStr = encStr.replace(/@/g,"%40");
	encStr = encStr.replace(/\+/g,"%2B");
	return encStr;
}
/*
 ******************** escString Method ends here  ****************************/
/*
 *  Function Name	: ShowToolTip()
 *
 *  Args      		: helptext, object(this), xPosDist, yPosDist
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To display and set the tooltip. 
 *
 *  Docs      		: backup.sgp,view.sgp,editbackup.sgp,deletebackupjob.sgp
 *
 *  Bugs      		:
 *****************************************************************************/
function ShowToolTip(helpContent, obj, xPosDist, yPosDist)
{
	document.getElementById('divContTd').innerHTML = ReplaceSplChars(unescape(helpContent));
	if (document.getElementById('toolTip').style.display=="none")
	{
		FadeIn('toolTip', 0);
	}
	document.getElementById('toolTip').style.display="";
	if(xPosDist == '') xPosDist = 0;
	if(yPosDist == '') yPosDist = -(document.getElementById('divContTd').offsetHeight + 15);//top
	if(xPosDist == '#') xPosDist = document.getElementById('divContTd').offsetWidth + 15;//left
	document.getElementById('toolTip').style.left=FindElementPos(obj)[0]-xPosDist;
	document.getElementById('toolTip').style.top=FindElementPos(obj)[1]+yPosDist;
	if(MSIE) HideSelectsUnderDIV('toolTip','hidden');
}
/*
 ******************** ShowToolTip Method ends here  **************************/
/*
 *  Function Name	: HideResultMesgDiv()
 *
 *  Args      		: screen No, Id to hide, time out value
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To hide the result displaying block 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/
function HideResultMesgDiv(screen, divId, timeOutValue)
{
	window.setTimeout("document.getElementById('"+divId+"').style.display='none';", timeOutValue);
}
/*
 ******************** HideResultMesgDiv Method ends here  **************************/
/*
 *  Function Name	: FocusNextObject()
 *
 *  Args      		: Current Object(this), Next Object
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To set the focus to the next object.
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/
function FocusNextObject(currentObj, nextObj)
{		
	if(currentObj.value.length == currentObj.maxLength)
	{
		nextObj.focus();
	}
	currentObj.value = currentObj.value.toUpperCase();
}
/*
 * FocusNextObject Method ends here
 *******************************************************************/
/*
 *  Function Name	: ShowToolTipProg()
 *
 *  Args      		: helptext, object(this), xPosDist, yPosDist, divId,ToolTipId
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To display and set the tooltip. 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/ 
 function ShowToolTipProg(helpContent, obj, xPosDist, yPosDist,divId,toolTipId)
{
	document.getElementById(divId).innerHTML = ReplaceSplChars(helpContent);
	document.getElementById(toolTipId).style.display="";
	if(xPosDist == '') xPosDist = 0;
	if(yPosDist == '') yPosDist = -(document.getElementById(divId).offsetHeight + 15);
	document.getElementById(toolTipId).style.left=FindElementPos(obj)[0]-xPosDist;
	document.getElementById(toolTipId).style.top=FindElementPos(obj)[1]+yPosDist;
	if(MSIE) HideSelectsUnderDIV(toolTipId,'hidden');
}
/*
 * ShowToolTipProg Method ends here
 *******************************************************************/
/*
 *  Function Name	: ClearToolTipPosProg()
 *
 *  Args      		: divId
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To clear the ToolTip content. 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/  
function ClearToolTipPosProg(divid)
{
	if(timeOut) clearTimeout(timeOut);
	if(MSIE) HideSelectsUnderDIV(divid,'visible');
	document.getElementById(divid).style.display = "none";
}
/*
 * ClearToolTipPosProg Method ends here
 *******************************************************************/
/*
 *  Function Name	: WrapString()
 *
 *  Args      		: String to be wrapped, Breaking limit, Is backup location(true/false) 
 *
 *  Returns   		: Wrapped String
 *
 *  Task      		: To wrap a given string at the given limit. 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/  
function WrapString(str, limit, isLocation)
{
   var toolTipStr = "";
   if(str.length < limit)
   {
       toolTipStr = str;
	   return toolTipStr;
   }
   else
   {
       if(isLocation == true)
       {
           for(var lim=0;lim<str.length;lim=lim+limit)
           {
               toolTipStr += str.substr(lim, limit);
               toolTipStr += (((lim+limit) <  str.length) ? '<br>' : '');
           }
           return toolTipStr;
       }
       else
       {
           var index, partStr, sepStr, fullStr = str.split("\n");
           if(limit > 0)
           {
	           for(index in fullStr)
	           {
	               for(sepStr = fullStr[index], fullStr[index] = ""; sepStr.length > limit; partStr = false ? limit : (partStr = sepStr.substr(0, limit).match(/\S*$/)).input.length - partStr[0].length || limit, fullStr[index] += sepStr.substr(0, partStr) + ((sepStr = sepStr.substr(partStr)).length ? "<br>" : ""));
	               fullStr[index] += sepStr;
	           }
           }
           return fullStr.join("\n");
       }
   }
}
/*
 * WrapString Method ends here
 *******************************************************************/
/*
 *  Function Name	: GetTrimmedString()
 *
 *  Args      		: String to be truncated, First part length, End part length 
 *
 *  Returns   		: Truncated String
 *
 *  Task      		: To truncate a given string at the given length limits. 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/  
function GetTrimmedString(string, firstPartLen, endPartLen)
{
	var returnString;
	string = string.replace(/&apos;/ig, "'");
	string = trim(string);
	if((string.length) > (parseInt(firstPartLen)+parseInt(endPartLen)+1))
		returnString =  string.substr(0,firstPartLen) +"..." + string.substr((string.length-endPartLen), string.length);			
	else
		returnString = string;
	return returnString; 
}
/*
 * GetTrimmedString Method ends here
 *******************************************************************/
/*
 *  Function Name	: HideMsg()
 *
 *  Args      		: Div id 
 *
 *  Returns   		: 
 *
 *  Task      		: To hide the message div on clicking the close button 
 *
 *  Docs      		: 
 *
 *  Bugs      		:
 *****************************************************************************/  
function HideMsg(id)
{
	document.getElementById(id).style.display = "none";
}
/*
 * HideMsg Method ends here
 *******************************************************************/
/*
 * Function Name	:	RunAtTimeValues()
 * 
 * Arguments		:	1. Hour value 2. Minute Value 3. AM/PM value
 * 
 * Returns			:	Railway time for the input AM/PM based time.
 *
 * Task				:	To generate Railway time value from the AmPm parameter.
 *
 * Docs				:	Yes
 *
 * Bugs				:	--
 ************************************************************/
function RunAtTimeValues(hours, minutes, ampm)
{
	var runatTimeValue = "";
	if((ampm == "pm")&&(hours < 12))
	{	
		hours = parseInt(hours) + 12;
		minutes = ((minutes < 10)? ("0"+minutes): minutes );
		runatTimeValue = hours+minutes;
	}
	else if((ampm == "pm")&&(hours == 12))
	{
		minutes = ((minutes < 10)? ("0"+minutes): minutes );
		runatTimeValue = hours+minutes;
	}
	else if((ampm == "am")&&(hours < 12))
	{
		hours = ((hours < 10)? ("0"+hours): hours );
		minutes = ((minutes < 10)? ("0"+minutes): minutes );
		runatTimeValue = hours+minutes;
	}
	else if((ampm == "am")&&(hours == 12))
	{
		hours = "00";
		minutes = ((minutes < 10)? ("0"+minutes): minutes );
		runatTimeValue = hours+minutes;
	}
	return runatTimeValue;
}
/*		RunAtTimeValues() Function Ends Here
 ************************************************************/
/*
 * Function Name	:	WinOpen()
 * 
 * Arguments		:	1. Url 2. Window name 3. x,y,z posistions
 * 
 * Returns			:	Nothing
 *
 * Task				:	Position the popup window in the center of the screen.
 *
 * Docs				:	Yes
 *
 * Bugs				:	--
 ************************************************************/
 function WinOpen(url,name,x,y,z)
{
	var posX = (screen.width/2)-(x/2);
	var posY = (screen.height/2)-(y/2);
	var winPref = "width=" + x + ",height=" + y
				+ ",innerWidth=" + x + ",innerHeight=" + y
				+ ",left=" + posX + ",top=" + posY
				+ ",screenX=" + posX + ",screenY=" + posY
				+ ",toolbar=" + z + ",location=0,directories=0,status=" + z
				+ ",menubar=" + z + ",scrollbars=1,resizable=1,width=" + x
				+ ",height=" + y;
	var remoteWin = null;
	remoteWin = window.open(url,name,winPref);
	if (window.focus)
	{
		remoteWin.focus();
	}
}
/*		WinOpen() Function Ends Here
 ************************************************************/
/*
 *  Function Name	: SubmitRestoreResumeAction()
 *
 *  Args			: Server Name, No Of Server, Backup Name, Action Row, Element ID.
 *
 *  Returns   		: nothing.
 *
 *  Task      		: To submit the form to resume restore process.
 *
 ************************************************************/
function SubmitRestoreResumeAction(backupServerNames, noOfServer, backupName, actionRow, elemId, isLocal)
{ 
	var resumeRestore = lang_ary['resume_restore_confirm']+'"'+backupServerNames+'". '+lang_alert_ary['Do_You_Wish_Proceed'];
	if(noOfServer > 1)
	{
		document.getElementById("selectServerDiv"+elemId).style.display="";
		selectSvrPanel[elemId].show();
	}
	else
	{
		if (confirm(resumeRestore))
		{
			selectSvrPanel[elemId].hide();
			document.jobnav.txtServerName.value = backupServerNames;
			document.jobnav.txtNoOfServer.value = noOfServer;
			SubmitActionForm(0, backupName, 0, 8, actionRow, elemId, isLocal);
		}
		else
		{
			return false;
		}
	}
}
/*  SubmitRestoreResumeAction() method ends here
 ************************************************************/
/*
 * Function Name	:	CheckRescheduleIntervalCnt()
 * 
 * Arguments		:	1. object 2. MinVal 3. MaxVal
 * 
 * Returns			:	Nothing.
 *
 * Task				:	To validate Reschedule .interval value.
 ************************************************************/
function CheckRescheduleIntervalCnt(Obj, minVal, maxVal)
{
	if(!isValidNumber(Obj.value))
	{
		alert(lang_new_alert_ary['resch_int_invalid_cnt_alert']);
		Obj.value = minVal;
		Obj.focus();
		return false;
	}
	if(parseInt(Obj.value,10) < minVal)
	{
		alert(lang_new_alert_ary['resch_int_min_cnt_alert'] + minVal);
		Obj.value = minVal;
		Obj.focus();
		return false;
	}
	if(parseInt(Obj.value,10) % 5 != 0)
	{
		alert(lang_new_alert_ary['resch_int_multiple_cnt_alert']);
		Obj.focus();
		Obj.select();
		return false;
	}
	if(parseInt(Obj.value,10) > maxVal)
	{
		alert(lang_new_alert_ary['resch_int_max_cnt_alert'] + maxVal);
		Obj.focus();
		Obj.select();
		return false;
	}	
	return true;
}
/*		CheckRescheduleIntervalCnt() Function Ends Here
 ************************************************************/
/*
 *  Function Name	: PlaceDivInsideTable()
 *
 *  Args			: divId, tableId, contentTd, help content
 *
 *  Returns   		: Nothing
 *
 *  Task      		: To place a div in the center of a td/table.
 *****************************************************************************/
function PlaceDivInsideTable(divId, tableId, contentTd, helpContent, placeContent, hideSelects)
{
	document.getElementById(divId).style.display = '';
	if(placeContent == 1)
	{
		document.getElementById(contentTd).innerHTML = helpContent;
	}
	var posOfTd = FindElementPos(document.getElementById(tableId));
	var posLoadingLeft = posOfTd[0]+(document.getElementById(tableId).offsetWidth/2 - document.getElementById(divId).offsetWidth/2);
	var posLoadingTop = posOfTd[1]+(document.getElementById(tableId).offsetHeight/2 - document.getElementById(divId).offsetHeight/2);
	document.getElementById(divId).style.left = posLoadingLeft + "px";
	document.getElementById(divId).style.top = posLoadingTop + "px";
	if(hideSelects == 1)
	{
		if(MSIE) HideSelectsUnderDIV(divId,'hidden');
	}
}
/*
 *	PlaceDivInsideTable() method ends here
 *****************************************************************************/
/*
 * Function Name	:	SetTimeZone()
 * 
 * Arguments		:	req type, httpdFileElemId, param name, paramValueElemId
 * 
 * Returns			:	Nothing.
 *
 * Task				:	To save timezone settings
 ************************************************************/
function SetTimeZone(reqType, hidHttpdFile, paramName, paramValElemId, getOrPost)
{
	scrNumber = reqType;
	var httpdFile = document.getElementById(hidHttpdFile).value;
	if(getOrPost == 1)
	{
		if(reqType == 2 || reqType == 3)
		{
			if(document.getElementById(paramValElemId).value == -1)
			{
				alert(lang_ary['sel_time_zone']);
				return false;
			}
			if(!confirm(lang_ary['info_time_zone']))
			{
				return false;
			}
			document.getElementById("spanTimeZone").style.display = "none";
			document.getElementById("spanTimeZoneProg").style.display = "";
		}
		urlStr = httpdFile + '?' + paramName + '=' + encodeURIComponent(document.getElementById(paramValElemId).value);
	}
	if(getOrPost == 2)
	{
		var formPostData = '';
		if(reqType == 4)
		{
			if(document.getElementById(paramValElemId).value == -1)
			{
				document.getElementById('spanCurrentTime').style.display = 'none';
				return;
			}
			formPostData = formPostData + 'txtReqType=' + reqType;
			formPostData = formPostData + '&';
			formPostData = formPostData + paramName + '=' + encodeURIComponent(document.getElementById(paramValElemId).value);
		}
	}
	httpReq = GetXmlHttpRequestObject();
	if(httpReq)
	{
		httpReq.onreadystatechange = UpdateTimeZoneSettings;
		if(getOrPost == 1)
		{
			httpReq.open("GET", urlStr, true);
			httpReq.send(null);
		}
		if(getOrPost == 2)
		{
			httpReq.open("POST", httpdFile, true);
			httpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			httpReq.send(formPostData);
		}
	}
}
/*  SetTimeZone() method ends here
 ************************************************************/
/*
 * Function Name	:	UpdateTimeZoneSettings()
 * 
 * Arguments		:	nothing
 * 
 * Returns			:	Nothing.
 *
 * Task				:	To save timezone settings
 ************************************************************/
function UpdateTimeZoneSettings()
{
	if(httpReq.readyState == 4)
	{
		if(httpReq.status == 200)
		{
			if(scrNumber == 2)
			{
				window.document.location = document.getElementById('hidActionFile').value;
			}
			if(scrNumber == 3)
			{
				window.top.document.location.reload();
				window.top.hidePopWin(false);
			}
			if(scrNumber == 4)
			{
				document.getElementById('spanTimeForSelZone').innerHTML = httpReq.responseText;
				document.getElementById('spanCurrentTime').style.display = '';
			}
		}
	}
}
/*  UpdateTimeZoneSettings() method ends here
 ************************************************************/
 /*Added for 3.0.0
  ************************************************************/
/*
 * Function Name	:	GetSecuredToken()
 * 
 * Arguments		:	Nothing
 * 
 * Returns			:	md5 value of the given String
 *
 * Task				:	Perform md5Hash
 *
 * Docs				:	Yes
 *
 * Bugs				:	--
 ************************************************************/
function GetSecuredToken(token)
{
     var securedTok = ""; 
     var loginTime = document.login_form.logintime.value;
     var sessID = document.login_form.sessionID.value;
     var usrRequest = document.login_form.usrRequest.value;
     var loginType = document.login_form.loginType.value;
     
     securedTok = hex_md5(token);
     doublesecuredTok = hex_md5(securedTok);
     
     var sigOne  = securedTok + loginTime; 
     var sigTwo  = doublesecuredTok + loginTime;
     
	  switch(loginType)
	  {
			case "1":
  					securedTok = hex_hmac_sha1(sigOne , sessID);
  					doublesecuredTok = hex_hmac_sha1(sigTwo ,sessID);
  					break;
			case "2":
     				securedTok = hex_hmac_sha1(sigOne,usrRequest);
     				doublesecuredTok = hex_hmac_sha1(sigTwo,usrRequest);
  					break;
			default:
	  }
	  document.login_form.usertokenOne.value = securedTok;
	  document.login_form.usertokenTwo.value = doublesecuredTok;
	  
     return "";
}
 /* 
 ************************************************************/
 /*
 * Function Name	:	GetCurrentTime()
 * 
 * Arguments		:	Nothing
 * 
 * Returns			:	time value
 *
 * Task				:	Gives the current time
 *
 * Docs				:	Yes
 *
 * Bugs				:	--
 ************************************************************/
function GetCurrentTime()
{
	  //alert('Hello');
     var curDateTime = new Date()
     var curHourOnly = curDateTime.getHours();
     var curGMTHour = curHourOnly + curDateTime.getTimezoneOffset()/60;
     //var TimezoneOffset = curDateTime.getTimezoneOffset();
     if (curGMTHour > 24)  curGMTHour -= 24;
     if (curGMTHour < 0) curGMTHour += 24;
     var curMin = curDateTime.getMinutes();
     var curSec = curDateTime.getSeconds();
     var curGMTTime = ((curGMTHour < 10) ? "0" : "") + curGMTHour + ":"
                                        + ((curMin < 10) ? "0" : "") + curMin + ":"
                                        + ((curSec < 10) ? "0" : "") + curSec ;
     var curMyTime = ((curHourOnly < 10) ? "0" : "") + curHourOnly + ""
                                        + ((curMin < 10) ? "0" : "") + curMin + ""
                                        + ((curSec < 10) ? "0" : "") + curSec ;
     //var myTime = curHourOnly + ":" +  curMin + ":" + curSec;
     return curMyTime;
     //return curGMTTime;
}

function EnableCompressRestoreIfLinux()
{
	 var platform;
    platform = navigator.platform.toLowerCase();
	document.restore.compressRestoreEnabled.value="0"; //modified for hide restore-download zip
    //alert(platform);
	/* * /												//modified for hide restore-download zip
  	 if (platform.indexOf('win') != -1){
  	 		document.getElementById('servRestoreLocation').style.display='';
      	document.getElementById('servRestoreLocationHelp').style.display='';
      	//document.getElementById('compressRestoreOption').style.display='none';
      	document.restore.compressRestoreEnabled.value="0";
      	//document.getElementById('compressRestoreLocation').style.display='none';
    }else if (platform.indexOf('mac') != -1){
   		document.getElementById('servRestoreLocation').style.display='none';
      	document.getElementById('servRestoreLocationHelp').style.display='none';
      	//document.getElementById('compressRestoreOption').style.display='none';
      	document.restore.compressRestoreEnabled.value="0";
      	//document.getElementById('compressRestoreLocation').style.display='none';
    }else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1){
    		document.getElementById('servRestoreLocation').style.display='none';
      	document.getElementById('servRestoreLocationHelp').style.display='none';
      	//document.getElementById('compressRestoreOption').style.display='none';
      	document.restore.compressRestoreEnabled.value="1";
      	//document.getElementById('compressRestoreLocation').style.display='none';
    }
	/* */
    return true;
}

function ShowClusterNodeSDR(openUrl, index, clusterNode)
{	
	var sgID = clusterNode;
	var url = openUrl;
	url= url + "?IsClusSDR=1";
	url= url + "&nodeSGIdentity=" + sgID;
	window.open(url,'PageHelp','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=no,left=250,top=180,width=650,height=470');
}


function utf_url8_decode(encodedFileName)
{
	var fileName = "";
	var s = encodedFileName;
   var l  = s.length;
   var ch = -1 ;
   var b, sumb = 0;
   for (var i = 0, more = -1 ; i < l ; i++) 
   {
	  ch = s.charAt(i);
     switch (ch) 
     {
			case '%':
	  			ch = s.charCodeAt (++i) ;
				var hb;
	  			if(isValidNumber(String.fromCharCode(ch)))
	 			 {
					  hb = ch - '0';
	 			 }
	 			 else
	 			 {
		 			 var a = 'a';
       			 hb = 10+ch- a.charCodeAt(0);
	  			 }
	 			 hb = hb & 0xF ;
	 			 ch = s.charCodeAt (++i) ;
	  			 var lb;
	 			 if(isValidNumber(String.fromCharCode(ch)))
	  			 {
		 			 lb = ch - '0';
	  			 }
	  			 else
	    		 {
		  			 var a = 'a';
		   		 lb = 10+ch - a.charCodeAt(0);
	  			 }
	  			 lb = lb & 0xF ;
	  			 b = (hb << 4) | lb ;
	  			 break ;
	  		case '+':
	  			ch = ' ' ;
	   		b= ch.charCodeAt(0);
	  			break ;
			default:
	  			b = s.charCodeAt(i) ;
      }

      if ((b & 0xc0) == 0x80) 			// 10xxxxxx (continuation byte)
      {
			sumb = (sumb << 6) | (b & 0x3f) ;	// Add 6 bits to sumb
			if (--more == 0) {
					fileName += String.fromCharCode(sumb) ; // Add char to sbuf
			}
      } else if ((b & 0x80) == 0x00) {		// 0xxxxxxx (yields 7 bits)
			fileName += String.fromCharCode	(b) ;			// Store in sbuf
      } else if ((b & 0xe0) == 0xc0) {		// 110xxxxx (yields 5 bits)
			sumb = b & 0x1f;
			more = 1;				// Expect 1 more byte
      } else if ((b & 0xf0) == 0xe0) {		// 1110xxxx (yields 4 bits)
			sumb = b & 0x0f;
			more = 2;				// Expect 2 more bytes
      } else if ((b & 0xf8) == 0xf0) {		// 11110xxx (yields 3 bits)
			sumb = b & 0x07;
			more = 3;				// Expect 3 more bytes
      } else if ((b & 0xfc) == 0xf8) {		// 111110xx (yields 2 bits)
			sumb = b & 0x03;
			more = 4;				// Expect 4 more bytes
      } else /*if ((b & 0xfe) == 0xfc)*/ {	// 1111110x (yields 1 bit)
			sumb = b & 0x01;
			more = 5;				// Expect 5 more bytes
      }
    }
    return fileName;
}

