//--------------------------------------------------------------------------
//  Created by James Wilkes on 18/08/2004
//  Copyright Wilkes Design Ltd
//  
//--------------------------------------------------------------------------
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) { } //STOPS IE6 FLICKERING
function getObj(id,level) { return level==1 ? parent.document.getElementById(id) : document.getElementById(id); }
function checkDecimalZero(obj) { if(obj.value==='0.00') obj.value = ''; else if(obj.value==='') obj.value = '0.00'; else obj.value=FormatNumber(obj.value); }
function checkZero(obj) { if(obj.value==='0') obj.value = ''; else if(obj.value==='') obj.value = '0'; }
//function newPrint(printlink) { var win = window.open('../accounts/'+printlink, 'popup', 'toolbar = yes, status = yes, menubar=1'); }
function newPrint(printlink) { var win = window.open(''+printlink, 'popup', 'toolbar = yes, status = yes, menubar=1'); }
function contentFocus() { getObj('content').focus(); }
function iprint(target) { target.focus(); target.print(); }
function convertYear(yy) {  var intYear=yy; if (intYear>=50) return eval('1900+'+intYear); else return eval('2000+'+intYear); }
function evalKeys(tagname,id,start,fin) {
tags = document.getElementsByTagName(tagname);
var lineToRepeat;
	for(var i=0, tag; tag=tags[i]; i++) if(tag.id.substring(start,fin)==id) if(tag.value>0) lineToRepeat = tag.id.substring(fin).replace('[','').replace(']','');
	if(lineToRepeat>0) return parseInt(lineToRepeat); else return null;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function flipcal(calid, forceHide) {
	var thiscal = getObj(calid); 
	if (thiscal.style.display=='block' || thiscal.style.visibility=='visible' || forceHide)
	{
		thiscal.style.display='none'; thiscal.style.visibility='hidden';
	}
	else {
		thiscal.style.display='block'; thiscal.style.visibility='visible';
		getObj(calid).contentWindow.updateCal();
		getObj(calid).contentWindow.getFocus();
	}
	parent.resizeIframe('content',350);
}

//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
//Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:

if (window.addEventListener) window.addEventListener("load", resizeCaller, false)
else if (window.attachEvent) window.attachEvent("onload", resizeCaller)
else window.onload=resizeCaller


function showHide(showObj,hideObj) {
// reinstate if require focus and select functions
//function showHide(showObj,hideObj,focusObj,selectObj)
 getObj(showObj).style.display = 'block'; getObj(hideObj).style.display = 'none';
}
function resetContents(oToReset) {
	var o = eval(oToReset);
	if (o.value == "Enter new value here")
	{
		o.style.color = "#000000";
		o.value = "";
	}
}
function setContents(oToReset) {
	var o = eval(oToReset);
	if (o.value == "")
	{
		o.value = "Enter new value here";
		o.style.color = "#999999";
	}
}
function conf(message, url, id) {
	ok = confirm(message);
	if(ok) if (id) top.getObj(id).src = url; else top.location = url;
}

// this function should be avoided if possible as popup blockers will interfere with it.
function newWin(urlstr)
{
	NewWin=window.open(urlstr,"new","status=no,location=no,menubar=no,toolbar=no,directories=no,scrollbars=yes,resizable=no,width=100,height=100");
}
function FormatNumber(Number,Decimals,Separator) {
 Number += ""; Decimals += ""; Separator += ""; 
 if((Separator == "") || (Separator.length > 1)) Separator = ".";
 if(Number.length == 0) Number = "0";
 var OriginalNumber = Number;  // Save for number too large.
 var Sign = 1, Pad = "", Count = 0;
 // If no number passed, force number to 0.
 if(parseFloat(Number)) Number = parseFloat(Number); else Number = 0;
 // If no decimals passed, default decimals to 2.
 if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)) Decimals = parseInt(Decimals,10); Decimals = 2;
 if(Number < 0) {
  Sign = -1;         // Remember sign of Number.
  Number *= Sign;    // Force absolute value of Number.
 }
 if(Decimals < 0) Decimals *= -1; // Force absolute value of Decimals.
 // Next, convert number to rounded integer and force to string value.
 // (Number contains 1 extra digit used to force rounding)
 Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5);
 if((Number.substring(1,2) == '.')||((Number + '')=='NaN')) return(OriginalNumber) // Number too large to format as specified.
 // If length of Number is less than number of decimals requested +1,
 // pad with zeros to requested length.
 if(Number.length < Decimals +1) for(Count = Number.length; Count <= Decimals; Count++) Pad += "0"; // Construct pad string.
 Number = Pad + Number; // Pad number as needed.
 if(Decimals == 0) Number = Number.substring(0, Number.length -1); // Drop extra digit -- Decimal portion is formatted.
  else Number = Number.substring(0,Number.length - Decimals -1) + Separator + Number.substring(Number.length - Decimals -1,Number.length -1);
 if((Number == "") || (parseFloat(Number) < 1)) Number="0"+Number; // Force leading 0 for |Number| less than 1.
 if(Sign == -1) Number = "-" + Number;  // Set sign of number.
 return(Number)
}

//Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
var iframehide="yes"

var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

function resizeCaller() {
	var dyniframe=new Array();
	for (i=0; i<iframeids.length; i++){
		if (getObj) resizeIframe(iframeids[i]);
		//reveal iframe for lower end browsers? (see var above):
		if ((document.all || getObj) && iframehide=="no"){
			var tempobj=document.all? document.all[iframeids[i]] : getObj(iframeids[i]);
			tempobj.style.display="block";
		}
	}
}

function fullResize(frameid) {
var currentfr=getObj(frameid);
	if (document.documentElement && document.documentElement.clientHeight) H=document.documentElement.clientHeight;  else H=document.body.clientHeight;
	if (currentfr) currentfr.height = H - 95;
}

function resizeIframe(frameid,minheight,windowheight, offset) {
	
H = document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
if(windowheight>0) minheight=H-95;
if(!offset) offset=0;
var currentfr=getObj(frameid);
	if (currentfr) {
		currentfr.style.display="block";
		if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) { //ns6 syntax
			currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
		} else if (currentfr.Document && currentfr.Document.body.scrollHeight) {//ie5+ syntax
			currentfr.height = currentfr.Document.body.scrollHeight;
		}
		currentfr.height = minheight>0 && currentfr.height<minheight ? minheight : parseInt(currentfr.height)+0+offset; // JW: FF correction
		currentfr.style.height=currentfr.height+"px";
		if (currentfr.addEventListener) {
			currentfr.addEventListener("load", readjustIframe, false)
		} else if (currentfr.attachEvent){
			currentfr.detachEvent("onload", readjustIframe) // Bug fix line
			currentfr.attachEvent("onload", readjustIframe)
		}
	}
}

function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt;
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement;
if (iframeroot) resizeIframe(iframeroot.id);
}

function loadintoIframe(iframeid, url){
if (getObj) getObj(iframeid).src=url;
}

function changeTabs2(theCell) {
  cells = theCell.parentNode.cells;
  for(var i=0;i<cells.length;i++){
    cells[i].className = "tab";
    getObj(cells[i].id+"Contents").style.display = "none";
  }
  theCell.className = "selTab";
  getObj(theCell.id+"Contents").style.display = "block";
}

function changeTabs(e) {
  thecells = getObj("r1");
  alert(thecells.cells.length);
  for(var i=0;i<thecells.cells.length;i++){
    thecells.cells[i].className = "tab";
    getObj(thecells.cells[i].id+"Contents").style.display = "none";
  }
  e.className = "selTab";
  getObj(e.id+"Contents").style.display = "block";
}

function initTabs() { getObj("t1").onclick(); }

// cross browser event grabber
function grabEvent(obj,evt) {
  var childId,evtTargetParent,evtTarget,evtTargetParentPN,evtTargetParentId,evtTargetParentPNId,evtTargetId; 
  if (getObj) {
    childId = obj.id.substring(1); 
    evtTargetParentId = "";
    evtTargetParentPNId = "";
    evtTarget = evt.target;
    if (evtTarget) { 
      evtTargetId = evtTarget.id;
      evtTargetParent = evtTarget.parentNode;
      if (evtTargetParent) {
        evtTargetParentId = evtTargetParent.id;
        evtTargetParentPN = evtTargetParent.parentNode;
        if (evtTargetParentPN) { 
          evtTargetParentPNId = evtTargetParentPN.id;
        }
      }
    } else {
      evtTargetParentPN = evt.srcElement;
      evtTargetParent = evtTargetParentPN.parentNode;
      if (evtTargetParent) { 
        evtTargetParentPNId = evtTargetParent.id;
      }
      evtTargetId = evtTargetParentPN.id;
    }
    if (evtTargetId == childId || evtTargetParentId == childId || evtTargetParentPNId == childId) {
      return true;
    }
    location.href = getObj(childId).href
  }
}

//spinner functions
function expandSpin(spinner,content) {spinner.innerHTML = '<img border="0" src="../images/less.gif" />'; content.className = "item-bodyShow";} 
function expandSpin2(spinner,content) {spinner.innerHTML = '<img border="0" src="../images/triangle2.gif" style="position:relative;top:-1px;" />'; content.className = "item-bodyShow";} 
function contractSpin(spinner,content) {spinner.innerHTML = '<img border="0" src="../images/more.gif" />'; content.className = "item-body";} 
function contractSpin2(spinner,content) {spinner.innerHTML = '<img border="0" src="../images/triangle.gif" style="position:relative;top:-1px;" />'; content.className = "item-body";} 
function spin(obj,img) {
var spinner = getObj(obj), spinner_content = getObj(obj+"_body");
if(img) spinner_content.className == 'item-bodyShow' ? contractSpin2(spinner,spinner_content) : expandSpin2(spinner,spinner_content);
else  spinner_content.className == 'item-bodyShow' ? contractSpin(spinner,spinner_content) : expandSpin(spinner,spinner_content);
}
//check all checkboxes
function selectAll(state) {
var chks = document.getElementsByTagName('input');
 for(var i=0, chk; chk=chks[i]; i++) if(chk.type==="checkbox") chk.checked = state;
}


// FLASH object code work around
//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
// end flash objeect overide