//Copyright John M Mizzi (MizziSoft) 2007

function trim(stringToTrim)
{
	if (stringToTrim == null)
	   stringToTrim = "";
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function ltrim(stringToTrim)
{
	if (stringToTrim == null)
	   stringToTrim = "";
	return stringToTrim.replace(/^\s+/,"");
}

function rtrim(stringToTrim)
{
	if (stringToTrim == null)
	   stringToTrim = "";
	return stringToTrim.replace(/\s+$/,"");
}


function canDo(input_string, input_field)
{
   var passed = null;
   input_string = input_string.replace(" ", "");
   var partsArray = input_string.split(",");

   for (var canLoop = 0; canLoop < partsArray.length; canLoop++)
   {
      var stringPart = trim(partsArray[canLoop]);
      if (stringPart == input_field)
      {
         passed = true;
         break;
      }
      if (stringPart == ("!" + input_field))
      {
         passed = false;
         break;
      }
      if (stringPart == "*")
      {
         passed = true;
         break;
      }
      if (stringPart == "!*")
      {
         passed = false;
         break;
      }
      if (beginsWith(stringPart, "!") && endsWith(stringPart, "*"))
      {
         var newPart = stringPart.substr(1, (stringPart.length - 1));
         if (input_field.length >= newPart.length && newPart == input_field.substr(0, newPart.length))
         {
            passed = false;
            break;
         }
      }
      if (endsWith(stringPart, "*"))
      {
         var newPart = stringPart.substr(0, (stringPart.length - 1));
         if (input_field.length >= newPart.length && newPart == input_field.substr(0, newPart.length))
         {
            passed = true;
            break;
         }
      }
   }

   if (passed == null)
      passed = false;

   return(passed);
}


function getElementsByName2(tag, name)
{
	var elem = document.getElementsByTagName(tag);
	var arr = new Array();
	for (i = 0,iarr = 0; i < elem.length; i++)
	{
		 att = elem[i].getAttribute("name");
		 if (att == name)
		 {
				arr[iarr] = elem[i];
				iarr++;
		 }
	}
	return arr;
}


function beginsWith(str, sub)
{
   return (str.substr(0, sub.length) == sub);
}



function endsWith(str, sub)
{
   return (str.substr(str.length - sub.length) == sub);
}


//Array Functions

function isArray(obj)
{
	if (obj.constructor.toString().indexOf("Array") == -1)
		return false;
	else
		return true;
}


function replaceAll(input_text, input_strA, input_strB)
{
   while ( input_text.indexOf(input_strA) != -1)
   {
      input_text = input_text.replace(input_strA, input_strB);
   }
   return input_text;
}

/****
function replaceAll(input_text, input_strA, input_strB)
{
   return(input_text.replace(new RegExp(input_strA, "g"), input_strB));    
}


function replaceAll(input_string, input_torep, input_repwith)
{
	var temp = input_string;
	var i = temp.indexOf(input_torep);
	while(i > -1)
	{
	   temp = temp.replace(input_torep, input_repwith);
	   i = temp.indexOf(input_torep, i + input_repwith.length + 1);
	}
	return temp;
}
***/


function cleanString(input_text)
{
   input_text = replaceAll(input_text, " ", "-");
   input_text = replaceAll(input_text, "|", "-");
   input_text = replaceAll(input_text, "~", "-");
   input_text = replaceAll(input_text, "\n", "-");
   input_text = replaceAll(input_text, "\t", "-");
   input_text = replaceAll(input_text, "+", "-");
   input_text = replaceAll(input_text, "=", "-");
   input_text = replaceAll(input_text, "*", "-");
   input_text = replaceAll(input_text, "&", "-");
   input_text = replaceAll(input_text, "?", "-");
   return(input_text);
}



//Date && Time Functions
function tsToDate(input_ts)
{
	var dateObj = null;
	/****
	if (input_ts.indexOf(" ") >= 0 &&
	    input_ts.indexOf("-") >= 0 &&
	    input_ts.indexOf(":") >= 0)
	{
		dateObj = new Date();
		var tsArray = input_ts.split(" ");
		var dateArray = tsArray[0].split("-");
		var timeArray = tsArray[1].split(":");
		dateObj.setFullYear(dateArray[0], (dateArray[1] - 1), dateArray[2]);
		dateObj.setHours(timeArray[0], timeArray[1], timeArray[2], 0);
	}
	****/

	var tsString = input_ts.replace("-", " ");
	tsString = tsString.replace("-", " ");
	tsString = tsString.replace(":", " ");
	tsString = tsString.replace(":", " ");
	tsString = tsString.replace("  ", " ");
	tsString = tsString.replace("  ", " ");
	var tsArray = tsString.split(" ");
	//alert(tsArray[0] + "," + tsArray[1] + "," + tsArray[2] + "," + tsArray[3] + "," + tsArray[4]);
	if (tsArray.length >= 3)
	{
		dateObj = new Date();
		dateObj.setFullYear(tsArray[0], (tsArray[1] - 1), tsArray[2]);
	   if (tsArray.length >= 5)
		   dateObj.setHours(tsArray[3], tsArray[4], 0, 0);
	}

	return(dateObj);
}


function getDayName(input_date)
{
   var dayName = "";
   if (input_date.getDay() == 0)
      dayName = "Sunday";
   else if (input_date.getDay() == 1)
      dayName = "Monday";
   else if (input_date.getDay() == 2)
      dayName = "Tueday";
   else if (input_date.getDay() == 3)
      dayName = "Wednesday";
   else if (input_date.getDay() == 4)
      dayName = "Thursday";
   else if (input_date.getDay() == 5)
      dayName = "Friday";
   else if (input_date.getDay() == 6)
      dayName = "Saturday";
   return(dayName);
}


function getMonthName(input_date)
{
   var monthName = "";
   if (input_date.getMonth() == 0)
      monthName = "Jan";
   else if (input_date.getMonth() == 1)
      monthName = "Feb";
   else if (input_date.getMonth() == 2)
      monthName = "Mar";
   else if (input_date.getMonth() == 3)
      monthName = "Apr";
   else if (input_date.getMonth() == 4)
      monthName = "May";
   else if (input_date.getMonth() == 5)
      monthName = "Jun";
   else if (input_date.getMonth() == 6)
      monthName = "Jul";
   else if (input_date.getMonth() == 7)
      monthName = "Aug";
   else if (input_date.getMonth() == 8)
      monthName = "Sep";
   else if (input_date.getMonth() == 9)
      monthName = "Oct";
   else if (input_date.getMonth() == 10)
      monthName = "Nov";
   else if (input_date.getMonth() == 11)
      monthName = "Dec";
   return(monthName);
}


function dateToTs(input_date)
{
   var months = (input_date.getMonth() + 1);
   if (months < 10) months = "0" + months;

   var days = input_date.getDate();
   if (days < 10) days = "0" + days;

   var hours = input_date.getHours();
   if (hours < 10) hours = "0" + hours;

   var minutes = input_date.getMinutes();
   if (minutes < 10) minutes = "0" + minutes;

   var seconds = input_date.getSeconds();
   if (seconds < 10) seconds = "0" + seconds;


	var tsValue = input_date.getFullYear() + "-" +
					  months + "-" +
					  days + " " +
					  hours + ":" +
					  minutes + ":" +
					  seconds;
	return(tsValue);
}


function timeToMins(input_time)
{
   var timeMins = 0;
   if (input_time != null && input_time != "")
   {
      timeMins = (input_time.substr(0, 2) * 60);
      timeMins = (timeMins + (input_time.substr(3, 2) * 1));
   }
   return(timeMins);
}


function timeToSecs(input_time)
{
   return(timeToMins(input_time) * 60);
}


function timeToMillis(input_time)
{
   return(timeToSecs(input_time) * 1000);
}

function nowTime()
{
	var nowDate = new Date();
	return(nowDate.getTime());
}


function dayDiff(input_small, input_big)
{
   var smallDate = new Date();
   smallDate.setTime(input_small.getTime());
   smallDate.setHours(0, 0, 0, 0);

   var bigDate = new Date();
   bigDate.setTime(input_big.getTime());
   bigDate.setHours(0, 0, 0, 0);

   var day = Math.round((bigDate.getTime() - smallDate.getTime()) / (1000 * 60 * 60 * 24));
   return(day);
}


function hit(input_x1, input_x2, input_x3, input_x4)
{
   var hitTest = false;

   if ((input_x1 >= input_x3 && input_x1 <= input_x4) || 
       (input_x2 >= input_x3 && input_x2 <= input_x4))
      hitTest = true;

   if (hitTest == false)
   {
      if ((input_x3 >= input_x1 && input_x3 <= input_x2) || 
          (input_x4 >= input_x1 && input_x4 <= input_x2))
         hitTest = true;
   }

   return(hitTest);
}


function round2(input_value)
{
   return(Math.round(input_value * 100) / 100);
}


function roundNumber(num, dec)
{
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}


function daySecs()
{
   return(24 * 60 * 60);
}

function dayMillis()
{
   return(daySecs() * 1000);
}


function setListValue(input_listName, input_value)
{
   var foundValue = false;
   var opt = $(input_listName).options;
   for (var loop = 0; loop < opt.length; loop++)
   {
      if (opt[loop].value == input_value)
      {
         $(input_listName).selectedIndex = loop;
         foundValue = true;
         break;
      }
   }
   return(foundValue);
}


function stdTimezoneOffset(input_date)
{
   var jan = new Date(input_date.getFullYear(), 0, 1);
   var jul = new Date(input_date.getFullYear(), 6, 1);
   return(Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()));
}


function isDst(input_date)
{
   return(input_date.getTimezoneOffset() < stdTimezoneOffset(input_date));
}

