/********************************************/
/*	FILE: Shared.js							
/*	DESCRIPTION:			
/*		Miscellaneous shared javascript		
/*		functions used thruout the Group3	
/*		application.						
/*											
/*	Created By:								
/*	    TCD Technologies, LLC				
/*		Jan. 29, 2002						
/********************************************/
//------------------------------------------------------------------------------
// return a string with thousand separator
// eg, 1234.1 becomes 1,234.10
function formatAmount(s)
{
  	var ret = "";
  	var amtStr = "" + s;
  	var dot = amtStr.indexOf('.');
	if (dot == -1)
		dot = amtStr.length;
  	var intStr = amtStr.substring(0, dot);
  	var amt = parseInt(intStr);

  	var l = intStr.length;
  	var pos = l % 3;
  	if (pos != 0) 
    		ret = amtStr.substring(0, pos) + ',';
  
  	while(pos < l)
  	{
   		ret += amtStr.substring(pos, pos+3) + ',';
   		pos += 3;
  	}

	if (ret.length > 1)
	  	ret = ret.substring(0, ret.length - 1);

	if (amtStr.length == l || amtStr.charAt(amtStr.length - 1) == '.')
		ret += ".00";
	else
	{
		ret += ".";
		var dec = amtStr.substring(dot + 1);
		if (dec.length == 1)
			dec += "0";
  		ret += dec;
	}
  	return ret;
} 
//------------------------------------------------------------------------------
// check if it is in amount format
function isAmountFormat(c) 
{
	var number = "" + c;
	var specialChar = " ";
	var commaCount = 0;
	var digitsAfterDot = 0;
	var digitsAfterComma = 0;
	var specialCharCount = 0;
	var digitFlag = false;
	var digitCount = 0;
	for(var k = 0;k< number.length; k++) 
	{
	        var i = number.substring(k, k+1);
		if(isDigit(i) && digitsAfterDot < 2  && digitsAfterComma <= 3 ) 
		{
			digitFlag = true;
			digitCount++;
			if(specialChar == ".")
			{
				digitsAfterDot++;
			}
			if(specialChar == ",")
			{
				digitsAfterComma++;
			}
		}
		else if (isSpecialCharacter(i) && digitsAfterDot < 2 && digitsAfterComma <= 3) 
		{
			if(digitFlag == true) 
			{
				digitFlag = false;
				specialChar = i;
				if(i == ",")
				{
					commaCount ++; 
					digitsAfterComma = 0;
				}
				specialCharCount++;
			}	
			else 
			{
				return false;
			}
		}
		else 
		{
			return false;
		}
	 }
	if ((specialCharCount > 3) || (commaCount > 2)) 
	{
		return false;
	}
	// cents must be 2 digits
	if((specialChar == "." ) && (digitsAfterDot < 2))
	{
		return false;
	}
	// make sure number does not end in dot or comma
	if(isSpecialCharacter(i))
	{
		return false;
	}
	return true;	
}//------------------------------------------------------------------------------function isAmountAllowable(amount)
{
	if (!isAmountFormat(amount))
    	return false
	amount = amountOnly(amount)
	var floatAmt = parseFloat(amount)
	var maxAmt = parseFloat(99999.99)
	var minAmt = parseFloat(0.01)

	if ((isNaN(floatAmt)) || (amount == ""))
    	return false
    if ((floatAmt >= minAmt) && (floatAmt <= maxAmt))
    	return true
   	return false
}
//------------------------------------------------------------------------------
function amountOnly(amt)
{
	var amount = "";
	var amtStr = "" + amt;
	var start = 0;
	var pos = amtStr.indexOf(',');
	while (pos != -1)
	{
		amount += amtStr.substring(start, pos);
		start = pos + 1;
		pos = amtStr.indexOf(',', start);
	}
	amount += amtStr.substring(start);
	return amount;
}
//------------------------------------------------------------------------------
function checkAmtRange(amt, min, max)
{
	if (amt > max || amt < min)
	{
		return false;
	}

	return true;
} 
//------------------------------------------------------------------------------
function isNull(s)
{
	if (s.length == 0) 
	{
		return true
	}
	return false;
}
//------------------------------------------------------------------------------
function stringCompare(string1, string2, caseSensitive)
{
	var str1;
	var str2;

	if (caseSensitive == false)
	{
		str1 = string1.toLowerCase();
		str2 = string2.toLowerCase();
	}
	else
	{
		str1 = string1;
		str2 = string2;
	}
	if (str1 == str2)
	{
		return true;
	}
	else
	{	
		return false;
	}
} 
//------------------------------------------------------------------------------
function splitIt(myString, delimiter)
{
	var retArray = new Array();
	var pos = myString.indexOf(delimiter);

	if(pos == -1)
	{
		retArray[0] = myString;
		return retArray;
	}
	else 
	{
		var arrPos = 0;
		var remStr = myString;
		var remStr1 = myString;

		while(true)
		{
			retArray[arrPos]= remStr.substring(0,pos);
			remStr = remStr.substring(pos+1);
			pos = remStr.indexOf(delimiter);
			arrPos++;
			if(pos == -1)
				 break;
		}

		retArray[arrPos] = remStr;
		return retArray;
	}
}
//------------------------------------------------------------------------------
function isLowerCase(c) 
{
	if (c >= "a" && c <= "z") 
	{ 
		return true; 
	}
	return false;
}
//------------------------------------------------------------------------------
function isUpperCase(c) 
{
	if (c >= "A" && c <= "Z") 
	{ 
		return true; 
	}
	return false;
}
//------------------------------------------------------------------------------
function isAlpha(c) 
{
	if ((c >= "A" && c <= "Z") || (c >= "a" && c <= "z") )
	{ 
		return true; 
	}
	return false;
}
//------------------------------------------------------------------------------
function isDigit(c) 
{
	var test = "" + c;
	if (test >= "0" && test <= "9") 
	{ 
		return true; 
	}
	return false;
}
//------------------------------------------------------------------------------
function isNumber(c)
{
	if ( isNull( c ) )
		return false;
	var number = "" + c;
	for(var k = 0;k< number.length; k++) 
	{
		var i = number.substring(k, k+1); 	
		if(!isDigit(i)) 
		{
			return false;
		}
	}
	return true;
}
//------------------------------------------------------------------------------
function isCarriageReturn(c) 
{
	var test = "" + c;
	if (test == "\n" || test == "\r") 
	{
		return true; 
	}
	return false;
}
//------------------------------------------------------------------------------
function removeCarriageReturn(s) 
{
	var test = "" + s;
	var new_s = "";
	for (var k = 0; k < test.length; k++) 
	{
		var c = test.substring(k, k+1);
		if (isCarriageReturn(c) == false) 
		{ 
			new_s = new_s + c; 
		} 
		else 
		{ 
			new_s = new_s + " "; 
		}
	}
	return new_s;
}
//------------------------------------------------------------------------------
function hasWhiteSpace (s) 
{
	var i;
	for (i=0;i<s.length;i++) 
	{
		var c = s.charAt(i);
		if (c == " " || c == "\t" || c == "\n" || c == "\r") 
		{
			return true;
		}
	}
	return false;
}
//------------------------------------------------------------------------------
function trimWhiteSpace(hasSpaceString) 
{
	var trimmedString = "";

	while(hasSpaceString.charAt(0) == " ") 
	{
		trimmedString = hasSpaceString.substring(1,(hasSpaceString.length));
		hasSpaceString = trimmedString;
	}
	while(hasSpaceString.charAt(hasSpaceString.length - 1) == " ") 
	{
		trimmedString = hasSpaceString.substring(0,(hasSpaceString.length - 1));
		hasSpaceString = trimmedString;
	}
	return hasSpaceString;
}
//------------------------------------------------------------------------------
function stripInitZeroSpace(s)
{
  	var ret = "";
  	s = trimWhiteSpace(s);
  	for (var i = 0; i < s.length; i++)
    		if (s.charAt(i) != '0') break;

  	ret = s.substring(i);

  	return ret;
} 
//------------------------------------------------------------------------------
function isSpecialCharacter(c) 
{
	var test = "" + c;
	if (test == "," || test == "." ) { return true; }
	else return false;
}
//------------------------------------------------------------------------------
function isAlphaNumeric(s) {
  var test = "" + s;
  for (var k = 0; k < test.length; k++) {
    var c = test.substring(k, k+1);
    if ((isDigit(c) == false) &&  (isAlpha(c) == false)) {
       return false;
    }
  }
  return true;
}
//------------------------------------------------------------------------------
function minLen(s, len)
{
	if (s.length < len)
		return false;

	return true;
}
//------------------------------------------------------------------------------
// Returns 
//    true if any of the character in 'chars' is in string 'str':
//	  false otherwise 
function charsInStr(str, chars)
{
	for(var i = 0; i < str.length; i++)
	{
		if (chars.indexOf(str.charAt(i)) != -1){
			return true;
		}
	}
	return false;
}//------------------------------------------------------------------------------function stripCharsInBag(s, bag)
{   
	var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}
//------------------------------------------------------------------------------
function isValidEmailAddress(s, maxlength)
{
	// can't be more than max length
	if(s.length	> maxlength)
		return false;

	// It must have one, and only one,  @ symbol
	var atPosition = s.indexOf("@");

	if(atPosition == -1)
		return false;

	if(atPosition < s.lastIndexOf("@"))
		return false; // more than one

	// It must have a . after the @
	// make sure dot is after at by at least one character
	var dotPosition = s.lastIndexOf(".");

	if(dotPosition < atPosition || dotPosition == (atPosition + 1))
		return false;

	return true;
	
}
//------------------------------------------------------------------------------
// find the last day of the month and
// take the leap year into account
function makeLastDay(month, year) 
{
	var day=0;
 
	if(month == 0) 
		day=31;
	if(month == 1) 
	{
  		if(year % 4 == 0) 
  		{
    			if (year % 400 == 0)
      				day=29;
    			else if (year % 100 == 0)
      				day = 28;
    			else
      				day = 29;
		}
		else
			day=28;
  	}
	if(month == 2) 
		day = 31;
	if(month == 3) 
		day = 30;
	if(month == 4)
		day = 31;
	if(month == 5) 
		day = 30;
	if(month == 6) 
		day = 31;
	if(month == 7) 
		day = 31;
	if(month == 8) 
		day = 30;
	if(month == 9) 
		day = 31;
	if(month == 10) 
		day = 30;
	if(month == 11) 
		day = 31;

	return day;
}
//------------------------------------------------------------------------------
// return MM/DD/YYYY or false
function checkDateFormat(s)
{
  	var ret = true;
  	var pos = checkDateDelimiter(s);

  	if (pos[0] == -1 || pos[1] == (pos[0]+1) || pos[0] == 0) 
	{
    		ret = -1;
	}
  	else
  	{
    		var error = "";
    		var monStr = stripInitZeroSpace(s.substring(0, pos[0]));
    		var dayStr = stripInitZeroSpace(s.substring(pos[0] + 1, pos[1]));
    		var yearStr = s.substring(pos[1] + 1);
    		if (!isNumber(monStr, error) || !isNumber(dayStr, error) || 
			!isNumber(yearStr, error) || 
         		monStr == "" || dayStr == "")
      			ret = -1;
    		else
    		{
      			var month = parseInt(monStr);
      			var day = parseInt(dayStr);
      			var year = parseInt(yearStr);

      			if (month < 10) monStr = '0' + monStr;
      			if (day < 10) dayStr = '0' + dayStr;
      			if (yearStr.length == 2)
      			{
        			if ((year >= 91) && (year<=99) )
          				yearStr = '19' + yearStr;
        			else
        			{
          				if (yearStr.length == 1) 
						{
							yearStr = '0' + yearStr;
						}
          				yearStr = '20' + yearStr;
        			}
      			}

      			else if (yearStr.length != 4)
				{
       				 ret = -1;
				}

      			if (ret != -1)
      			{
       				year = parseInt(yearStr);
       				var lastday = makeLastDay(month - 1, year);
        			if (day > lastday) 
          				ret = -1;
      			}
      
      			if (ret != -1 ) 
			{
				ret = monStr + '/' + dayStr + '/' + yearStr;
			}
			
    		}
  	}

  	if (ret == "-1")
  	{
    		ret = false;
  	}
	return ret;
} 
//------------------------------------------------------------------------------
// from and to must be in MM/DD/YYYY
// return -1 if toDate < fromDate
// return -2 if toDate > 1 year from fromDate
// return toDate - fromDate in days
function validateDate(fromDate, toDate)
{
	var ret = 0;

	var year = parseInt(toDate.substring(6, 10));
	var month = parseInt(stripInitZeroSpace(toDate.substring(0, 2)));
	var day = parseInt(stripInitZeroSpace(toDate.substring(3, 5)));
	var to = new Date(year, month - 1, day);

	year = parseInt(fromDate.substring(6, 10));
	month = parseInt(stripInitZeroSpace(fromDate.substring(0, 2)));
	day = parseInt(stripInitZeroSpace(fromDate.substring(3, 5)));
	var from = new Date(year, month - 1, day);

	if (month > 2)
		year++;

	var temp = makeLastDay(month - 1, year);
	if (temp == 29)
		temp = 366;
	else
		temp = 365;

	var diff = (Date.parse(to.toGMTString()) - Date.parse(from.toGMTString())) / 86400000;

	if (diff < 0 )
		ret = -1;
	else if (diff >= temp)
		ret = -2;
	else 
		ret = diff;

	return ret;
} 
//------------------------------------------------------------------------------
function checkDateDelimiter(s)
{
  	var delimiter = new Array('/', '.', '-');
  	var pos = new Array(-1, -1);

  	for (var i = 0; i < 3; i++)
  	{
    		pos[0] = s.indexOf(delimiter[i]);
    		if (pos[0] != -1) 
    		{
      			pos[1] = s.indexOf(delimiter[i], pos[0]+1);
      			if (pos[1] == -1) 
        			pos[0] = -1;
      			else
        			break;
    		}
  	}
  	return pos;
} 
//------------------------------------------------------------------------------
function isDate1BeforeDate2(date1, date2)
{
	var date1Y = parseInt(date1.substring(6, 10));
	var date2Y = parseInt(date2.substring(6, 10));
	var date1M = parseInt(stripInitZeroSpace(date1.substring(0, 2)));
	var date2M = parseInt(stripInitZeroSpace(date2.substring(0, 2)));
	var date1D = parseInt(stripInitZeroSpace(date1.substring(3, 5)));
	var date2D = parseInt(stripInitZeroSpace(date2.substring(3, 5)));
	
	if (date1Y < date2Y)
		return true;
	else if (date1Y == date2Y)
	{
		if (date1M < date2M) 
			return true;
		else if (date1M == date2M)
			if (date1D < date2D)
				return true;
	}
	return false;
}

//------------------------------------------------------------------------------
function highlight(obj,on){
	if (on)
		obj.style.color='yellow';
	else
		obj.style.color='white';
}

//------------------------------------------------------------------------------
function isCreditCard(st) 
{
	if (st.length > 19)
		return (false);

	sum = 0; mul = 1; l = st.length
	for (i = 0; i < l; i++) 
	{
		digit = st.substring(l-i-1,l-i)
		tproduct = parseInt(digit ,10)*mul
		if (tproduct >= 10)
			sum += (tproduct % 10) + 1
		else
			sum += tproduct
		if (mul == 1)
			mul++
		else
			mul--
	}
	if ((sum % 10) == 0)
		return (true)
	else
	return (false)
}

//------------------------------------------------------------------------------
function isDiscover(cc)
{
	first4digs = cc.substring(0,4)
	if ((cc.length == 16) && (first4digs == "6011"))
		return isCreditCard(cc)
	return false
}

//------------------------------------------------------------------------------
function isMasterCard(cc)
{
	firstdig = cc.substring(0,1)
	seconddig = cc.substring(1,2);
	if ((cc.length == 16) && (firstdig == 5) &&
	((seconddig >= 1) && (seconddig <= 5)))
		return isCreditCard(cc)
	return false
}

//------------------------------------------------------------------------------
function isVisa(cc)
{
	if (((cc.length == 16) || (cc.length == 13)) &&
	(cc.substring(0,1) == 4))
		return isCreditCard(cc)
	return false
}

//------------------------------------------------------------------------------
function isAmericanExpress(cc)
{
	firstdig = cc.substring(0,1)
	seconddig = cc.substring(1,2)
	if ((cc.length == 15) && (firstdig == 3) &&
	((seconddig == 4) || (seconddig == 7)))
		return isCreditCard(cc)
	return false
}

//------------------------------------------------------------------------------
function isAnyCard(cc)
{
	if (!isCreditCard(cc))
		return false
	if (!isMasterCard(cc) && !isVisa(cc) && !isDiscover(cc))
		return false
return true
}

//------------------------------------------------------------------------------
function topShadow(Title,Width)
{
	var returnstr = ''

	if (Title == '')
		Title = '&nbsp;'
	returnstr += '<table width=' + Width + ' cellspacing=0 cellpadding=0 border=0>\n' 
	returnstr += '<tr>\n' 
	returnstr += '<td align=left height=48 width=18 bgcolor=#ffffff>\n' 
	returnstr += '<img src="images/shadow_tl.gif" width=18 height=48 align=top>\n' 
	returnstr += '</td>\n' 
	returnstr += '<td align=left height=18 valign=top width=' + (parseInt(Width)-36) + ' background="images/shadow_t.gif">\n' 
	returnstr += '<font face=verdana size=1><br></font>\n'
	returnstr += '<font face=verdana size=2 color=white><b>\n' 
	returnstr += Title 
	returnstr += '</b></font>\n' 
	returnstr += '</td>\n' 
	returnstr += '<td align=left height=48 width=18 bgcolor=#ffffff>\n' 
	returnstr += '<img src="images/shadow_tr.gif" width=18 height=48 align=top>\n' 
	returnstr += '</td>\n' 
	returnstr += '</tr>\n' 
	returnstr += '</table>\n' 
	return returnstr
}

//------------------------------------------------------------------------------
function bottomShadow(Title,Width)
{
	var returnstr = ''

	if (Title == '')
		Title = '&nbsp;'
	returnstr += '<table width=' + Width + ' cellspacing=0 cellpadding=0 border=0>\n' 
	returnstr += '<tr>\n' 
	returnstr += '<td align=left height=48 width=18 bgcolor=#ffffff>\n' 
	returnstr += '<img src="images/shadow_bl.gif" width=18 height=48 align=top>\n' 
	returnstr += '</td>\n' 
	returnstr += '<td align=left height=18 valign=middle width='+ (parseInt(Width)-36) + ' background="images/shadow_b.gif">\n'
	returnstr += '<font face=verdana size=1><br></font>\n'
	returnstr += '<font face=verdana size=2 color=white><b>\n'
	returnstr += Title 
	returnstr += '</b></font>\n'
	returnstr += '</td>\n' 
	returnstr += '<td align=left height=48 width=18 bgcolor=#ffffff>\n' 
	returnstr += '<img src="images/shadow_br.gif" width=18 height=48 align=top>\n' 
	returnstr += '</td>\n' 
	returnstr += '</tr>\n' 
	returnstr += '</table>\n' 
	return returnstr
}

//------------------------------------------------------------------------------
function startShadowBody(Width,Align)
{
	var returnstr = ''
	
	returnstr += '<table width=' + Width + ' cellspacing=0 cellpadding=0 border=0 bgcolor=white>\n' 
	returnstr += '<tr>\n' 
	returnstr += '<td width=8 background="images/shadow_l.gif">\n' 
	returnstr += '<img src="images/shadow_l.gif">\n' 
	returnstr += '</td>\n' 
	returnstr += '<td width=9>\n' 
	returnstr += '&nbsp;' 
	returnstr += '</td>\n' 
	returnstr += '<td width=' + (parseInt(Width)-34) + ' Align=' + Align + ' bgcolor=white>\n' 
	return returnstr
}

//------------------------------------------------------------------------------
function endShadowBody()
{
	var returnstr = ''
	
	returnstr += '</td>\n' 
	returnstr += '<td width=9 bgcolor=white>\n' 
	returnstr += '&nbsp;' 
	returnstr += '</td>\n' 
	returnstr += '<td width=8 background="images/shadow_r.gif">\n' 
	returnstr += '<img src="images/shadow_r.gif">\n' 
	returnstr += '</td>\n' 
	returnstr += '</tr>\n' 
	returnstr += '</table>\n' 
	return returnstr
}

//------------------------------------------------------------------------------
function getCookie(name) 
{
	var bikky = document.cookie

	var index = bikky.indexOf(name + "=")
	if (index == -1) return null
	index = bikky.indexOf("=", index) + 1
	var endstr = bikky.indexOf(";", index)
	if (endstr == -1) endstr = bikky.length
	return unescape(bikky.substring(index, endstr))
}

//------------------------------------------------------------------------------
function setCookie(name, value) 
{
	var bikky = document.cookie
	var today = new Date()
	var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000)
	
	if (value != null && value != "")
		document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString()
	bikky = document.cookie
}

//------------------------------------------------------------------------------
function element(id)
{
	if (document.getElementById != null){			// 1st Choice
		return document.getElementById(id)			// No N4, IE4
	}
	if (document.all != null){						// 2nd Choice
		return document.all[id]						// IE Only
	}
	if (document.layers != null){					// 3rd Choice
		return document.layers[id]					// N4 Only
	}
	return null;									// Give Up
}
	
function showHelp(id, height, width){
	var help = null;
	help = window.open('help/help.asp?h=' + height + '&w=' + width + '&id=' + id.toString(),'','toolbar=no,menubar=no,location=no,directories=no,status=no,scrollbars=yes,resizeable=no,copyhistory=no,height=' + (height + 20) + ',width=' + (width + 20))
	
}

