<!--hide this script from non-javascript-enabled browsers

var DayNames= new Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");

/****************************** 
** Common Javascript routines
** Simon Mugan: Sep 2000
*******************************/

// convert a string to lowercase with 1st letter capitalised
function ucFirst(s)
{
	var c = s.charAt(0);

	if (parseInt(s.length)==1){
		return c.toUpperCase();
	}
	else
	{
		return c.toUpperCase() + s.slice(1).toLowerCase();
	}
}

// remove leading and trailing spaces
function Trim(s)
{
	var trimmed="";
	var leading = true;
	var trailing = true;
	
	// strip leading spaces
    for(var i = 0; i < s.length; i++) 
	{
        var c = s.charAt(i);
        if (c == ' ') 
        { 
			if (leading==false)
			{
				trimmed=trimmed+c;
			}
		}
		else
		{	
			leading=false;
			trimmed=trimmed+c;
		}
    }
    
    // strip trailing spaces
    for (var i = trimmed.length-1; i>0; i--) 
    {
		var c = trimmed.charAt(i);
		if (c != " ")
		{
			return trimmed;
		}
		else
		{
			trimmed=trimmed.substr(0,trimmed.length-1);
		}
    }
	
	return trimmed;
}

// A simple routine to strip HTML tags from supplied string
// It's not very clever but it's quite useful.
// Everything between each "<" and the subsequent ">" is ignored
// hence it could get confused with any javascript comparisons
// or comments that contain comparisons.
function stripHTMLTags(str)
{	var mystr="";
	var chr="";
	var skip=false;
	var skipcancel=false;
	
	for (x=0; x<str.length; x++)
	{
		if (skipcancel==true){skip=false;}
		chr=str.charAt(x);
		if (chr=="<"){skip=true;skipcancel=false;}
		else if (chr==">" && skip==true){skipcancel=true;}
		
		if (skip==false) mystr=mystr+chr;
	}
	return mystr;
}

// same as ucFirst, but repeated for all words in a string after
// converting all underscore characters to spaces
function ReadableName(s)
{
	var formatted = "";
	var c = "";
	var wStart = true;
    for(var i = 0; i < s.length; i++) 
    {
        c = s.charAt(i);
        if (c == "_"){c=" ";}
        if (wStart==true){formatted=formatted+c.toUpperCase();wStart=false;}
        else {formatted=formatted+c.toLowerCase();}
        if (c == " "){wStart=true;}
    }
    return formatted;
}

// checks whether a field is empty
function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}



function isValidTime(strTime) {
	// Checks if time is in HH:MM:SS format.
	// The seconds are optional.

	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?$/;
	var matchArray = strTime.match(timePat);
	if (matchArray == null) {
		return false;
	}

	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];

	if (second=="") { second = null; }

	if (hour < 0  || hour > 23) {
		return false;
	}

	if (minute<0 || minute > 59) {
		return false;
	}
	if (second != null && (second < 0 || second > 59)) {
		return false;
	}
	return true;
}

function isValidNumber(numval)
{
	if (numval==""){return false;}
	var myRegExp = new RegExp("^[/+|/-]?[0-9]*[/.]?[0-9]*$");
	return myRegExp.test(numval);
}

function isValidInterval(interval)
{
	var strIntervals = new Array("yrs","year","years","mos","month","months","day","days","week","weeks","hrs","hour","hours","mins","min","minutes","secs","sec","second","seconds");
	strArray = interval.split(" ");
	
	// need at least two items
	if (strArray.length < 2) {return false;}
	
	// check all pairs of values to be valid intervals (e.g 2 hrs 5 mins) 
	for (i = 0;i<strArray.length-1;i=i+2) {
		if (isNaN(strArray[i])){return false;}
		found=false;
		for (var x = 0;x<strIntervals.length;x++) {
			if (strArray[i+1].toUpperCase() == strIntervals[x].toUpperCase()) {found=true;}
		}
		if (!found){return false;}
	}
	return true;
}

function isValidDate(d,convert) {
	var strDatestyle = "US"; //United States date style
	//var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intDay;
	var intMonth;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	strDate = d;
	if (strDate.length < 1) {
		return false;
	}
	if (strDate.toLowerCase()=="today" || strDate.toLowerCase()=="now"){return true;}

	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) 
			{
				err = 1;
				return false;
			}
			else 
			{
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}

	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
		else
			return false;
	}
	
	// verify year part	2 or 4 digits
	if (strYear.length != 2 && strYear.length != 4) {return false;}
	if (isNaN(strYear)){return false;}
	// US style (swap month and day)
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}

	// verify 1 or 2 digit integer day
	if (strDay.length<1 || strDay.length>2) {return false;}
	if (isNaN(strDay)){return false;}
	
	// month may be digits of characters, hence following check
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		}
	}

	intDay=parseInt(strDay,10);
	intYear = parseInt(strYear, 10);
	
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	
	// day in month check
	if (intDay < 1 || intDay > 31){return false;}
		
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30)) {
		return false;
	}
	
	if (intMonth == 2) {
		if (LeapYear(intYear)) {
			if (intDay > 29) {return false;}
		}
		else 
		{
			if (intDay > 28) {return false;}
		}
	}
	
	if (!convert)
		return true;
	else
	{
		if (intYear<=99){intYear=intYear+2000;}
		return intDay+"/"+intMonth+"/"+intYear;
	}
}

function ConvertToJscriptDate(mydate)
{
	if (!isValidDate(mydate)){return "";}
	var vdate=isValidDate(mydate,true);
	var dparts= vdate.split("/");
	var JDate = new Date(dparts[2]+"/"+dparts[1]+"/"+dparts[0]);
	return JDate;
}

// check a composite date/time field
// assume date is everything up to first space
// and time is everything after first space

function isValidDateTime(strDateTime)
{
	var dt = Trim(strDateTime);
	var intMatch;
	var intDateOnly = false;

	//if (strDateTime.toLowerCase()=="today" || strDateTime.toLowerCase()=="now"){return true;}
	
	intMatch=dt.indexOf(":");
	if (intMatch < 0)
	{
		intDateOnly = true;
		intMatch=dt.length;
	}
	else
	{
		intMatch=dt.indexOf(" ");
	}
	if (intMatch < 0) {return false;}
	
	// check date
	if (!isValidDate(dt.substr(0,intMatch))){return false;}
	
	// check time
	if (!intDateOnly) {
		if (!isValidTime(dt.substr(intMatch+1,dt.length-intMatch))){return false;}
	}
	
	return true;
}


function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function isEarlierOrEqual(start,end)
{
	// convert dates to dd/mm/yyyy
	var myStart = isValidDate(start,true);
	var myEnd = isValidDate(end,true);
	if (myStart=="" || myEnd=="") return false;
	
	var startparts= myStart.split("/");
	var endparts=myEnd.split("/");
	
	if (Date.UTC(startparts[2],startparts[1]-1,startparts[0]) <= Date.UTC(endparts[2],endparts[1]-1,endparts[0]))
		return true;
	else
		return false;
}

function isDateTimeEarlierOrEqual(start,end)
{
	var startDateTime=start.split(" ");
	var endDateTime=end.split(" ");
	var myStart = isValidDate(startDateTime[0],true);
	var myEnd = isValidDate(endDateTime[0],true);
	if (myStart=="" || myEnd=="") return false;
	
	var startparts= myStart.split("/");
	var endparts=myEnd.split("/");
	
	startTimeParts=startDateTime[1].split(":");
	endTimeParts=endDateTime[1].split(":");
	if (startTimeParts.length>1 && endTimeParts.length>1)
	{
	    var startHr=(((start.indexOf("AM")>0 && startTimeParts[0].indexOf("12")<0) ||(start.indexOf("PM")>0 && startTimeParts[0].indexOf("12")>=0))?startTimeParts[0]:parseInt(startTimeParts[0])+12);
	    var endHr=(((end.indexOf("AM")>0 && endTimeParts[0].indexOf("12")<0) ||(end.indexOf("PM")>0 && endTimeParts[0].indexOf("12")>=0))?endTimeParts[0]:parseInt(endTimeParts[0])+12);

	    if (Date.UTC(startparts[2],startparts[1]-1,startparts[0],startHr,Trim(startTimeParts[1]).substr(0,2)) <= Date.UTC(endparts[2],endparts[1]-1,endparts[0],endHr,Trim(endTimeParts[1]).substr(0,2)))
		    return true;
	    else
		    return false;
	}
	else
	{
	   if (Date.UTC(startparts[2],startparts[1]-1,startparts[0]) <= Date.UTC(endparts[2],endparts[1]-1,endparts[0]))
		    return true;
	    else
		    return false;
	}
	return true;
}

function isDateTimeEarlier(start,end)
{
	var startDateTime=start.split(" ");
	var endDateTime=end.split(" ");
	var myStart = isValidDate(startDateTime[0],true);
	var myEnd = isValidDate(endDateTime[0],true);
	if (myStart=="" || myEnd=="") return false;
	
	var startparts= myStart.split("/");
	var endparts=myEnd.split("/");
	
	startTimeParts=startDateTime[1].split(":");
	endTimeParts=endDateTime[1].split(":");
	if (startTimeParts.length>1 && endTimeParts.length>1)
	{
	    var startHr=(((start.indexOf("AM")>0 && startTimeParts[0].indexOf("12")<0) ||(start.indexOf("PM")>0 && startTimeParts[0].indexOf("12")>=0))?startTimeParts[0]:parseInt(startTimeParts[0])+12);
	    var endHr=(((end.indexOf("AM")>0 && endTimeParts[0].indexOf("12")<0) ||(end.indexOf("PM")>0 && endTimeParts[0].indexOf("12")>=0))?endTimeParts[0]:parseInt(endTimeParts[0])+12);

	    if (Date.UTC(startparts[2],startparts[1]-1,startparts[0],startHr,Trim(startTimeParts[1]).substr(0,2)) < Date.UTC(endparts[2],endparts[1]-1,endparts[0],endHr,Trim(endTimeParts[1]).substr(0,2)))
		    return true;
	    else
		    return false;
	}
	else
	{
	   if (Date.UTC(startparts[2],startparts[1]-1,startparts[0]) < Date.UTC(endparts[2],endparts[1]-1,endparts[0]))
		    return true;
	    else
		    return false;
	}
	return true;
}

function isTimeEarlierOrEqual(start,end)
{
	// convert times to UTC dates
	if (start=="" || end=="") return false;
	
	var startparts= start.split(":");
	var endparts=end.split(":");
	
	if (Date.UTC(2000,1,1,startparts[0],startparts[1]) <= Date.UTC(2000,1,1,endparts[0],endparts[1]))
		return true;
	else
		return false;
}




// stop hiding -->

//Functions to validate inputs

// validate an email address
function isValidEmail(email)
{	
	var regExpEmail = /^[a-z0-9]+([-+_.][a-z0-9]+)*@[a-z0-9]+([-.][a-z0-9]+)*\.[a-z0-9]+([-.][a-z0-9]+)*$/i;
	///^[a-z0-9]+([-+_.][a-z0-9]+)*@[a-z0-9]+([-.][a-z0-9]+)*\.[a-z0-9]+([-.][a-z0-9]+)*$/i;
	//^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
	///^[a-z0-9]+([-+_.][a-z0-9]+)*@([a-z0-9]+)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
	var resultEmail = regExpEmail.test(email);
	return 	resultEmail;
}


function isValidFirstName(name)
{
var regExpFirstName  =/^[a-z0-9]{1,}\s*[a-z0-9]*$/i;
var resultFirstName = regExpFirstName.test(name);
return resultFirstName;
}


function isValidLastName(name)
{
var regExpLastName  =/^[a-z0-9]{1,}\s*[a-z0-9]*$/i;
var resultLastName = regExpLastName.test(name);
return resultLastName;
}

function isValidCompanyName(name)
{
var regExpCompanyName  =/^[A-Z\' -]{2,}$/i;
var resultCompanyName = regExpCompanyName.test(name);
return resultCompanyName;
}

function isValidAgentName(name)
{
var regExpAgentName  =/^[a-z0-9]{1,}\s*[a-z0-9]*$/i;
var resultAgentName = regExpAgentName.test(name);
return resultAgentName;
}

function isValidZip(zipCode)
{
    var regExpZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
    var resultZip = regExpZip.test(zipCode);
    return resultZip;
}


function isValidAreaCode(areaCode)
{

 var regExpPhone = /([0-9a-z]{3})/i;
 var resultphone1 = regExpPhone.test(trim(areaCode));
 return resultphone1;
}

function isValidExchange(exchange)
{
var regExpPhone = /([0-9a-z]{3})/i;
var resultphone2 = regExpPhone.test(trim(exchange));
return resultphone2;

}

function isValidLineNumber(lineNumber)
{
var regExpPhoneno = /([0-9a-z]{4})/i;
var resultphone3 = regExpPhoneno.test(trim(lineNumber));
return resultphone3;
}

function isValidExtension(ext)
{
var regExpExt = /(^\d{1,6}$)/;
var resultext = regExpExt.test(trim(ext));
return resultext;
}

function validateInputs(input)
{
    var regExpInvalidValues = "[<>]";
    var resultValue = input.match(regExpInvalidValues);
    if(resultValue!=null)
    {
    return false;
    }
    else
    {
    return true;
    }
}


//end 


function displayMessage(labelId,message,messageType)
{
   
    if (messageType=="ERROR")
    {
        labelId.innerHTML='<b style="color:Red">' + message + '</b>';
    }
    else
    {
       labelId.innerHTML= message;
    }
}

//javascript function to trim spaces from string

function trim(argvalue) 
{
  var tmpstr = ltrim(argvalue);

  return rtrim(tmpstr);

}


function ltrim(argvalue) {

  while (1) {
    if (argvalue.substring(0, 1) != " ")
      break;
    argvalue = argvalue.substring(1, argvalue.length);
  }

  return argvalue;
}


function rtrim(argvalue) {

  while (1) {
    if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
      break;
    argvalue = argvalue.substring(0, argvalue.length - 1);
  }

  return argvalue;
}
//Functions for character counting in a text box

function checkLength(commenttxtBox)
  {
    var strValue = commenttxtBox.value;
     if(strValue.length>=500)
    {
        return false;
    }
  }  
   function showLength(commenttxtBox)
  { 
     var strValue = commenttxtBox.value;    
     var charLeft=500-strValue.length;
     if(strValue.length>500)
    {        
        commenttxtBox.value = strValue.substring(0,500);
        charLeft = 0;     
     }   
     document.getElementById('lengthComments').innerHTML=charLeft;
  }
   function showLengthNew(commenttxtBox)
  { 
     var txtBoxid=commenttxtBox.id
     setTimeout("resLength('"+txtBoxid +"')", 100); 
  }
   function resLength(commenttxtBoxId)
  { 
     var strValue = document.getElementById(commenttxtBoxId).value;    
     var charLeft=500-strValue.length;
     if(strValue.length>500)
    {        
        document.getElementById(commenttxtBoxId).value = strValue.substring(0,500);
        charLeft = 0;     
     }   
     document.getElementById('lengthComments').innerHTML=charLeft;
  }
//end



