<!--
File Version Start - Do not remove this if you are modifying the file
Build: 8.5.2
File Version End
-->
<%
// helper_js.asp
//
// This file contains a number of common helper functions.
//
//LOCALIZATION STRINGS *****************************************************************************************
var L_SUCCESS="Success";
var L_FAILED="Failed";
var L_RUNNING="Running";
var L_PENDING="Pending";
var L_RECURRING="Recurring";
var L_PAUSED="Paused";
var L_STOPPED="Stopped";
var L_UNKNOWN = "Unknown";
//END OF LOCALIZATION STRINGS **********************************************************************************
%>
<%
// Constants
var C_SI_CAN_CREATE_USERS = "SI_CAN_CREATE_USERS";
var C_SI_IS_VALID_PRODUCT = "SI_IS_VALID_PRODUCT";
var vbCRLF = "\n";
var GUEST_ID = 11;
var C_MAXLONGINT = 2147483647;
function IsCSP()
{
var bCSP = false;
var hostname = String(Request.ServerVariables.Item("WCS_HOST_NAME"));
if (hostname.length > 0 && hostname != "undefined")
bCSP = true;
return bCSP;
}
function IsWin32Server()
{
var bWin32 = false;
var path = String(Request.ServerVariables.Item("PATH_TRANSLATED"));
if (path.indexOf(":\\") > 0)
bWin32 = true;
return bWin32;
}
function GetSession(name)
{
if (IsWin32Server())
return Session.Value(name);
else
return Session.Value(name).Item;
}
function SetSession(name, value)
{
if (IsWin32Server())
Session.Value(name) = value;
else
Session.Value(name).Item = value;
}
function GetCookie(name)
{
return String(Request.Cookies.Item(name));
}
function GetSubCookie(name, subkey)
{
if (IsCSP())
return Request.Cookies.Item(name).SubItem(subkey);
else
return Request.Cookies(name)(subkey);
}
function SetCookie(name, value)
{
if (IsCSP())
Response.Cookies.Item(name).Value = value;
else
Response.Cookies(name) = value;
}
function SetSubCookie(name, subkey, value)
{
if (IsCSP())
Response.Cookies.Item(name).SubItem(subkey, value);
else
Response.Cookies(name)(subkey) = value;
}
function SetCookiePath(name, path)
{
Response.Cookies.Item(name).Path = path;
}
function SetCookieExpires(name, expDate)
{
Response.Cookies.Item(name).Expires = expDate;
}
function GetQueryString(name)
{
if (arguments.length > 0)
return Request.QueryString.Item(name);
else
return Request.QueryString.Item();
}
function GetFormItem(name)
{
if (arguments.length > 0)
return Request.Form.Item(name);
else
return Request.Form.Item();
}
function GetServerVariable(name)
{
return Request.ServerVariables.Item(name);
}
if(IsWin32Server())
Date.fromVarDate = function(v) { return new Date(v); }
function twoDigitString (n)
{
var s = String (n);
if (s.length == 1)
return "0" + s;
else
return s;
}
// HERE'S OUR OWN VERSIONS OF LOCALISED DATE TIME STRINGS
// ALL MAPPED TO Date.toCELocaleString()
function DisplayDateTimeDE (d) // Format: dd.MM.yyyy HH:mm:ss
{
var gen_delim = " ";
var date_delim = ".";
var time_delim = ":";
var year = d.getFullYear();
var month = twoDigitString (d.getMonth()+1);
var day = twoDigitString (d.getDate());
var hours = twoDigitString (d.getHours());
var minutes = twoDigitString (d.getMinutes());
var seconds = twoDigitString (d.getSeconds());
var ret = day + date_delim + month + date_delim + year + gen_delim
+ hours + time_delim + minutes + time_delim + seconds;
return ret;
}
function DisplayDateTimeEN (d) // Format: M/d/yyyy h:mm:ss AMorPM
{
var gen_delim = " ";
var date_delim = "/";
var time_delim = ":";
var year = d.getFullYear();
var month = d.getMonth()+1;
var day = d.getDate();
var AMPM = "AM"
var hours = d.getHours();
if (hours >= 12)
AMPM = "PM";
if (hours == 0)
hours = 12;
if (hours != 12)
hours = hours % 12;
var minutes = twoDigitString (d.getMinutes());
var seconds = twoDigitString (d.getSeconds());
var ret = month + date_delim + day + date_delim + year + gen_delim
+ hours + time_delim + minutes + time_delim + seconds + gen_delim + AMPM;
return ret;
}
function DisplayDateTimeFR (d) // Format: dd/MM/yyyy HH:mm:ss
{
var gen_delim = " ";
var date_delim = "/";
var time_delim = ":";
var year = d.getFullYear();
var month = twoDigitString (d.getMonth()+1);
var day = twoDigitString (d.getDate());
var hours = twoDigitString (d.getHours());
var minutes = twoDigitString (d.getMinutes());
var seconds = twoDigitString (d.getSeconds());
var ret = day + date_delim + month + date_delim + year + gen_delim
+ hours + time_delim + minutes + time_delim + seconds;
return ret;
}
function DisplayDateTimeJA (d) // Format: yyyy/MM/dd H:mm:ss
{
var gen_delim = " ";
var date_delim = "/";
var time_delim = ":";
var year = d.getFullYear();
var month = twoDigitString (d.getMonth()+1);
var day = twoDigitString (d.getDate());
var hours = d.getHours();
var minutes = twoDigitString (d.getMinutes());
var seconds = twoDigitString (d.getSeconds());
var ret = year + date_delim + month + date_delim + day + gen_delim
+ hours + time_delim + minutes + time_delim + seconds;
return ret;
}
if (GetLang() == "de")
Date.toCELocaleString = DisplayDateTimeDE;
else if (GetLang() == "fr")
Date.toCELocaleString = DisplayDateTimeFR;
else if (GetLang() == "ja")
Date.toCELocaleString = DisplayDateTimeJA;
else
Date.toCELocaleString = DisplayDateTimeEN; // default
// FUNCTION WHICH WILL CREATE AN ABSOLUTE PATH SO OUR LINKS WILL WORK IN CGI
function GetLinkPath()
{
var ret = "";
var path_info = String(Request.ServerVariables.Item("PATH_INFO"));
var regex = /[^\/]*\//g;
var matchArr = path_info.match(regex);
for(var i = 0; i < matchArr.length; ++i)
{
ret += matchArr[i];
}
return ret;
}
function GetParentLinkPath()
{
var ret = "";
var path_info = String(Request.ServerVariables.Item("PATH_INFO"));
var regex = /[^\/]*\//g;
var matchArr = path_info.match(regex);
for(var i = 0; i < (matchArr.length -1); ++i)
{
ret += matchArr[i];
}
return ret;
}
// JAVASCRIPT ENCODES A STRING (I.E., REPLACES CARRIAGE RETURNS, SINGLE QUOTES, DOUBLE
// QUOTES, AND BACKSLASHES WITH THE ESCAPED EQUIVALENTS)
function JSEncode(str)
{
str = String(str);
var j = 0;
var strLen;
var ch;
strLen = str.length-1;
while(j <= strLen)
{
ch = str.charAt(j);
if(ch == '\'' || ch == '"' || ch == '\\')
{
str = str.substring(0, j) + "\\" + ch + str.substring(j+1, strLen+1);
++strLen;
++j;
}
else if(ch == '\n' || ch == '\r')
{
str = str.substring(0, j) + " " + str.substring(j+1, strLen+1);
}
++j;
}
return str;
}
function SetPageExpiry()
{
var exp = new Date();
exp.setFullYear(exp.getFullYear()-1);
Response.ExpiresAbsolute = exp.getVarDate();
}
function GetLang()
{
var lang = String(Request.ServerVariables.Item("HTTP_ACCEPT_LANGUAGE"));
lang = lang.substr(0, 2).toLowerCase();
return lang;
}
function Trim(s)
{
var ret = TrimLeft(s);
ret = TrimRight(ret);
return ret;
}
function TrimLeft(s)
{
return s.replace(/^\s+/, "");
}
function TrimRight(s)
{
return s.replace(/\s+$/, "");
}
// CHECKS IF THE SYSTEM PROPERTIES ALLOW CREATING NEW USERS
function CanCreateUsersSystem(es)
{
try
{
var cancreateuser_version = es.SystemInfoProperties.Item(C_SI_CAN_CREATE_USERS).Value;
if(!cancreateuser_version)
{
var isValidProduct = es.SystemInfoProperties.Item(C_SI_IS_VALID_PRODUCT).Value;
// IF NOT VALID PRODUCT THEN SHOW LINKS AS IF PRO VERSION
if(!isValidProduct)
cancreateuser_version = true;
}
return cancreateuser_version;
}
catch(e)
{
return false;
}
}
// CHECK IF THE ADMIN SETTINGS ALLOW CREATING NEW USERS
function CanCreateUsersAdmin(iStore)
{
var cancreateuser_admin;
try
{
var ufCol = iStore.Query("SELECT SI_ID FROM CI_SYSTEMOBJECTS WHERE SI_ID = 19");
var rights = ufCol.Item(1).SecurityInfo.AnyPrincipal(GUEST_ID).Rights;
var right = rights.Item("#1"); // check for AddRight
cancreateuser_admin = right.Granted;
}
catch (e)
{
cancreateuser_admin = false;
}
return cancreateuser_admin;
}
function GetParam(name)
{
var ret = Request.QueryString.Item(name);
if(ret.Count == 0)
ret = Request.Form.Item(name);
return ret;
}
// Bitwise (XOR) comparison of 2 hresults to determine equality.
//
// Javascript stores numbers as floating-point, but this coerces them back to 32-bit integers so we
// can more easily compare hresults (given that failed hresults have the high-order bit turned on).
//
function EqualsHResult (hr1, hr2)
{
if ((hr1 ^ hr2) == 0)
return true;
else
return false;
}
// CONVERSION FUNCTIONS
function CheckedStringFromBool (b)
{
if (b == true || b == -1)
return "CHECKED";
else
return "";
}
function UncheckedStringFromBool (b)
{
if (b == true || b == -1)
return "";
else
return "CHECKED";
}
function BoolFromCheckBox (cb)
{
if (cb.Count == 0)
return false;
else
return true;
}
function DaysFromSeconds (s)
{
return parseInt (s / 86400);
}
function SecondsFromDays (d)
{
return parseInt (d) * 86400;
}
function MinutesFromSeconds (s)
{
return parseInt (s / 60);
}
function SecondsFromMinutes (m)
{
return parseInt (m) * 60;
}
// status constants
var ceStatusPending = 9;
var ceStatusPaused = 8;
var ceStatusRunning = 0;
var ceStatusSuccess = 1;
var ceStatusFailure = 3;
function GetStatusString(obj)
{
var ret = L_UNKNOWN;
var status = obj.SchedulingInfo.Status;
if(status == ceStatusPending)
{
if(obj.Properties.Item("SI_RECURRING") != 0)
{
ret = L_RECURRING;
}
else
{
ret = L_PENDING;
}
}
else if(status == ceStatusRunning)
{
ret = L_RUNNING;
}
else if(status == ceStatusPaused)
{
ret = L_PAUSED;
}
else if(status == ceStatusSuccess)
{
ret = L_SUCCESS;
}
else if(status == ceStatusFailure)
{
ret = L_FAILED;
}
return ret;
}
// Function to Make a string query friendly by enclosing
// % _ [ ] - ^
// with [].
//
// Also change ' to ''
//
// Used mostly in the conditional LIKE clause
function WrapWildCardCharsFromString( inStr )
{
var outStr = inStr;
// do ' first
outStr = outStr.replace( /'/g, "''" );
// now for % _ [ ] - ^
outStr = outStr.replace( /([\%\_\[\]\-\^])/g, "[$1]" );
return outStr;
}
// Function to "quote" an object's property, to be used in a query
//
// ObjectProp: a string value to quote
//
// Return value: the quoted string value
//
function QuoteObjectProp(ObjectProp)
{
var QuotedObjectProp = ObjectProp.replace(/'/g, "''");
return "'" + QuotedObjectProp + "'";
}
// Function to retrieve all the objects for a query.
//
// iStore: an InfoStore object
// SelectProps: the properties to return for each object
// ObjectTable: the database table to query (CI_INFOOBJECTS or CI_SYSTEMOBJECTS)
// WhereClause: the query restrictions
// OrderBy: the property to sort the return set on
//
function GetCompleteCollection(iStore, SelectProps, ObjectTable, WhereClause, OrderBy)
{
var queryStr = "SELECT " + SelectProps + " FROM " + ObjectTable + " WHERE " + WhereClause + " ORDER BY " + OrderBy + ",SI_ID";
var col = iStore.Query(queryStr);
var count = col.Count;
var resultCount = col.ResultCount;
var returnColl = col;
while(resultCount > count)
{
var lastObj = col.Item(count);
col = GetNextCollection(iStore, SelectProps, ObjectTable, WhereClause, OrderBy, lastObj);
count = col.Count;
resultCount = col.ResultCount;
for(var i = 1; i <= count; ++i)
{
returnColl.Copy(col.Item(i), 0);
}
}
return returnColl;
}
// Function to retrieve the next batch of objects in a query.
//
// iStore: an InfoStore object
// SelectProps: the properties to return for each object
// ObjectTable: the database table to query (CI_INFOOBJECTS or CI_SYSTEMOBJECTS)
// WhereClause: the query restrictions
// OrderBy: the property to sort the return set on
// LastObject: the last object from the previous collection (can be null for the first query)
//
function GetNextCollection(iStore, SelectProps, ObjectTable, WhereClause, OrderBy, LastObject)
{
var queryStr = "SELECT " + SelectProps + " FROM " + ObjectTable + " WHERE " + WhereClause;
if(LastObject)
{
var quotedLastValue = QuoteObjectProp(String(LastObject.Properties.Item(OrderBy)));
var lastID = LastObject.ID;
queryStr += " AND (" + OrderBy + " > " + quotedLastValue;
queryStr += " OR (" + OrderBy + " = " + quotedLastValue + " AND SI_ID > " + lastID;
queryStr += "))";
}
queryStr += " ORDER BY " + OrderBy + ",SI_ID";
var returnColl = iStore.Query(queryStr);
return returnColl;
}
%>