// Javascript for starting up helpswitch servlet
// To be imported from client's web site

// Revision Date: 2007-09-10, 2009-09-25

// Default settings
var hpswServer		= "https://www.helpswitch.net";
var hpswSvt		= "/hpsw/servlet/core.StartupSvt";
var availSvt		= "/hpsw/servlet/Available";
var hpswHandle		= null;

var hpswPosition	= 2;		// 0: center, 1-4 UL to UR counterclockwise
var hpswWidth		= 500;
var hpswHeight		= 400;
var hpswStatus		= "yes";
var hpswScrollbars	= "yes";	// changed to yes as of 2009-09-25, rel 3.9.1
var hpswResizable	= "yes";


function openSesame (company, locale, dept, name, email, caseID, member, div, oper) {
	// company (ID) is mandatory, other parmeters are optional
	// Optional paremeters: if one is omitted, the following must be omitted. Otherwise, use null
	var parmList	= "?CO=" + company;				// mandatory company ID
	parmList	+= (locale) ? "&LC=" + locale : "";		// Optional locale
	parmList	+= (dept)   ? "&DEPT="        + dept  : "";	// Optional dept (integer)
	parmList	+= (name)   ? "&clientName="  + name  : "";	// Optional name
	parmList	+= (email)  ? "&clientEmail=" + email : "";	// Optional email
	parmList	+= (caseID) ? "&caseID="      + caseID: "";	// Optional caseID (case is reserved word)
	parmList	+= (member) ? "&MID="         + member: "";	// Optional member ID
	parmList	+= (div)    ? "&DIV="         + div   : "";	// Optional division (integer)
	parmList	+= (oper)   ? "&OPID="        + oper  : "";	// Optional operator ID
	openWindow (hpswServer + hpswSvt + parmList);
}

function setServer (server) {
	// Estabish new hpsw server setting
	// This is necessary for using non-default server
	if (server!=null) hpswServer = server;
}

function setWindow (position, width, height, statusFlag, scrollbarsFlag, resizableFlag) {
	// Establish new window settings for helpswitch, allowing optional parameters
	// All parameters, if defined, must be numeric
	// Call with null for parameters to be ignored
	// Flag: 0, 1 for on and off resp.
	if (position != null		&& !isNaN (position))		hpswPosition	= position;
	if (width != null		&& !isNaN (width)) 		hpswWidth	= width;
	if (height != null		&& !isNaN (height))   		hpswHeight	= height;
	if (statusFlag != null		&& !isNaN (statusFlag))  	hpswStatus	= (statusFlag == 1) ? "yes" : "no";
	if (scrollbarsFlag != null 	&& !isNaN (scrollbarsFlag)) 	hpswScrollbars	= (scrollbarsFlag == 1) ? "yes" : "no";
	if (resizableFlag  != null 	&& !isNaN (resizableFlag))  	hpswResizable	= (resizableFlag == 1)  ? "yes" : "no";
}

function openWindow (urlNParms) {
	// Argument urlNParms has address and all parameters embedded
	// Open popup window to urlNParms
	// Using current hpsw window settings
	var coord = getCoordinate (hpswPosition, hpswWidth, hpswHeight);
	var left  = coord.left;
	var top   = coord.top;	
	// Popup still opened for this page, use it.  Otherwise, open new popup.
	// Scope of handle is limited to one web page
	if (hpswHandle==null || hpswHandle.closed) {
		var parms = "toolbar=no,location=no,directories=no,menubar=no,";
		//var parms = "toolbar=no,location=yes,directories=no,menubar=yes,";
		parms	 += "status=" + hpswStatus + ",";
		parms	 += "scrollbars=" + hpswScrollbars + ",";
		parms	 += "resizable=" + hpswResizable + ",";
		//parms	 += "status=no,scrollbars=no,resizable=yes,";
		parms	 += "screenX=" + left + "," + "screenY=" + top + ",";
		parms	 += "left="    + left + "," + "top="     + top + ",";
		parms	 += "width="  + hpswWidth + "," + "height="  + hpswHeight;
		var wname = (new Date()).getTime();	// a new window name for each invocation
		hpswHandle = open (urlNParms, wname, parms);
	} else
		hpswHandle.focus();
}

function getCoordinate (position, width, height) {
	// Compute coordinates for top left window corner
	// Width, height: dimension of window
	// position: of window wrt screen
	var screenWidth  = screen.availWidth;
	var screenHeight = screen.availHeight;
	var left, top;
	switch (position) {
		case 0:	// center
			left = (screenWidth  - width  - 10) * 0.5;
			top  = (screenHeight - height - 30) * 0.5;
			break;
		case 1:	// top left
			left = 0;
			top  = 0;
			break;
		case 2:	// bottom left
			left = 0;
			top  = screenHeight - height - 60;
			break;
		case 3:	// bottom right
			left = screenWidth  - width  - 10;
			top  = screenHeight - height - 60;
			break;
		case 4:	// top right
			left = screenWidth  - width  - 10;
			top  = 0;
			break;
		default:// center
			left = (screenWidth  - width  - 10) * 0.5;
			top  = (screenHeight - height - 30) * 0.5;
	}
	return new coordinate (left, top);
}

function coordinate (left, top) {
	this.left = left;
	this.top  = top;
}

