function ShowMessage(flag)
{
	var style = "none";
	if (flag)
	{
		style= "block";
	}
	ItemById('Message').style.display = style;
	Fat.fade_element("Message", 30, 1250, "ffff55", "ffffff") //	(id, fps, duration, from, to) 
}

// Get form item by id
function ItemById(id)
{
	return document.getElementById(id);
}


function CheckLength(obj,realname,length)
{
    if (obj.value.length == 0)
    {
        return '';
    }

    if (obj.value.length != length)
    {
        return '- ' + realname + ' MUST be ' + length + ' characters.\n';
    }
    else
    {
        return '';
    }
}

function CheckIsNumeric(obj,realname)
{
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;

    if (obj.value.length == 0)
    {
        return '';
    }

    for (var i=0; i<obj.value.length && IsNumber == true; i++) 
    { 
        Char = obj.value.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }

    if (!IsNumber) 
    {
        return '- ' + realname + ' MUST be a number \n';
    }
    else
    {
        return '';
    }
}

// Check whether field has a value
function CheckField(obj,realname)
{
	if (obj)
	{
		if (obj.value == '' || obj.value == ' ') 
		{
			return '- ' + realname + '\n';
		}
		else
		{
			return '';
		}
	}
}

// Check whether field has a value
function CheckIsTicked(obj, realname)
{
	if (obj)
	{
		if (!obj.checked) 
		{
			return '- Please accept the ' + realname + ' checkbox\n';
		}
		else
		{
			return '';
		}
	}
}

// Check whether radio button group has one value selected
function CheckRadioButton(obj, realname)  
{
    var err;
    err = '';
    var checked = false;
    for (var i=0; i<obj.length; i++)  
    {
        if (obj[i].checked)
        {  
            checked = true;
            err = '';
            break;
        }
    }
    
    if(!checked)
    {
        err = '- ' + realname + '\n';
    }

    return err; 
}

// Check whether combobox has a selected item
function CheckSelect(obj,realname)
{
	if (obj)
	{
		if (obj.options[obj.selectedIndex].text == '' || obj.options[obj.selectedIndex].text == ' '  || obj.options[obj.selectedIndex].text == 'Click here to select...') 
		{
			return '- ' + realname + '\n';
		}
		else
		{
			return '';
		}
	}
}

// Check whether field has a value
function CheckInteger(obj,realname)
{
	if (obj)
	{
		if (! IsNumeric(obj.value)) 
		{
			return '- ' + realname + ' needs to be a number \n';
		}
		else
		{
			return '';
		}
	}
}

// Check whether field has a value
function CheckTime(obj,realname)
{
	if (obj)
	{
		if (! IsTime(obj.value)) 
		{
			return '- ' + realname + ' needs to be in the format hh:mm \n';
		}
		else
		{
			return '';
		}
	}
}

function checkemail(str)
{
	if ((str.indexOf(".") > 2) && (str.indexOf("@") > 0))
	{
		return true
	}
	else
	{
		alert('The email address you have entered does not seem to be valid.');
		return false
	}
}

function IsTime(sText)
{
	var filter = /^([01]?[0-9]|[2][0-3])(:[0-5][0-9])?$/

	if (filter.test(sText))
	{
		return true
	}
	else
	{
		return false;
	}
}

function IsDate(sText)
{
	var ValidChars = "0123456789";
	var result = false;
	var format = "nn/nn/nnnn"; // UK Style Date
	var FormatChar;
	var Char
	
	if (sText.length == 10)
	{
		for (var i = 0; i < format.length; i++)
		{
			FormatChar = format.charAt(i);
			Char = sText.charAt(i);
			if (FormatChar == 'n')
			{
				if (ValidChars.indexOf(Char) == -1)
				{
					return false;
				}
			}
			else
			{
				if (Char != FormatChar)
				{
					return false;
				}
			}		
		}			
	}
	else
	{
		return false;
	}
	return true;
}


function IsNumeric(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   if (sText.length == 0)
   {
	 IsNumber = false;
   }
 
   for (var i=0; i<sText.length && IsNumber == true; i++) 
   { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function IsDouble(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   var Pos = sText.indexOf('.');

 	if (Pos != -1)
	{
		for (var i = sText.length-1; i< sText.length-2; i--) 
  		{ 
	      Char = sText.charAt(i); 
    	  if (ValidChars.indexOf(Char) == -1) 
	      {
    	     IsNumber = false;
	      }
	    }
		
		for (i=0; i<Pos; i++)
		{
		  Char = sText.charAt(i); 
    	  if (ValidChars.indexOf(Char) == -1) 
	      {
    	     IsNumber = false;
	      }
		}		
	}
	else
	{
		if (!IsNumeric(sText))
		{
			IsNumber = false;
		}
	}
   	return IsNumber;
}

function round(amount,X)
{
	// rounds number to X decimal places, defaults to 2
	X = (!X ? 2 : X);
	var g= Math.round(amount*Math.pow(10,X))/Math.pow(10,X);
	var s=g.toString()
	if (s.indexOf(".")==-1)
	{
		len=X
		g=g+"."
	}
	else
	{
		len=(X - (s.length - s.lastIndexOf("."))+1)
	}

	for(i=0;i<len;i++)
	{
		g=g+"0"
	}
	return g
}


function formatNumber(val,dp) 
{ 
	var no = eval(val);
	if (!no)
		no = 0.0;
	return round(no, dp);
} 

function setClass(classToSet,id) {
	var elem = document.getElementById(id);
	elem.className = classToSet;
}

// Hack to make sure that if no selectedIndex then it sets the default option as the selectedIndex (the sort would otherwise lose it)
function sortSelectBox(obj)
{
	if (obj.selectedIndex == -1 && obj.options[0].text == 'Click here to select...')
	{
		obj.selectedIndex == 0
	}
	
	sortSelect(obj);
}


function checkDate(field)
{

	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = "/";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
   err = 0;
   DateValue = DateField.value;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '19' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
   }
   /* Error-message if err != 0 */
   else {
      alert("Date is incorrect - please enter date as DD/MM/YYYY or DDMMYYYY");

   }
}
