// JavaScript Document


// ##### Global variables
	var gDocLoc = document.location;
	var gPagePath = window.location.pathname;
	var gPageName = gPagePath.substring(gPagePath.lastIndexOf('/') + 1); // gets page name
	var gDomain=document.domain; gDomain=gDomain.replace('www.','');// gets domain name
	var gAltPage = "/alternative/default.html" // The page people are sent to if they have very old browsers
// ##### END SETTING VARIABLES



function fnBid(daID){return document.getElementById(daID);
	}
function fnBids(daID){return document.getElementById(daID).style;}




function fnOnChange(daID) {
	var daAns = fnBid(daID).value
	alert("25 :" + daAns);
	}
	
	function fnDoDis(vElement,vWhatever){
	document.getElementById(vElement).style.backgroundColor=vWhatever;
}

function fnDoDat(vElement,vWhatever){
	document.getElementById(vElement).style.color=vWhatever;
}
	

			
	

	
function fnGetHash(){
		var vHash = location.href.indexOf('#');
		return (vHash == -1 ? '' : location.href.substr(vHash + 1));
	}
	
function fnGetArgs(){
		var vGet = location.href.indexOf('?');
		return (vGet == -1 ? '' : location.href.substr(vGet + 1));
	}
	

function fnScrollTo(disX,disY){
	window.scrollTo(disX,disY);
}





function fnEme(n,d){
	
	var arrDaDa = new Array("@","ilto","ma",":");
	var arrDaDaAcc = new Array("start","moc.gkthu","moc.liamtoh","eman.alfjt","moc.wekfkf","blahblah","rasdfads","vtehrtuj","43affit","submit.spam.acma.gov.au","yadayada");
	// ie n = 8 = 43affit = (reversed = tiffa34)
	// ie d = 2 = moc.liamtoh = (reversed = hotmail.com)
	var vMsg = "?" + "subject=" + escape("MATI : ") + escape(Date()) + "&body=" + escape('Please enter your message below.') + "";
	location.href= "" +  // "mailto:anonymous@submit.spam.acma.gov.au";
	              arrDaDa[2] + arrDaDa[1] + arrDaDa[3] + fnReverse(arrDaDaAcc[n]) + arrDaDa[0] + fnReverse(arrDaDaAcc[d]) + vMsg ; 
} 




// ##### REVERSE STRING
	function fnReverse(daStr){
		var vRetAns="";
		var vCurPos = daStr.length-1; // start current position (vCurPos) = length of string as a number
		for(vCurPos; vCurPos >= 0; vCurPos--){vRetAns = vRetAns + daStr.charAt(vCurPos);}
		return vRetAns;
	}
// #####  REVERSE STRING



//////////////////////////////////////////////////////////////////////////// BEGINNER
// ##### START RESET
// ##### DEPENDENCIES : fnBid, fnBids
// ##### NOTES :  makes dTorso,dLeft,dMiddle,dRight all the same height, especially needed if using AJAX
	var dTorsoMinHt=300; // default minimum height
	function fnReset(){
		fnBids('dTorso').height=fnBids('dLeft').height=fnBids('dMiddle').height=fnBids('dRight').height="auto";
		 var vNewHt= Math.max(dTorsoMinHt,parseInt(fnBid('dLeft').offsetHeight),parseInt(fnBid('dMiddle').offsetHeight),parseInt(fnBid('dRight').offsetHeight)) + "px";
        fnBids('dTorso').height=fnBids('dLeft').height=fnBids('dMiddle').height=fnBids('dRight').height=vNewHt;
		// Setup forms
		fnForms();
	}
// ##### END RESET
////////////////////////////////////////////////////////////////////////////



function fnGetFileExtension(){
	var arrAtrGFE=fnGetFileExtension.arguments;
	if(arrAtrGFE.length>=1){
    	var disSplitGFE=arrAtrGFE[0].split("?")[0];
		if(disSplitGFE.length>=6){
    	    disSplitGFE="." + (disSplitGFE.substring(disSplitGFE.length-6,disSplitGFE.length)).split(".")[1];
            if(disSplitGFE.match(/(\.jpg)|(\.gif)|(\.png)|(\.swf)|(\.flv)|(\.mov)|(\.wmv)|(\.mp3)/)!=null){
               alert("(218) ERROR: You should always have media embedded in a coded web page, never raw!!)");
            }else{
               if(disSplitGFE.match(/(\.htm)|(\.html)|(\.asp)|(\.php)|(\.txt)|(\.xml)|(\.aspx)/)!=null){
			      return disSplitGFE;
			   }else{alert("(111) ERROR: File type is not a valid AJAX extension");}
			}
		}else{alert("(113) ERROR: File Name length does not seem correct");}
	}else{alert("(114)ERROR: No file named");}
	return "";
}




function fnPutHTML(daID,daStr){ // Code has to be escaped and then unescaped
	fnBid(daID).innerHTML=unescape(daStr);
	fnReset();
}
	




function fnPopImg(url,daTxt){
    fnBids('dPopBoxHolder').display="block";
    fnBid('dPopBoxInfo').innerHTML="<img src='" + url + "' /><br />" + unescape(daTxt) + "<br /><br />";
	
}

function fnPutHTML(daID,daStr){ // remember that code should be escaped and then unescaped
	fnBid(daID).innerHTML=unescape(daStr);
	fnReset();
}


var gScrOfX = 0;
var gScrOfY = 0;
function fnGetScrollPos(){
      if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant;
        gScrOfY = window.pageYOffset;
        gScrOfX = window.pageXOffset;
      } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        gScrOfY = document.body.scrollTop;
        gScrOfX = document.body.scrollLeft;
      } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode;
        gScrOfY = document.documentElement.scrollTop;
        gScrOfX = document.documentElement.scrollLeft;
      }
      return [ gScrOfX, gScrOfY ];
}

var gScrollSpeed=5;
function fnDoScroll(){
	   fnGetScrollPos();
       if (gScrOfY>=5){
          gScrOfY=Math.round(gScrOfY-(gScrOfY/gScrollSpeed));
             if (gScrOfY<3){gScrOfY=0;window.scrollTo(0,0);}
             window.scrollTo(0,gScrOfY);
             setTimeout("fnDoScroll()",50);         
    	  }else{
    		 window.scrollTo(0,0);
       }
}

function fnPopHolderOO(doDis){
    if(doDis=="on"){fnBids('dPopBoxHolder').display="block";}else{fnBids('dPopBoxHolder').display="none";}
}

function fnPopImg(url,daTxt){
    fnBids('dPopBoxHolder').display="block";
    fnBid('dPopBoxInfo').innerHTML="<img src='" + url + "' /><br />" + unescape(daTxt) + "<br /><br />";
	
}


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 MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}







//////////////////////////////////////////////////////////////////////////// INTERMEDIATE
// ##### START TURN ON-OFF LEFT AND RIGHT WINGS - BASED ON WINDOW WIDTH
// ##### DEPENDENCIES : fnBid,fnBids,fnTimeSec
    var vUseMethod=2;
    var gPageHolderW,gLeftWingW,gRightWingW;
	var gLeftWingGap = 0;
	var gRightWingGap = 0;
	var gDoLeftWingOO=true; // true = do calc for dLeftWing
	var gDoRightWingOO=true; // true = do calc for dRightWing
	function fnWingsOO(){ //to remove potential of horizontal scroll. Turn on and off wings.;
		// Get widths of window, dPageHolder, dLeftWing and dRightWing ready for calculation
		gWinW = parseInt(fnBid('bBody').clientWidth);
		gPageHolderW = parseInt(fnBid('dPageHolder').clientWidth);
		gLeftWingW = parseInt(fnBid('dLeftWing').clientWidth);
		gRightWingW = parseInt(fnBid('dRightWing').clientWidth);   // Error - parseInt(fnBid('dRigthWing').c1ientWidth) - 2 typos, rigth and c1ient
		// Calculations
		var vAnsL=gPageHolderW+(2*gLeftWingW);
		var vAnsR=gPageHolderW+(2*gRightWingW);
		// NOTE: there are many ways to hide the wings for small resolution screens.
		// Method 1 is used only if we are never going to change the div content dynamically.
		// START METHOD 1
		    // dLeftWing
			if(vUseMethod==1){
				if(gDoLeftWingOO && gWinW>=vAnsL ){
					fnBids('dLeftWing').display="block";
				}else{
					fnBids('dLeftWing').display="none";
				}
				// dRightWing
				if(gDoRightWingOO && gWinW>=vAnsR){
					fnBids('dRightWing').display="block";
				}else{
					fnBids('dRightWing').display="none";
				}
			}
        // END METHOD 1
		
		// START METHOD 2 (recommended)
        // If the div's are display:none; the browser can't see the div so we can't dynamically change the div content so we use a longer method utilising visibility and location and not display:none as in method 1
			if(vUseMethod==2){
				// dLeftWing
				if(gDoLeftWingOO && gWinW>=vAnsL ){
					fnBids('dLeftWing').left=(-gLeftWingW - gLeftWingGap) + "px";  //Error fnBids('dLeftWing').left=(gLeftWingW - gLeftWingGap) (- removed)
					fnBids('dLeftWing').visibility="visible";
				}else{
					fnBids('dLeftWing').left="0px";
					fnBids('dLeftWing').visibility="hidden";
				}
				// dRightWing
				if(gDoRightWingOO && gWinW>=vAnsR){
					fnBids('dRightWing').left=(gPageHolderW + gRightWingGap) + "px";
					fnBids('dRightWing').visibility="visible";
				}else{
					fnBids('dRightWing').left="0px";
					fnBids('dRightWing').visibility="hidden";
				}
			}
		// END METHOD 2
		
	}
// ##### END TURN ON/OFF LEFT AND RIGHT WINGS - BASED ON WINDOW WIDTH
////////////////////////////////////////////////////////////////////////////



			
			
	var gTimerSec;
	function fnTimeSec(){ // 1 sec interval, used for clock
		fnWingsOO(); // turn wings on and off based on the window width. This measures at once per second. We could put it in the fnTimeAni() but that runs ant 20x per second but since the on/off of the wings only occurs rarely then it's overkill to put it in the animation
	}
	
	var gTimerAni;
	function fnTimeAni(){ // 20 x second, used for animation
	
	}



var gWinW=0;
var gWinH=0;
var gScrW=0;
var gScrH=0;
function fnScreenWH(){
	gWinW=fnBid("bBody").clientWidth;
	gWinH=fnBid("bBody").clientHeight;
    if(self.innerWidth){
    	gScrW = self.innerWidth;
    	gScrH = self.innerHeight;
    }else if(document.documentElement && document.documentElement.clientWidth){
    	gScrW = document.documentElement.clientWidth;
    	gScrH = document.documentElement.clientHeight;
    } else if(document.body){
    	gScrW = document.body.clientWidth;
    	gScrH = document.body.clientHeight;
    }
} 



//////////////////////////////////////////////////////////////////////////// BEGINNER
// ##### START ON PAGE LOAD
// ##### DEPENDENCIES : fnBids,fnReset,fnWingsOO,fnTimeSec,fnTimeAni,fnAllocate,fnScreenWH,dTraceHolder,dPopBoxOpacity,bBody
window.onload = function fnStart(){
	if(!gTrace){fnBids('dTraceHolder').display="none";} // turn off trace div used in debugging
    fnReset();
	fnWingsOO();
	// Setup timers
 	gTimerSec = setInterval("fnTimeSec()",1000); //starts page clock 1 sec
	gTimerAni = setInterval("fnTimeAni()",50); // 20 times per second for animation
	//set up opacity
	fnBids('dPopBoxOpacity').opacity="0.9";
	fnBids('dPopBoxOpacity').filter="alpha(opacity=90)";
    // Setup permanent scroll of window (stop annoying jump with small pages)
	fnScreenWH();
	fnBids('bBody').height=(gScrH+5) + "px";
	// preload images (not too many) to cache that you know will needed via your predictive data matrix analysis
	// dPreLoader.html just has the image codes ie <img src="occ_siteMedia/images/img01_289x107.jpg" alt="" /><img src="occ_siteMedia/images/img02_289x107.jpg" alt="" />
	fnAjax('dPreLoader.html','dPreLoader','','');
}
// ##### END ON PAGE LOAD
////////////////////////////////////////////////////////////////////////////


