﻿
var cErrorBackgroundColor = "#e2bac2";
var cErrorBorderColor = "#ff0000";
var bIE = (navigator.appName.indexOf("Microsoft") != -1);

function f_AddPageLoaded()
{
	try
	{
		Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(f_PageLoaded);
	}
	catch (e) {}
}

function f_PageLoaded()
{
	f_ResetDoubleClick();
}

var sDoubleClickMessage = "Double-click detected... Please wait until current operation has finished.";
var bDoubleClick = false;
function f_DoubleClick()
{
	try
	{
		if (Page_ClientValidate(""))
		{
			if (bDoubleClick)
			{
				alert(sDoubleClickMessage);
				return false;
			}
			else
			{
				bDoubleClick = true;
				return true;
			}
		}
		else
			return false;
	}
	catch (e) {return true;}
}

function f_ResetDoubleClick()
{
	bDoubleClick = false;
}

function f_HijackFormSubmit()
{
	return f_DoubleClick();
}

function f_QSParam(key)	// path
{
	var path = location.href;
	if (arguments.length > 1)
		path = arguments[1];
	
	key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]" + key + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(path);
	
	if (results == null)
		return "";
	else
		return results[1];
}

function f_GetScreenWidth()
{
	if (bIE)
		return document.body.offsetWidth - 20;
	else
		return window.innerWidth - 16;
}

function f_GetScreenHeight()
{
	if (bIE)
		return document.body.offsetHeight - 20;
	else
		return window.innerHeight - 16;
}

function f_GetUrl(url)	// target
{
	var target = "";
	if (arguments.length > 1)
		target = arguments[1];
	
	if (target != "")
	{
		alert("You are now leaving the DMC Intraweb.");
		
		try
		{
			eval("parent." + target + ".location = \"" + url + "\"");
		}
		catch (e)
		{
			window.open(url);
		}
	}
	else
	{
		parent.Content.location = url;
	}
}

function f_GoHome(url)
{
	parent.location = url;
}

function f_SessionEnded(url)
{
	alert("Your session has ended.  Please start over again.  Thank you.");
	
	f_GoHome(url);
}

function f_SelectDropDownValue(e, value)
{
	e.selectedIndex = -1;
	
	for (var i = 0; i < e.options.length; i++)
	{
		if (e.options[i].value == value)
		{
			e.selectedIndex = i;
			break;
		}
	}
}

function f_Right(str, n)
{
	if (n <= 0)     // Invalid bound, return blank string
		return "";
	else if (n > String(str).length)   // Invalid bound, return
		return str;                     // entire string
	else 
	{ 
		// Valid bound, return appropriate substring
		var iLen = String(str).length;
		return String(str).substring(iLen, iLen - n);
	}
}

function f_Left(str, n)
{
    if (n <= 0)     // Invalid bound, return blank string
		return "";
    else if (n > String(str).length)   // Invalid bound, return
		return str;                // entire string
    else // Valid bound, return appropriate substring
		return String(str).substring(0, n);
}

function f_ExportReport(exportButtonUniqueId, reportName)
{
	f_SubmitForm(exportButtonUniqueId, reportName, true, "", "", false, true);
}

function f_SubmitForm(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)
{
	WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit))
}

function DmcKeyValuePair(key, value)
{
	this.Key = key;
	this.Value = value;
}

Array.prototype.GetValue = function(key)
{
	for (var i = 0; i < this.length; i++)
	{
		if (this[i].Key == key)
			return this[i].Value;
	}
	
	return null;
}

Array.prototype.IndexOf = function(value)
{
	var retVal = -1;
	
	for (var i = 0; i < this.length; i++)
	{
		if (this[i] == value)
		{
			retVal = i;
			break;
		}
	}

	return retVal;
}

Array.prototype.GetColumn = function(columnName)
{
	for (var i = 0; i < this.length; i++)
	{
		if (this[i].ColumnName == columnName)
			return this[i];
	}
	
	return null;
}

// a global month names array
var gsMonthNames = new Array(
		'January',
		'February',
		'March',
		'April',
		'May',
		'June',
		'July',
		'August',
		'September',
		'October',
		'November',
		'December'
);

// a global day names array
var gsDayNames = new Array(
	'Sunday',
	'Monday',
	'Tuesday',
	'Wednesday',
	'Thursday',
	'Friday',
	'Saturday'
);

Date.prototype.formatString = function(f)
{
    if (!this.valueOf())
        return ' ';

    var d = this;

    return f.replace(/(yyyy|MMMM|MMM|MM|dddd|ddd|dd|HH|hh|mm|ss|tt)/gi,
        function($1)
        {
            switch ($1)
            {
            case 'yyyy': return d.getFullYear();
            case 'MMMM': return gsMonthNames[d.getMonth()];
            case 'MMM':  return gsMonthNames[d.getMonth()].substr(0, 3);
            case 'MM':   return (d.getMonth() + 1).zf(2);
            case 'dddd': return gsDayNames[d.getDay()];
            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
            case 'dd':   return d.getDate().zf(2);
            case 'HH':	 return d.getHours().zf(2);
            case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case 'mm':   return d.getMinutes().zf(2);
            case 'ss':   return d.getSeconds().zf(2);
            case 'tt':  return d.getHours() < 12 ? 'a' : 'p';
            case 'TT':  return d.getHours() < 12 ? 'AM' : 'PM';
            }
        }
    );
}

String.prototype.string = function(l) 
{ 
	var s = '', i = 0; 
	while (i++ < l) 
	{ 
		s += this; 
	} 
	return s; 
}

String.prototype.zf = function(l) 
{ 
	return '0'.string(l - this.length) + this; 
}

Number.prototype.zf = function(l) 
{ 
	return this.toString().zf(l); 
}

String.prototype.fullTrim = function()
{
   return this.replace(/\s+/g," ").replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,"$1");
}

StringFormat = function(format, value)	// args
{
	var s = format;
	
	for (var i = 1; i < arguments.length; i++)
	{
		s = s.replace("{" + (i - 1).toString() + "}", arguments[i]);
	}
	
	return s;
}

function ParseJSDate(sDate)
{
	try
	{
		var f = sDate.split(",");
		
		var year = parseInt(f[0], 10);
		var month = parseInt(f[1], 10) - 1;
		var day = parseInt(f[2], 10);
		var hour = parseInt(f[3], 10);
		var min = parseInt(f[4], 10);
		var sec = parseInt(f[5], 10);
		
		var dt = new Date(
			year, 
			month, 
			day, 
			hour, 
			min, 
			sec
			);
			
		return dt;
	}
	catch (e)
	{
		return sDate;
	}
}

function f_SetIntrawebPageTitle(pageTitle) //applicationTitle
{
//	alert(top.document.title);
//	alert(pageTitle + " - " + applicationTitle + " - " + intrawebTitle);
//	alert(top.location.href + " -- " + location.href);
//	alert(top.title);

	var intrawebTitle = m_IntrawebTitle;
	var applicationTitle = "";
	if (arguments.length > 1)
		applicationTitle = arguments[1];

		if (applicationTitle == "")
			top.document.title = pageTitle + " - " + intrawebTitle;
		else
			top.document.title = pageTitle + " - " + applicationTitle + " - " + intrawebTitle;
}