var m_objUnHighlightRow
var g_strDateTT = "Date/Time Quick Keys Enabled"

function fnOpenWindow(p_strType)
{
	window.open("../Pages/Info.aspx?Info="+p_strType,'info','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no,resizable=no');
}

function fnOnlineReviewPageChangeClick(p_strKey)
{
	switch(p_strKey) {
		case "PAGECORRESP":	{
			document.getElementById("frmPageChange").action = "CaseCorrespondence.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		case "PAGEMAIN": {
			document.getElementById("frmPageChange").action = "OnlineReview.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		case "PAGEPROGRESSION": {
			document.getElementById("frmPageChange").action = "CaseProgression.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		case "PAGERELATED": {
			document.getElementById("frmPageChange").action = "CaseRelated.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		case "PAGELOGCALL": {
			document.getElementById("frmPageChange").action = "OnlineLogMessage.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		case "PAGECAPTURES": {
			document.getElementById("frmPageChange").action = "CaseCaptures.aspx";
			document.getElementById("frmPageChange").submit();
			break	}
		}
	return false;
}

function fnTableEvent(p_strEvent)
{
	var l_rowRow
	var l_celCell
	var l_intCount
	var l_tblTable
	var l_strTableName
	
	l_strTableName = "";
	l_tblTable = fnFindElement(window.event.srcElement, "TABLE", 10);
	if (l_tblTable != null) { l_strTableName = l_tblTable.id; }
	
	switch(p_strEvent) {
		case "M_OVER": {
			if (fnFindElement(window.event.srcElement, "TH", 10) != null) { return; }
			fnHightlightRow(fnFindElement(window.event.srcElement, "TR", 10), true);
			break }
		case "M_OUT": {
			if (fnFindElement(window.event.srcElement, "TH", 10) != null) { return; }
			fnHightlightRow(fnFindElement(window.event.srcElement, "TR", 10), false);
			break }
		case "CLICK": {
			l_rowRow = fnFindElement(window.event.srcElement, "TR", 10);
			
			if (l_rowRow == null) { return; }
			for (l_intCount=0;l_intCount<l_rowRow.cells.length;l_intCount++) {
				l_celCell = l_rowRow.cells(l_intCount);
				if (l_celCell.id == "ClickData") {
					fnTableClick(l_strTableName, l_rowRow, l_celCell.innerText);
					break;
				}
			}
		}
	}
}
			
function fnHightlightRow(p_objRow, p_blnHighlight)
{
	var l_celCell
	var l_intCount
	
	for (l_intCount=0;l_intCount<p_objRow.cells.length;l_intCount++) {
		l_celCell = p_objRow.cells(l_intCount);
		if (p_blnHighlight == true)
		{	l_celCell.style.color = "#FFFF00"; }
		else
		{	l_celCell.style.color = "white"; }
	}
}

function fnFindElement(p_objElement, p_strTagname, p_intIterations)
{
	var l_intIterate
	var l_objCurrent
	
	l_intIterate = 0
	l_objCurrent = p_objElement
	
	while (!((l_objCurrent.tagName == p_strTagname.toUpperCase()) || (l_intIterate == p_intIterations)))
	{
		l_objCurrent = l_objCurrent.parentElement;
		l_intIterate++
	} 
	
	if (l_objCurrent.tagName == p_strTagname.toUpperCase())
	{	return l_objCurrent; }
	else
	{	return null; }		
}

function fnSetRowColour(p_lngID)
{
	var l_obj

	if (window.event == null) { return; }
	if (window.event.srcElement == null) { return; }
	
	if (window.event.srcElement.tagName != "TD") {
		l_obj = window.event.srcElement.parentElement;
		if (l_obj.tagName != "TD") { l_obj = l_obj.parentElement; } }
	else
	{	l_obj = window.event.srcElement }
	
	switch (l_obj.parentElement.className.toUpperCase()) {
		case "", "CLSROWHIGHLIGHT": {
			if (p_lngID == 1) {
				if (isObject(m_objUnHighlightRow) == true) {
					if (m_objUnHighlightRow != null) {
						m_objUnHighlightRow.className = "";
						m_objUnHighlightRow = null;
					}
				}
				l_obj.parentElement.className = "clsRowHighlight";
			}
			else
			{	l_obj.parentElement.className = ""; }
		}
	}
}

function fnRestrictKey(p_intType)
{
  var l_dteDate
  var l_strBoxName
  var l_intKey

  l_strBoxName = window.event.srcElement.id;
  if (l_strBoxName == "") { l_strBoxName = window.event.srcElement.name; }
  if (l_strBoxName == "") { return true; }
	if (document.all(l_strBoxName).readonly == true) { return true; }

  //p_intType:
  //	1	- Date
  // 2 - Time
  // 3 - Date + Time
  // 4 - Integer
  // 5 - Decimal
  // 6 - Currency (allow pound sign)
	// 7 - File names (dont let \/:*?"<>|!)
	// 8 - VRM (letters, numbers, no spaces)
	
  if (window.event.keyCode == 8) { return true; } // Then Exit Function 'Backspace
  if (window.event.keyCode == 9) { return true; } // Then Exit Function 'Tab
  
  l_intKey = window.event.keyCode;

  //Check for a quick date function...
  switch(String.fromCharCode(l_intKey)) {
		case "+": case "-": { if (p_intType == 1 || p_intType == 3 || p_intType == 4 || p_intType == 5 || p_intType == 6) { return true; } }
    case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0": case "*": case "?": case "_": case "%": { return true; }
    case " ": { if (p_intType == 3) { return true; } }
    case "/": { if (p_intType == 1 || p_intType == 3) { return true; } }
    case ":": case "p": { if (p_intType == 2 || p_intType == 3) { return true; } }
    case ".": { if (window.event.srcElement.value.indexOf(".") == -1 && (p_intType == 5 || p_intType == 6)) { return true; } }
    case "£": { if (p_intType == 6) { return true; } }
    case "T": case "Y": case "N": case "M": case "t": case "y": case "n": case "m": {
			if (p_intType == 1 || p_intType == 2 || p_intType == 3) {
				if (p_intType == 1 || p_intType == 3) {	l_dteDate = fnGetQuickDate(String.fromCharCode(l_intKey)); }

				document.getElementById(l_strBoxName).value = l_dteDate;
				window.event.returnValue = false
				return true; } }
  }
  
  if (((l_intKey >= 65 && l_intKey <= 90) || (l_intKey >= 97 && l_intKey <= 122)) && (p_intType == 7)) { return true; }
  
  window.event.returnValue = false;
	return false;
}

function fnGetQuickDate(p_strOperator)
{
  var l_intCount
  var l_dteDate

  //p_strOperator: T-Today, Y-Yesterday, N-Tommorrow, M-First day of month, +/-X Days before now.
  
  switch(p_strOperator.toUpperCase()) {
    case "T": { 
      l_dteDate = new Date();
      return FormatDateTime(l_dteDate); }
    case "Y": { 
			l_dteDate = new Date();
      return FormatDateTime(dateAdd("d", -1, l_dteDate)); }
    case "N": { 
      l_dteDate = new Date();
      return FormatDateTime(dateAdd("d", 1, l_dteDate)); }      
    case "M": { 
      l_dteDate = new Date();
      l_intCount = l_dteDate.getDate()  
      return FormatDateTime(dateAdd("d", 1 - l_intCount, l_dteDate)); }
  }
}
		
function fnFormatDateTime(p_intDateTime)
{
	var l_dteDate
	var l_intDays
	var l_intMonths
	var l_intYears
	var l_strYears
	var l_strSource
	var l_intOffset
	var l_strSplit
	
	/*		
  'p_intDateTime: 0 - Date
  '								1 -	Date + Time
  '							  2 - Time
  '								3	-	Short Time HH:nn
	'								4	- Short Date dd/MM
	*/
	
	if (p_intDateTime != 0) { alert("Functionality not yet supported"); return; }
	
	l_strSource = window.event.srcElement.value;
	if (l_strSource == "") { return; }
	
	if (l_strSource.substring(0, 1) == "+" || l_strSource.substring(0, 1) == "-") {			
		l_dteDate = new Date();
		l_intOffset = new Number(l_strSource.substring(1));
		if (l_strSource.substring(0, 1) == "-") { l_intOffset = -1 * l_intOffset; }
		l_dteDate.setDate((l_dteDate.getDate() + l_intOffset));	
	}
	else {	
		l_strSplit = l_strSource.split("/");
		l_dteDate = new Date();
		l_dteDate.setFullYear(l_strSplit[2]);
		l_dteDate.setMonth(l_strSplit[1] - 1);
		l_dteDate.setDate(l_strSplit[0]);		

		l_intYears = l_dteDate.getFullYear();
		//if (l_strSplit[1] - 1 != 10)
		//{ l_intMonths = l_dteDate.getMonth() + 1; }
		//else
		//{ l_intMonths = l_dteDate.getMonth(); }
		
		l_intMonths = l_dteDate.getMonth() + 1
		
		l_intDays = l_dteDate.getDate();
		l_strYears = new String(l_intYears);
					
		if (l_intYears < 1900) { l_intYears = new Number(l_strYears.substring(l_strYears.length - 2, l_strYears.length)) + 2000; }
		l_dteDate = new Date(l_intMonths + "/" + (l_intDays) + "/" + l_intYears);
	}
	
	if (isNaN(new Date(l_dteDate)))	{ 
		alert("Please enter a valid date"); 
		window.event.srcElement.focus();
		window.event.srcElement.select(); }
	else
	{ window.event.srcElement.value = FormatDateTime(l_dteDate); }
}
			
function FormatDateTime(DateTime)
{
  var gg;
  var mm;
  
  if (DateTime == null) { return false; }
  
  var strDate = new String(DateTime);
    
  if (strDate.toUpperCase() == "NOW")
  {
      var myDate = new Date();
      strDate = String(myDate);
  }
  else
  {
      var myDate = new Date(DateTime);
      strDate = String(myDate);
  }
      
  var Month = new String(strDate.substring(4, 7)), MonthNumber = 0;
  if (Month == "Jan") { Month = "January"; MonthNumber = "01"; }
  if (Month == "Feb") { Month = "February"; MonthNumber = "02"; }
  if (Month == "Mar") { Month = "March"; MonthNumber = "03"; }
  if (Month == "Apr") { Month = "April"; MonthNumber = "04"; }
  if (Month == "May") { Month = "May"; MonthNumber = "05"; }
  if (Month == "Jun") { Month = "June"; MonthNumber = "06"; }
  if (Month == "Jul") { Month = "July"; MonthNumber = "07"; }
  if (Month == "Aug") { Month = "August"; MonthNumber = "08"; }
  if (Month == "Sep") { Month = "September"; MonthNumber = "09"; }
  if (Month == "Oct") { Month = "October"; MonthNumber = "10"; }
  if (Month == "Nov") { Month = "November"; MonthNumber = "11"; }
  if (Month == "Dec") { Month = "December"; MonthNumber = "12"; }
  
  var curPos = 11;
  var MonthDay = new String(strDate.substring(8, 10));
  if (MonthDay.charAt(1) == " ")
  {
      MonthDay = "0" + MonthDay.charAt(0);
      curPos--;
  } 
  
  var Year = new String(strDate.substring(strDate.length - 4, strDate.length));
  
  strDate = MonthDay + "/" + MonthNumber + "/" + Year;
  
  return strDate;
}

function dateAdd(p_Interval, p_Number, p_Date)
{	
	p_Number = new Number(p_Number);
	
	var dt = new Date(p_Date);
	
	switch(p_Interval.toLowerCase()){
		case "yyyy": {// year
			dt.setFullYear(dt.getFullYear() + p_Number);
			break; }
		case "q": {		// quarter
			dt.setMonth(dt.getMonth() + (p_Number*3));
			break; }
		case "m": {		// month
			dt.setMonth(dt.getMonth() + p_Number);
			break; }
		case "y":		// day of year
		case "d":		// day
		case "w": {		// weekday
			dt.setDate(dt.getDate() + p_Number);
			break; }
		case "ww": {	// week of year
			dt.setDate(dt.getDate() + (p_Number*7));
			break; }
		case "h": {		// hour
			dt.setHours(dt.getHours() + p_Number);
			break; }
		case "n": {		// minute
			dt.setMinutes(dt.getMinutes() + p_Number);
			break; }
		case "s": {		// second
			dt.setSeconds(dt.getSeconds() + p_Number);
			break; }
		case "ms": {		// second
			dt.setMilliseconds(dt.getMilliseconds() + p_Number);
			break; }
		default: { 
			return "invalid interval: '" + p_Interval + "'"; }
	}
	return dt;
}

function getDateFromEnglish(p_strEnglishDate)
{
	var l_strSplit = p_strEnglishDate.split("/");
	if (l_strSplit.length != 3) { return ""; }

	var l_dteDate = new Date();
	l_dteDate.setFullYear(l_strSplit[2]);
	l_dteDate.setMonth(l_strSplit[1] - 1);
	l_dteDate.setDate(l_strSplit[0]);		
	
	return l_dteDate
}

function fnTextAreaMaxlength(p_intLen)
{
	switch(window.event.keyCode) { case 37: case 38: case 39: case 40: case 8: { return; } }				
	if (window.event.srcElement.value.length + 1 > p_intLen) { window.event.returnValue = false; }
}

function fnHasWildCard(p_strString)
{
    var l_intCount
    var l_strWildCard = "_?%*"

    for (l_intCount=0;l_intCount<l_strWildCard.length;l_intCount++) {
      if (p_strString.indexOf(l_strWildCard.substring(l_intCount, l_intCount + 1)) >= 0) { return true; }
    }
    return false;
}

function fnLoadDateFns(p_strDateBox)
{
	var l_strDateTime
	var l_strDTStyle

	l_strDTStyle = "DATE";
	if (document.getElementById(p_strDateBox & "_Style") != null)	{ l_strDTStyle = document.getElementById(p_strDateBox & "_Style").value; }
	l_strDateTime = window.showModalDialog("Calendar.aspx", l_strDTStyle + "|" + document.getElementById(p_strDateBox).value, "status:no;center:yes;help:no;minimize:no;maximize:no;border:thin;statusbar:no;dialogwidth:495px;dialogheight:247px");
	if (l_strDateTime != "") { document.getElementById(p_strDateBox).value = l_strDateTime; }
}