/*************************************************/
/* js_today = tody's date object                 */
/* rnd.seed = seed for random numer generator    */
/*************************************************/
js_today = new Date();
rnd.seed = js_today.getTime();

/*********************************************************/
/* Random number functin used by random number generator */
/*********************************************************/
function rnd() {
   rnd.seed = (rnd.seed * 9301+49297) % 233280;
   return rnd.seed / (233280.0);
};

/************************************************/
/* Random number generator between 1 and number */
/************************************************/
function rand(number) {
   return Math.ceil(rnd()*number);
};

/**********************/
/* Go to URL function */
/**********************/
function goto_PetCategoryURL(object,minIndex) {
   if (object.selectedIndex >= minIndex) {
   	if (!isEmpty(object.options[object.selectedIndex].value)) {
	      window.location.href = object.options[object.selectedIndex].value;
	   }
   }
   return;
}

/**************************************/
/* returns object year in #### format */
/**************************************/
function year(object) {
   return object.getYear();
}

/***************************************************/
/* returns module of object year based on 'number' */
/***************************************************/
function modYear(object,number) {
   return object.getYear() % number;
}

/*************************************/
/* returns object month in ## format */
/*************************************/
function month(object) {
   return object.getMonth();
}

/************************************************/
/* returns object day of the month in ## format */
/************************************************/
function dayOfMonth(object) {
   return object.getDate();
}

/*******************************************/
/* returns object day of the week # format */
/*******************************************/
function dayOfWeek(object) {
   return object.getDay();
}

/*************************************************************/
/* returns year based on y2k calculation (greater than 1000) */
/*************************************************************/
function takeYear(theDate) {
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}

/*************************************************************/
/* returns current week of the year (1-52) year in ## format */
/* Example: getWeek(y2k(year()), getMonth(), getDate())
/*************************************************************/
function getWeek(year,month,day) {
	var today = new Date(year,month,day);
	Year = takeYear(today);
	Month = today.getMonth();
	Day = today.getDate();
	now = Date.UTC(Year,Month,Day+1,0,0,0);
	var Firstday = new Date();
	Firstday.setYear(Year);
	Firstday.setMonth(0);
	Firstday.setDate(1);
	then = Date.UTC(Year,0,1,0,0,0);
	var Compensation = Firstday.getDay();
	if (Compensation > 3) Compensation -= 4;
	else Compensation += 3;
	NumberOfWeek =  Math.round((((now-then)/86400000)+Compensation)/7);
	return NumberOfWeek;
}

function daysBetween(date1, date2) {
    var DSTAdjust = 0;
    // constants used for our calculations below
    oneMinute = 1000 * 60;
    var oneDay = oneMinute * 60 * 24;
    // equalize times in case date objects have them
    date1.setHours(0);
    date1.setMinutes(0);
    date1.setSeconds(0);
    date2.setHours(0);
    date2.setMinutes(0);
    date2.setSeconds(0);
    // take care of spans across Daylight Saving Time changes
    if (date2 > date1) {
        DSTAdjust = 
            (date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute;
    } else {
        DSTAdjust = 
            (date1.getTimezoneOffset() - date2.getTimezoneOffset()) * oneMinute;    
    }
    var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust;
    return Math.ceil(diff/oneDay);
}

function toggleMe(a){
	var e=document.getElementById(a);

	if(!e) {
		return true;
	}

	if(e.style.display=="none"){
		e.style.display="block"
	} else {
		e.style.display="none"
	}

	return true;
}

/*************************************/
/* Browser, Version and OS detection */
/*************************************/
var browser_detect = navigator.userAgent.toLowerCase();
var browser_OS,browser_name,browser_version,total,thestring;

if (checkIt('konqueror'))
{
	browser_name = "Konqueror";
	browser_OS = "Linux";
}
else if (checkIt('safari')) browser_name = "Safari"
else if (checkIt('omniweb')) browser_name = "OmniWeb"
else if (checkIt('opera')) browser_name = "Opera"
else if (checkIt('webtv')) browser_name = "WebTV";
else if (checkIt('icab')) browser_name = "iCab"
else if (checkIt('firefox')) browser_name = "Firefox"
else if (checkIt('netscape')) browser_name = "Netscape"
else if (checkIt('msie')) browser_name = "Internet Explorer"
else browser_name = "unknown browser";

if (!browser_version) browser_version = browser_detect.charAt(place + thestring.length);

if (!browser_OS)
{
	if (checkIt('linux')) browser_OS = "Linux";
	else if (checkIt('x11')) browser_OS = "Unix";
	else if (checkIt('mac')) browser_OS = "Mac"
	else if (checkIt('win')) browser_OS = "Windows"
	else browser_OS = "unknown operating system";
}

function checkIt(string) {
	place = browser_detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

/**************************************************************/
/* This function can be used to check whether the user has    */
/* entered anything in a given field. There are two possibile */
/* types of 'emptiness' a form can return - a zero length     */
/* string, or a null value. Here we simply check both these   */
/* options, and return true if either of these are found to   */
/* be true.                                                   */
/**************************************************************/
function isEmpty(s) {
   return ((s == null) || (s.length == 0))
}

/****************************************/
/* Returns true if string s is empty or */
/* whitespace characters only.          */
/****************************************/
function isWhitespace(s) {
   var whitespace = " \t\n\r\s";
   var i;

   // Is s empty?
   if (isEmpty(trim(s))) return true;

   // Search through string's characters one by one
   // until we find a non-whitespace character.
   // When we do, return false; if we don't, return true.

   for (i = 0; i < s.length; i++) {
      // Check that current character is not whitespace.
      var c = s.charAt(i);

      if (whitespace.indexOf(c) == -1)
         return false;
   }

   // All characters are whitespace.
   return true;
}

/***************************************************************/
/* Trims all whitespace from the beginning and end of a string */
/***************************************************************/
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}
