//==============================================================
// utilities.js
//
// Common utility functions, like HTMLEncode.
//==============================================================




function writeRevOrVer(cmsId,rev,ver,rlmgmtEnabled)
{
if(rlmgmtEnabled == "TRUE")
document.writeln('<TD NOWRAP align="center"><A HREF="javascript:showRevs(' + cmsId + ');" onMouseOver="status=\'List all versions\'; return true" onMouseOut="status=\'\'">' + rev + '</A></TD>');
else
document.writeln('<TD NOWRAP align="center"><A HREF="javascript:showRevs(' + cmsId + ');" onMouseOver="status=\'List all versions\'; return true" onMouseOut="status=\'\'">' + ver + '</A></TD>');
}


function getRevOrVer(rev,ver,rlmgmtEnabled)
{
var str = "";
  
  if (rlmgmtEnabled == "TRUE")
  {
  if (rev.search(/[:]/) >=0)
  {
    str = rev.substring(0, rev.indexOf(':'));
    str += " v" + rev.substring(rev.indexOf(':') + 1, rev.length);
  }
  else
  {
   str = rev;
  }
  }
  else
  {	
	str += ver;
	//str += rev.substring(rev.indexOf(':') + 1, rev.length);
  }
return str;
}


function modifyRev(rev)
{

if (rev.search(/[:]/) >=0)
{
str = rev.substring(0, rev.indexOf(':'));
str += " v" + rev.substring(rev.indexOf(':') + 1, rev.length);
return str;
}
return rev;
}

function getver(version)
{
  re = /:/gi;
  newstr=version.replace(re, " v");
  return newstr;
}

function printver(version)
{
  re = /:/gi;
  newstr=version.replace(re, " v");
  document.write(newstr);
}

function getRev(rev, isLatest, relMgmtEnabled)
{
  var str = "";
  
  if (relMgmtEnabled == "TRUE")
  {
    str = rev.substring(0, rev.indexOf(':'));
    str += " v" + rev.substring(rev.indexOf(':') + 1, rev.length);
  }
  else
  {
  
	str += rev;
	//str += rev.substring(rev.indexOf(':') + 1, rev.length);
  }
  if (isLatest != "1")
    str += "*";
  
  return str;
}

function writeRev(rev, isLatest, relMgmtEnabled,version)
{

  var str = "";
  
  if (relMgmtEnabled == "TRUE")
  {
    str = rev.substring(0, rev.indexOf(':'));
    str += " v" + rev.substring(rev.indexOf(':') + 1, rev.length);
  }
  else
  {
	if(version != "")
	{
	rev = version;
	}
	if (rev.search(/[:]/) >=0)
	{
	
	str = rev.substring(0, rev.indexOf(':'));
   // str +=rev.substring(rev.indexOf(':') + 1, rev.length);
	}
	else
	str += rev;
	//str += rev.substring(rev.indexOf(':') + 1, rev.length);
  }
  if (isLatest != "1")
    str += "*";

  document.write(str);
}

function getClassName(classStr)
{
  var pos = classStr.lastIndexOf(":");
  return classStr.substr(pos+1);
}

function writeClassName(nodestr)
{
  str_startpos = nodestr.lastIndexOf(":");
  document.write( nodestr.substr(str_startpos+1));
}

function getStatus(statusStr)
{
  var pos = statusStr.indexOf("(");
  if(pos != -1)
	return statusStr.substr(0,pos);
  else
	return statusStr;
}

function writeStatus(statusStr)
{
  var pos = statusStr.indexOf("(");
  if(pos != -1)
	document.write(statusStr.substr(0,pos));
  else
	document.write(statusStr);
}


function printActivityState(state)
{
  switch (state)
  {
    case "INITIATED":
      document.write("Activated");  // NT client displays the status as activated
      break;
    case "ACTIVATED":
      document.write("Activated");
      break;
    case "IN PROGRESS":
    case "CLAIMED":
      document.write("Claimed");
      break;
    case "SUSPENDED":
    case "On Hold":
      document.write("On Hold");
      break;
    case "CANCELLED":
      document.write("Cancelled");
      break;
    case "COMPLETED":
      document.write("Completed");
      break;
    default:
      document.write(state);
      break;
  }
}

function checkmaxlength(field,maxlength)
{
  var temp_str = field.value;
  if (temp_str.length >= maxlength) {
    alert('Maximum number of characters allowed for this field is ' + maxlength +'.');
    field.value = temp_str.substring(0,maxlength);
  }
}

//================================================================
// HTMLEncode() - Encode the string using HTML encoding.  
//================================================================
function HTMLEncode(inputString)
{
  var length = inputString.length;
  var outputString = "";
  var noop = 0;

  for (var i = 0; i < length; i++) {

    var thisChar = inputString.charAt(i);

    if (thisChar == '"')      // double quote
      outputString = outputString + "&quot;";
    else if (thisChar == '&') 
      outputString = outputString + "&amp;";
    else if (thisChar == '<')
      outputString = outputString + "&lt;";
    else if (thisChar == '>')
      outputString = outputString + "&gt;";
    else if (thisChar == '\n')
      outputString = outputString + "<BR>";
    else if (thisChar == '\r') {
      //do nothing because we convert the new line into the break tag.  We can ignore the carriage return
      noop++;
      }
    else 
      outputString = outputString + thisChar;  
  }

  return outputString;
}

//======================================================
// Returns the value of the form input obj
//======================================================
function getValue(obj)
{
  var value = "";

  if (isSelect(obj))
  {
    if (obj.selectedIndex != -1)
      value = obj.options[obj.selectedIndex].value;
  }
  else
    value = obj.value;

  return value;
}

//======================================================
// Sets the value of the form input obj
//======================================================
function setValue(obj, value)
{
  if (isSelect(obj))
    selectChoice(obj, value);
  else
    obj.value = value;
}

//=======================================================
// Makes value the selected option in the given select element.
// Returns the selected option's index, or -1
//=======================================================
function selectChoice(elt, value)
{
  for (var i = 0; i < elt.options.length; i++)
  {
    if (elt.options[i].value == value)
    {
      elt.selectedIndex = i;
      return i;
    }
  }

  elt.selectedIndex = -1;
  return -1;
}

function isSelect(elt)
{
  return ((elt.type == "select-one") || (elt.type == "select-multiple"));
}





function getItemTypebyClass(classnamestring)
{

  var classsubstr = "";
  var length = classnamestring.length;

  if (length >= 9) {
	classsubstr = classnamestring.substring(0,9);
	if (classsubstr.toUpperCase() == "CMS:FILES") 
		return 'file';
	if (classsubstr.toUpperCase() == "CMS:PARTS") 
		return 'part';
  } 

  if (length >= 12) {
	classsubstr = classnamestring.substring(0,12);
	if (classsubstr.toUpperCase() == "CMS:PROJECTS") 
		return 'proj';
  } 

  return 'proj';  //default return value is proj. (because sometimes a project can be created under CMS)

}


function writeItemImageandLink(itemid,itemclass,hasBom,includelink)
{

  var itemtype = getItemTypebyClass(itemclass);
  var imagename = "16x16_project.gif";
  var statustext = "View Project Information";
  var alttext = "View Project Information";
  var doactionparameter = "items";
  switch (itemtype) {

	case "file":
		imagename = "doc_sm.gif";
		statustext = "View File Information";
		alttext = "View File Information";
		break;


	case "part":
		if (hasBom) {
			imagename = "partbom_sm.gif";
			alttext = "View Part/Bom Information";
		}
		else {
			imagename = "part_sm.gif";
			alttext = "View Part Information";
		}

		statustext = "View Part Information";
		break;


	case "bom":
		imagename = "bom_sm.gif";
		statustext = "View bill of materials";
		alttext = "View Bill of Materials Information";
		doactionparameter = 'items';
		break;

  }
  var str = "";
	if (includelink) {
		str = '<A HREF="#" Onclick="doaction(\''+ doactionparameter +'\',\''+ itemid
			+ '\');return false;"  onMouseOver=\'window.status="'+  statustext 
			+ '";return true;\' onMouseOut=\'status=""\'>' 
			+ '<img src="/pcenterweb/images/'+ imagename + '" width=16 height=16 border=0 alt="'+ alttext  +'" title="'+ alttext  
			+ '" align=center></A>';
	} else {
		str = '<img src="/pcenterweb/images/'+ imagename + '"  width=16 height=16 border=0 alt="'+ alttext   +'" title="'+ alttext  
			+ '" align=center>';
	}

  document.write(str);
}



function getItemTypebyClasswithBom(classnamestring)
{

  var classsubstr = "";
  var length = classnamestring.length;

  if (length >= 9) {
	classsubstr = classnamestring.substring(0,9);
	if (classsubstr.toUpperCase() == "CMS:FILES") 
		return 'file';
	if (classsubstr.toUpperCase() == "CMS:PARTS") 
		return 'part';
  } 

  if (length >= 12) {
	classsubstr = classnamestring.substring(0,12);
	if (classsubstr.toUpperCase() == "CMS:PROJECTS") 
		return 'proj';
  } 

  return 'proj';  //default return value is proj. (because sometimes a project can be created under CMS)

}


function writeItemIconwithBom(itemid,itemclass,hasBom,includelink)
{

  var itemtype = getItemTypebyClasswithBom(itemclass);
  var imagename = "16x16_project.gif";
  var statustext = "View Project Information";
  var alttext = "Project";
  var doactionparameter = "item";
  switch (itemtype) {

	case "file":
		imagename = "doc_sm.gif";
		statustext = "View File Information";
		alttext = "View File Information";
		break;


	case "part":
		if (hasBom == '0')
			hasBom = 0;
		if (hasBom) {
			imagename = "partbom_sm.gif";
			alttext = "View Part/Bom Information";
		}
		else {
			imagename = "part_sm.gif";
			alttext = "View Part Information";
		}

		statustext = "View Part Information";
		break;


	case "bom":
		imagename = "bom_sm.gif";
		statustext = "View bill of materials";
		alttext = "View bill of materials information";
		doactionparameter = 'item';
		break;

  }
  var str = "";
	if (includelink) {
		str = '<A HREF="#" Onclick="doaction(\''+ doactionparameter +'\',\''+ itemid
			+ '\');return false;"  onMouseOver=\'window.status="'+  statustext 
			+ '";return true;\' onMouseOut=\'status=""\'>' 
			+ '<img src="/pcenterweb/images/'+ imagename + '"  width=16 height=16 border=0 alt="'+ alttext  +'" title="'+ alttext    
			+ '" align=center></A>';
	} else {
		str = '<img src="/pcenterweb/images/'+ imagename + '" width=16 height=16 border=0 alt="'+ alttext   +'" title="'+ alttext  
			+ '" align=center>';
	}

  document.write(str);
}

function writeCountandNavigationLinks(total_item, current_start_idx,link) {
     if(total_item > 0)
	 {
		document.write('<A NAME="asdfasdf">');
		if((start_idx + 1) > total_item)
			start_idx = start_idx - results_size;
		
		if (start_idx <= 0) start_idx = 0;

		document.write('&nbsp;<A NAME=""> </A>');
		document.write((start_idx + 1)+' - ');
	   
		if(total_item <= results_size)
			document.write(total_item);
		else {
			if(end_idx > total_item) {
				end_idx = total_item;
				document.write(total_item);
			} else
				document.write(start_idx + results_size);
		}
		document.write(" of "+ total_item); 
		if(total_item > results_size) {
			if(start_idx != 0) {
				var prev_value = 
				document.write('&nbsp;&nbsp;&nbsp;<A HREF="' + link+ '" Onclick="top.' + current_start_idx + ' = (start_idx - results_size);" style="color: white"><-Prev ' + results_size + '</a>');
			}
			if(end_idx != total_item) {
				var next_value = (total_item - end_idx) > results_size ? results_size: total_item - end_idx;
				document.write('&nbsp;&nbsp;&nbsp;<A HREF="' + link+ '" Onclick="top.' + current_start_idx + ' = (start_idx + results_size);" style="color: white">Next ->' + next_value + '</a>&nbsp;');
			}
	    }
     }
}


function writeselectdeselectallbuttons(framelocation){
	document.write('<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 width=100%><TR><TD>');
	document.write('<input type="button" value="Select All" onClick="'   + framelocation +'.selectall()"> &nbsp;');
	document.write('<input type="button" value="Deselect All" onClick="' + framelocation + '.deselectall()"> </td>');
	document.write('</TR></TABLE>');
}

function getItemAttrName(columnName)
{
	switch(columnName)
	{
		case "File Type":
			return "file_type";
		case "Last User":
			return "last_user";
		case "Prepared On":
			return "prepared_on";
		case "Reviewed On":
			return "reviewed_on";
		case "Released On":
			return "released_on";
		case "Last Modified":
			return "last_modifed";
		case "File Size":
			return "file_size";
		case "Vault Space":
			return "vault_space";
		case "Rel Path":
			return "rel_path";
		default:
			return columnName;
	}
}


//================================
//Functions related to E-Signature
//================================

function ESigRequired(action)
{	
var mainWin = window.open("", "WTCProductCenter");
    var isEsigRequired = mainWin.isEsigRequired(action);
	return isEsigRequired;										
}

function checkPassword(action)
{
var mainWin = window.open("", "WTCProductCenter");
 mainWin.action_type = action;
 var passwindow = window.open("/pcenterweb/check_password.html","displayWindow", "height=280,width=450,screenX=200,screenY=200,top=100,left=100,resizable=yes");
 
}

//================================
//Functions to write the link image
//================================
function writeLinkImage(intend, is_hierarchical, isHead)
{
	
	if (intend > 0) {
    	if(isHead == 0){
			if (is_hierarchical == 1) 
				document.write('<img src="/pcenterweb/images/parent.gif" width=16 height=16 border=0 alt="Hierarchical Head to Tail Link" title="Hierarchical Head to Tail Link" align=center>');
			else 
				document.write('<img src="/pcenterweb/images/coupled_head.gif" width=16 height=16 border=0 alt="Coupled Head to Tail Link" title="Coupled Head to Tail Link" align=center>');
		}
		else{
			if (is_hierarchical == 1) 
				document.write('<img src="/pcenterweb/images/child.gif" width=16 height=16 border=0 alt="Hierarchical Tail to Head Link" title="Hierarchical Tail to Head Link" align=center>');
			else 
				document.write('<img src="/pcenterweb/images/coupled_tail.gif" width=16 height=16 border=0 alt="Coupled Tail to Head Link" title="Coupled Tail to Head Link" align=center>');

		}
	}
}


//==================================================
//Functions to generate a full path with the time stamp for the log file.
//==================================================
function getActionLogFileName(imp_filename)
{
	var today =  new Date();
	var date = today.getDate();
	var month = today.getMonth() + 1;
	var year = today.getYear();
	var hours = today.getHours();
	var mins = today.getMinutes();
	var secs = today.getSeconds();
	if(date <10)
		date = "0" + date;
	if(month <10)
		month = "0" + month;
	if(hours <10)
		hours = "0" + hours;
	if(mins <10)
		mins = "0" + mins;
	if(secs <10)
		secs = "0" + secs;
	
	var index = imp_filename.indexOf(".");
	if(index != -1)
		var fname_wo_ext = imp_filename.substring(0, index);
	else
		fname_wo_ext = imp_filename;

	return ("log\\import\\" + fname_wo_ext + "_" + year + month + date + hours + mins + secs + ".xml");
    
}

function modifyDirString(workdir)
{
	// replace backslash with double blackslashes for work dir
	re = /\\/gi;
 
	newstr=workdir.replace(re, "\\\\");
	return newstr;
}


