/*****************************************
* Script:- generic.js
* Author:- deep
* Date  :- 06 Sept 2004 {revised}
******************************************/
function returnSelectedValue(inputre,winname)
{
	// Commented by Rakesh as we are using normal windows to display the return values

	//startedby = window.parent.document.all[winname].startedby;
	//returnfieldid = window.parent.document.all[winname].returnfieldid;

	//alert("Returnfield id" + returnfieldid);
	//window.parent.document.all["p"+startedby].contentWindow.document.all[returnfieldid].value= inputre.value;
	//window.parent.document.all["p"+startedby].contentWindow.document.all[returnfieldid].fireEvent("onchange");
	//window.parent.document.all[winname].parentNode.removeChild(window.parent.document.all[winname]);

	returnfieldid = window.parent.name;
	if(window.opener.document.all[window.opener.document.all[returnfieldid].returnfield]!=null)
        {
            window.opener.document.all[window.opener.document.all[returnfieldid].returnfield].value = inputre.value;
            window.opener.document.all[window.opener.document.all[returnfieldid].returnfield].fireEvent("onchange");                  }
	else
            {
		window.opener.document.all[returnfieldid].value=inputre.value;
		window.opener.document.all[returnfieldid].fireEvent("onchange");
            }
	window.close();


}

function deleteRow(portalname,tablename)
{
	var tab =document.all[tablename]

	for(i=1;i<tab.rows.length;)
	{
		if (tab.rows[i].cells[0].children[0].checked == true)
		{
			tab.rows[i].parentNode.removeChild(tab.rows[i]);

		}
		else
			i++;
	}

}
function populateFieldsInternally(str,obj,seqno)
{
	var str1=fetchDetails(str)
	//var rowid=obj changed on 1st, sep , 2004.
	var rowid=obj
	document.getElementsByTagName("xml")[seqno].updateXML(str1,rowid);
}
function populateFeilds()
{
	var str=element.documentElement.getAttribute("href");
	//var str="/extend//query/equipment/myworksheetheaderq.jsp?WorkSheet="+obj.value
	var str1=fetchDetails(str)
	var rowid=1
	element.document.all[element.xmlid].updateXML(str1,rowid)
}

function onheaderclick(obj)
{
	table1=obj.parentElement.parentElement.parentElement.parentElement;
	if(table1!=null)
	{
		for(i=1;i<table1.rows.length-1;i++)
			try{table1.rows[i].cells[0].children[0].checked=obj.checked;}catch(e){}
	}
}

function fetchDetails(str)
{
	var objHTTP = new ActiveXObject("Microsoft.XMLHTTP")
	objHTTP.Open("GET",str,false)
	objHTTP.Send();
	return (objHTTP.responseText);
}

function show_calendar(str_target, str_datetime,str_pattern,sep)
{
	pattern=(str_pattern!=null)?str_pattern:'YYYYMMDD';		//takes date pettern specified in code or YYYYMMDD as default.
	str_sep=(sep!=null)?(sep.length==1)?sep:'/':'/';		//takes date seperator specified in code or '/' as default.

	// logic for calendar generation
	var arr_months = ["January", "February", "March", "April", "May", "June",
		"July", "August", "September", "October", "November", "December"];
	var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));
	//Added by J
	if(dt_datetime ==  null)
		return;
//	alert(dt_datetime);
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);

	// html generation (feel free to tune it for your particular application)
	// print calendar header
	// print calendar header  html generation (feel free to tune it for your particular application)
	var str_buffer = new String ("<html>\n"+"<head>\n"+"<title>Calendar</title>\n"+"</head>\n"+
	"<body bgcolor=\"White\">\n"+"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
	"<tr><td bgcolor=\"#4682B4\">\n"+"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
	"<tr>\n	<td bgcolor=\"#4682B4\"><a href=\"javascript:window.opener.show_calendar('"+
	//str_target+"', '"+ dt2dtstr(dt_prev_month)+"'+document.cal.time.value);\">"+
	str_target+"', '"+ dt2dtstr(dt_prev_month)+"', '"+pattern+"', '"+str_sep+"');\">"+
	"<img src=\"/epmui/images/prev.gif\" width=\"16\" height=\"16\" border=\"0\""+" alt=\"previous month\"></a></td>\n"+
	"	<td bgcolor=\"#4682B4\" colspan=\"5\">"+"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
	+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
	"	<td bgcolor=\"#4682B4\" align=\"right\"><a href=\"javascript:window.opener.show_calendar('"
	//+str_target+"', '"+dt2dtstr(dt_next_month)+"'+document.cal.time.value);\">"+
	+str_target+"', '"+dt2dtstr(dt_next_month)+"', '"+pattern+"', '"+str_sep+"');\">"+
	"<img src=\"/epmui/images/next.gif\" width=\"16\" height=\"16\" border=\"0\""+
	" alt=\"next month\"></a></td>\n</tr>\n"
	);
	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer += "	<td bgcolor=\"#87CEFA\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
		week_days[(n_weekstart+n)%7]+"</font></td>\n";
	// print calendar table
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					str_buffer += "	<td bgcolor=\"#FFB6C1\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
				else
					// print working days of current month
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
			//Changed by J //".value='"+dt2dtstr(dt_current_day)+"'+document.cal.time.value; window.close();\">"+
			//changed by deep Sept 05,2004 try{alert(window.opener."+str_target+");}catch(e){} for updating the date value in inner xml for form type 3
					".value='"+showdt2dtstr(dt_current_day)+"'; try{field_onchange(window.opener."+str_target+");}catch(e){} window.close();\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				else
					// print days of other months
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
			//Changed by J //".value='"+dt2dtstr(dt_current_day)+"'+document.cal.time.value; window.close();\">"+
			//changed by deep Sept 05,2004 try{alert(window.opener."+str_target+");}catch(e){} for updating the date value in inner xml for form type 3
					".value='"+showdt2dtstr(dt_current_day)+"'; try{field_onchange(window.opener."+str_target+");}catch(e){} window.close();\">"+
					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer
	str_buffer +=
		"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
		"<font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
		//"Time: <input type=\"text\" name=\"time\" value=\""+dt2tmstr(dt_datetime)+
		//"\" size=\"8\" maxlength=\"8\"></font></td></tr>\n</form>\n" +
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";

	/*var vWinCal = window.open("", "Calendar",
		"width=200,height=250,status=no,resizable=yes,top=200,left=200"); */
	var vWinCal = window.open("", "Calendar",
		"width=200,height=200,status=no,resizable=yes,top=200,left=410");
	//var vWinCal = window.open("", "Calendar",
	//	"width=200,height=200,status=no,resizable=yes,top="+y+",left="+x+");

	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt (str_datetime) {
	str_datetime = str_datetime + " " + dt2tmstrJ(new Date())
	//var re_date = /^(\d+)\/(\d+)\/(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
	var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ str_datetime);

	return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6));
}
function dt2dtstr (dt_datetime) {
	var month   = (dt_datetime.getMonth()+1);
	if(month <= 9)
		month = "0" + month;
	var day = dt_datetime.getDate();
	if(day <= 9)
		day = "0" + day;

	//return (new String (dt_datetime.getFullYear()+"/"+month+"/"+day));
	return (new String (dt_datetime.getFullYear()+"-"+month+"-"+day));
}
function dt2tmstr (dt_datetime) {
	return "";
	//return (new String(dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

function dt2tmstrJ(dt_datetime) {
	return (new String(dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

function getField(row,fldName)
{
	return (row.all["id"+fldName+row.rowid]);

}
function showdt2dtstr (dt_datetime) {
//alert("showdt2dtstr");
var month   = (dt_datetime.getMonth()+1);
	if(month <= 9)	month = "0" + month;
	var day = dt_datetime.getDate();
	if(day <= 9)  day = "0" + day;

	if(pattern.toUpperCase()=="DDMMYYYY")
		{
		 return (new String (day+str_sep+month+str_sep+dt_datetime.getFullYear()));

		}
	else if(pattern.toUpperCase()=="MMDDYYYY")
		{
		 return (new String (month+str_sep+day+str_sep+dt_datetime.getFullYear()));
		}
	else
		{
		return (new String (dt_datetime.getFullYear()+str_sep+month+str_sep+day));
		}

	}

function add(fldGrp,fld)
{
	//adds all values of fields as mentioned in "fld" in fieldgroup fldGrp
	var totReturn=0;
	table=document.all[fldGrp];
	var allrowsnodeslist = table.selectNodes("//FIELDROW");
	for(i=0;i<allrowsnodeslist.length;i++)
	{

		var allnodeslist = allrowsnodeslist.item(i).selectNodes("./FIELD[@name='"+fld+"']");
		for(j=0;j<allnodeslist.length;j++)
		{
			totReturn=totReturn+new Number(allnodeslist.item(j).getAttribute("value"));
		}
	}
	return(totReturn);

}

//Rakesh - Added for Displaying Error Information

function errorDetails()
{
//	alert("hi in connection error");
/*try{					        window.parent.document.all["ErrorD"].parentNode.removeChild(window.parent.document.all["ErrorD"]);
	   }
	catch(e)
	{}
*/
window.showModalDialog("/dlb2b/error/ErrorPortlet.jsp",null,"dialogHeight:200px;dialogWidth:300px;dialogTop:235px; dialogLeft:400px;edge:Raised;center: Yes; help: No; resizable: Yes; status: No; scroll:on;unadorned:no");

/*window.open("/dlb2b/error/ErrorPortlet.jsp",null,
    "height=200,width=400,left=300, top=200, scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no");
*/

//	addPortletNormal('ErrorD','/dlb2b/error/ErrorPortlet.jsp','Error Details','200','400','50','240');
}


function errorDetails1(errorD)
{
try{

var url = "/dlb2b/error/ErrorPortletOther.jsp?err="+errorD;
alert("hi in other error" + url);
window.showModalDialog(url,null,"dialogHeight:200px;dialogWidth:300px;dialogTop:235px; dialogLeft:400px;edge:Raised;center: Yes; help: No; resizable: Yes; status: No; scroll:on;unadorned:no");
}
catch(e)
{alert("Excep" + e);}


}

function zoom_onload(winname)
{
	//alert(winname);

	if(document.all["errorinfo"] !=null || document.all["othererror"] !=null)
	{
		//window.parent.document.all[winname].parentNode.removeChild(window.parent.document.all[winname]);


		if(document.all["errorinfo"].value || document.all["othererror"].value)
		{
			if (document.all["errorinfo"] != null)
			{
				var er =document.all["errorinfo"].value;
				if(er)
				errorDetails();
			}
			if(document.all["othererror"] != null)
			{
				var er =document.all["othererror"].value;
				if(er)
				errorDetails1(document.all["othererrordesc"].value);
			}

		}
	}
}

function zoomOkClick(table,winname)
{
	for(i=0;i<table.rows.length -1;i++)
	{
		if(document.all.selection[i].checked)
		{
			var row = table.rows[i+1];
			//alert(document.all.selection[i].checked);
			returnSelectedValue(row,winname);
		}


	}

}
function handleCarriageReturn(obj)
{

if(obj != null)
   {

    while((obj.indexOf("\n"))>=0)
    {
      obj=obj.replace("\n","^");
    }

    }
    return obj;

}
function handleCarrotChars(obj)
{

if(obj != null)
   {
    while((obj.indexOf("^"))>=0)
    {
      obj=obj.replace("^","\n");
    }
   }
    return obj;

}

function leftTrim(sString)
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
return sString;
}

function rightTrim(sString)
{
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}

function trim(sString)
{
	//alert(sString);
while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
return sString;
}
//New Function for JSON to read values from Arraylist and fill in combo values

function AddComboValues(values,combo)
{
   var combo = document.all[combo];

   var o = new Option();
   o.value = "0";
   o.text = "";
   combo.add(o);
   if(values != null)
   {
    for(i=0;i<values.length;i++)
    {

            if(values[i] !="")
            {
            var o = new Option();

            var val = values[i].substr((values[i].indexOf("-"))+1);
            o.value = values[i];
            o.text = val;
            combo.add(o);
            }
    }
  }
  var o = new Option();
   o.value = "LT";
   o.text = "--Item Text--";
   combo.add(o);
}