//deselect all checkboxes apart from the current one

function SingleSelect(regex,current) 
                { 
                        re = new RegExp(regex);   


                        for(i = 0; i < document.forms[0].elements.length; i++) { 


                                elm = document.forms[0].elements[i]; 


                                if (elm.type == 'checkbox') { 


                                        if (re.test(elm.name)) { 


                                                elm.checked = false; 


                                        } 
                                } 
                        } 


                        current.checked = true; 


                }

//confirm alert

function AreYouSureAlert(AlertText)
{
	var sAlertText = "";
	if (AlertText.length > 0)
	{
		sAlertText = AlertText;
	}
	else
	{
		sAlertText = "Are you sure you want to do this"
	}
	var bResult = confirm(sAlertText);
	if (bResult == true)
		return true;
	else
		return false;
}

//get control

function GetControl(controlname)
{
    //loop through form for form control with certain name
	var control;
	for(var i = 0; i < document.forms[0].elements.length; i++)
	{ 
        elm = document.forms[0].elements[i]; 
        if (elm.name.indexOf(controlname) > -1)
		{ 
            control = elm;
            break;
        } 
    }
	return control;
}

function GetControlFromID(controlname)
{
    //loop through form for form control with certain id
	var control;
	
	for(var i = 0; i < document.forms[0].elements.length; i++)
	{ 
        elm = document.forms[0].elements[i]; 
        if (elm.id.indexOf(controlname) > -1)
		{ 
            control = elm;
            break;
        } 
    }
	return control;
}

function GetControlFromTagName(controlname, tag)
{
    //loop through all document for control with certain tag, eg <div> or <span>, can also use "*"
    var control;
    var elements = document.getElementsByTagName(tag);
    var elm;
    for(var i=0; elements[i]; i++) 
    { 
        elm = elements[i]; 
        if (elm.id.indexOf(controlname) > -1)
		{ 
            control = elm;
            break;
        } 
    }
    return control;
}

function GetItemFromID(itemname)
{
	var item;
	
	for(i = 0; i < document.elements.length; i++)
	{ 
        elm = document.elements[i]; 
        if (elm.id.indexOf(itemname) > -1)
		{ 
            item = elm;
            break;
        } 
    }
	return item;
}

function setCaretAtEnd (input)
{ 
  input.focus(); 
  if (input.createTextRange)
  { 
    var range = input.createTextRange(); 
    range.collapse(false); 
    range.select(); 
  } 
} 

function GetMonthName(month)
{
    //var monthNames = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul",
    //    "Aug","Sep","Oct","Nov","Dec");
    var monthNames = new Array(
        "Jan","Feb","Mar","Apr","May","Jun","Jul",
        "Aug","Sep","Oct","Nov","Dec");
    var monthName = monthNames[month];
    return monthName;
}

function GetMonthEnd(month)
{
    daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
    var iDays = daysInMonth[month];
    return iDays;
}

function DateDiff(strDate1,strDate2)
{
    //datediff in days
    var iDiff = 0;

    datDate1= Date.parse(FormatDate(strDate1, "mm/dd/yyyy"));
    datDate2= Date.parse(FormatDate(strDate2, "mm/dd/yyyy"));
    iDiff = ((datDate2-datDate1)/(24*60*60*1000));
    return iDiff;
}

function YearStart()
{
    var today = new Date();
    var thisYear = today.getFullYear();
    var thisMonth = today.getMonth();
    var sToday = today.getDate() + "-" + GetMonthName(thisMonth) + "-" + thisYear;
    
    var yearStart = "1-Apr-" + thisYear;
    if (DateDiff(yearStart, sToday) < 0)
        thisYear = thisYear - 1;

    return "1-Apr-" + thisYear;
}

function MonthStartEnd(iMonth, bStart)
{
    //debugger;
    //can only be this month 0, last month -1 or next month 1
    var today = new Date();
    var thisMonth = today.getMonth();
    var thisYear = today.getFullYear();
    var newYear = thisYear;
    var newMonth = thisMonth + iMonth;
    
    if (newMonth == -1)
    {
        //go backwards a year
        newMonth = 11;
        newYear = thisYear - 1;
    }
    else if (newMonth == 12)
    {
        //go forwards a year
        newMonth = 0;
        newYear = thisYear + 1;
    }
    
    var newMonthStart;
    if (bStart)
        newMonthStart = "1-" + GetMonthName(newMonth) + "-" + newYear;
    else
        newMonthStart = GetMonthEnd(newMonth) + "-" + GetMonthName(newMonth) + "-" + newYear;
    
    return newMonthStart;    

}

function isDate(DateToCheck)
{
	if(DateToCheck==""){return true;}
	var m_strDate = FormatDate(DateToCheck);
	if(m_strDate=="")
	{
		return false;
	}
	var m_arrDate = m_strDate.split("/");
	var m_DAY = m_arrDate[0];
	var m_MONTH = m_arrDate[1];
	var m_YEAR = m_arrDate[2];
	if(m_YEAR.length > 4){return false;}
	m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
	var testDate=new Date(m_strDate);
	if(testDate.getMonth()+1==m_MONTH)
	{
		return true;
	} 
	else
	{
		return false;
	}
}



function FormatDate(DateToFormat,FormatAs)
{
	if(DateToFormat==""){return"";}
	if(!FormatAs){FormatAs="dd/mm/yyyy";}

	var strReturnDate;
	FormatAs = FormatAs.toLowerCase();
	DateToFormat = DateToFormat.toLowerCase();
	var arrDate
	var arrMonths = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var strMONTH;
	var Separator;

	while(DateToFormat.indexOf("st")>-1)
	{
		DateToFormat = DateToFormat.replace("st","");
	}

	while(DateToFormat.indexOf("nd")>-1)
	{
		DateToFormat = DateToFormat.replace("nd","");
	}

	while(DateToFormat.indexOf("rd")>-1)
	{
		DateToFormat = DateToFormat.replace("rd","");
	}

	while(DateToFormat.indexOf("th")>-1)
	{
		DateToFormat = DateToFormat.replace("th","");
	}

	if(DateToFormat.indexOf(".")>-1)
	{
		Separator = ".";
	}

	if(DateToFormat.indexOf("-")>-1)
	{
		Separator = "-";
	}


	if(DateToFormat.indexOf("/")>-1)
	{
		Separator = "/";
	}

	if(DateToFormat.indexOf(" ")>-1)
	{
		Separator = " ";
	}

	arrDate = DateToFormat.split(Separator);
	DateToFormat = "";
	for(var iSD = 0;iSD < arrDate.length;iSD++)
	{
		if(arrDate[iSD]!="")
		{
			DateToFormat += arrDate[iSD] + Separator;
		}
	}

	DateToFormat = DateToFormat.substring(0,DateToFormat.length-1);
	arrDate = DateToFormat.split(Separator);

	if(arrDate.length < 3)
	{
		return "";
	}

	var DAY = arrDate[0];
	var MONTH = arrDate[1];
	var YEAR = arrDate[2];


	if(parseFloat(arrDate[1]) > 12)
	{
		DAY = arrDate[1];
		MONTH = arrDate[0];
	}

	if(parseFloat(DAY) && DAY.toString().length==4)
	{
		YEAR = arrDate[0];
		DAY = arrDate[2];
		MONTH = arrDate[1];
	}


	for(var iSD = 0;iSD < arrMonths.length;iSD++)
	{
		var ShortMonth = arrMonths[iSD].substring(0,3).toLowerCase();
		var MonthPosition = DateToFormat.indexOf(ShortMonth);
		if(MonthPosition > -1)
		{
			MONTH = iSD + 1;
			if(MonthPosition == 0)
			{
				DAY = arrDate[1];
				YEAR = arrDate[2];
			}
			break;
		}
	}

	var strTemp = YEAR.toString();
	if(strTemp.length==2)
	{

		if(parseFloat(YEAR)>40)
		{
			YEAR = "19" + YEAR;
		}
		else
		{
			YEAR = "20" + YEAR;
		}

	}


	if(parseInt(MONTH)< 10 && MONTH.toString().length < 2)
	{
		MONTH = "0" + MONTH;
	}
	if(parseInt(DAY)< 10 && DAY.toString().length < 2)
	{
		DAY = "0" + DAY;
	}

	switch (FormatAs)
	{
		case "dd/mm/yyyy":
		return DAY + "/" + MONTH + "/" + YEAR;
		case "mm/dd/yyyy":
		return MONTH + "/" + DAY + "/" + YEAR;
		case "dd/mmm/yyyy":
		return DAY + " " + arrMonths[MONTH -1].substring(0,3) + " " + YEAR;
		case "mmm/dd/yyyy":
		return arrMonths[MONTH -1].substring(0,3) + " " + DAY + " " + YEAR;
		case "dd/mmmm/yyyy":
		return DAY + " " + arrMonths[MONTH -1] + " " + YEAR;	
		case "mmmm/dd/yyyy":
		return arrMonths[MONTH -1] + " " + DAY + " " + YEAR;
	}

	return DAY + "/" + strMONTH + "/" + YEAR;;

}

//for a client side request.querystring function

function PageQuery(q) {
if(q.length > 1) this.q = q.substring(1, q.length);
else this.q = null;
this.keyValuePairs = new Array();
if(q) {
for(var i=0; i < this.q.split("&").length; i++) {
this.keyValuePairs[i] = this.q.split("&")[i];
}
}
this.getKeyValuePairs = function() { return this.keyValuePairs; }
this.getValue = function(s) {
for(var j=0; j < this.keyValuePairs.length; j++) {
if(this.keyValuePairs[j].split("=")[0] == s)
return this.keyValuePairs[j].split("=")[1];
}
return false;
}
this.getParameters = function() {
var a = new Array(this.getLength());
for(var j=0; j < this.keyValuePairs.length; j++) {
a[j] = this.keyValuePairs[j].split("=")[0];
}
return a;
}
this.getLength = function() { return this.keyValuePairs.length; } 
}
function queryString(key){
var page = new PageQuery(window.location.search); 
return unescape(page.getValue(key)); 
}




function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}


function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

//for info pop up messages
function popLayer(popupText, width)
{
    if (document.layers) {navigator.family = "nn4"}
    if (document.all) {navigator.family = "ie4"}
    if (window.navigator.userAgent.toLowerCase().match("gecko")) {navigator.family = "gecko"}

    //get nmouse co-ordinates
    var e = window.event;
    var x = 0;
	var y = 0;

    if (e.pageX || e.pageY)
    {
	    x = e.pageY;
        y = e.pageX;
    }
    else if (e.clientX || e.clientY)
    {
        x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		y = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
    }
    
    if (width == null) width = 50;

    //get hidden text and set it
    var popup = document.getElementById("divPopup");

    desc = "<table class='popup' width=" + width + "><tr><td width='100%'>\n" + popupText + "</td></tr></table>";
    //desc = popupText;

    if (navigator.family == "nn4")
    {
	    document.divPopup.document.write(desc);
	    document.divPopup.document.close();
	    document.divPopup.left=x+15;
	    document.divPopup.top=y-5;
    }
    else if(navigator.family =="ie4")
    {
	    popup.innerHTML=desc;
	    popup.style.pixelLeft=x+15;
	    popup.style.pixelTop=y-5;
    }
    else if(navigator.family =="gecko")
    {
	    document.getElementById("divPopup").innerHTML=desc;
	    document.getElementById("divPopup").style.left=x+15;
	    document.getElementById("divPopup").style.top=y-5;
    }
}

function hideLayer()
{
    if (document.layers) {navigator.family = "nn4"}
    if (document.all) {navigator.family = "ie4"}
    if (window.navigator.userAgent.toLowerCase().match("gecko")) {navigator.family = "gecko"}

    var popup = document.getElementById("divPopup");

	if(navigator.family =="nn4") {eval(document.divPopup.top="-500");}
	else if(navigator.family =="ie4"){popup.innerHTML="";}
	else if(navigator.family =="gecko") {document.getElementById("divPopup").style.top="-500";}
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function IsCurrency(sText)
{
    //take off currency from start
    //if (Left(sText,1) == '£')
    if (sText.indexOf("£") == 0)
        sText = sText.substring(1, sText.length)
    else if (sText.charCodeAt(0) == 163) //£ sign
        sText = sText.substring(1, sText.length)

    //remove commas
        sText = sText.replace(",", "");
    
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
        Char = sText.charAt(i); 
        if (ValidChars.indexOf(Char) == -1) 
        {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function GetNumber(sText)
{

    if (sText.indexOf("£") == 0)
        sText = sText.substring(1, sText.length)
    else if (sText.charCodeAt(0) == 163) //£ sign
        sText = sText.substring(1, sText.length)

    //remove commas
    var i = sText.indexOf(",");
    while (i > -1)
    {
        sText = sText.replace(",", "");
        i = sText.indexOf(",");        
    }
    
    if (!IsCurrency(sText))
        return 0;
    else
        return sText;
}

function formatCurrency(num) {
num = num.toString().replace(/\£|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + String.fromCharCode(163) + num + '.' + cents);
}

