
// Ultimate client-side JavaScript client sniff.
// (C) Netscape Communications 1999.  Permission granted to reuse and distribute.
// Revised 7 May 99 to add is.nav5up and is.ie5up (see below). (see below).

// Everything you always wanted to know about your JavaScript client
// but were afraid to ask ... "Is" is the constructor function for "is" object,
// which has properties indicating:
// (1) browser vendor:
//     is.nav, is.ie, is.opera
// (2) browser version number:
//     is.major (integer indicating major version number: 2, 3, 4 ...)
//     is.minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is.nav2, is.nav3, is.nav4, is.nav4up, is.ie3, is.ie4, is.ie4up, is.ie5, is.ie5up
// (4) JavaScript version number:
//     is.js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is.win, is.win16, is.win32, is.win31, is.win95, is.winnt, is.win98
//     is.os2
//     is.mac, is.mac68k, is.macppc
//     is.unix
//        is.sun, is.sun4, is.sun5, is.suni86
//        is.irix, is.irix5, is.irix6
//        is.hpux, is.hpux9, is.hpux10
//        is.aix, is.aix1, is.aix2, is.aix3, is.aix4
//        is.linux, is.sco, is.unixware, is.mpras, is.reliant
//        is.dec, is.sinix, is.freebsd, is.bsd
//     is.vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.

//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when Nav5 and IE5 (or later) are released, so
// in conditional code forks, use is.nav4up ("Nav4 or greater")
// and is.ie4up ("IE4 or greater") instead of is.nav4 or is.ie4
// to check version in code which you want to work on future
// versions.


function Is ()
{   // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is.ie5up to detect IE5.
    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);

    this.nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1));
    this.nav2 = (this.nav && (this.major == 2));
    this.nav3 = (this.nav && (this.major == 3));
    this.nav4 = (this.nav && (this.major == 4));
    this.nav4up = (this.nav && (this.major >= 4));
    this.navonly  = (this.nav && ((agt.indexOf(";nav") != -1) ||
                     (agt.indexOf("; nav") != -1)) );
    this.nav5 = (this.nav && (this.major == 5));
    this.nav5up = (this.nav && (this.major >= 5));

    this.ie   = (agt.indexOf("msie") != -1);
    this.ie3  = (this.ie && (this.major < 4));
    this.ie4  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")==-1) );
    this.ie4up  = (this.ie  && (this.major >= 4));
    this.ie5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    this.ie5up  = (this.ie  && !this.ie3 && !this.ie4);

    this.aol   = (agt.indexOf("aol") != -1);
    this.aol3  = (this.aol && this.ie3);
    this.aol4  = (this.aol && this.ie4);

    this.opera = (agt.indexOf("opera") != -1);
    this.webtv = (agt.indexOf("webtv") != -1);

    // *** JAVASCRIPT VERSION CHECK ***
    // Useful to workaround Nav3 bug in which Nav3
    // loads <SCRIPT LANGUAGE="JavaScript1.2">
    if (this.nav2 || this.ie3) this.js = 1.0
    else if (this.nav3 || this.opera) this.js = 1.1
    else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2
    else if ((this.nav4 && (this.minor > 4.05)) || this.ie5) this.js = 1.3
    else if (this.nav5) this.js = 1.4
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (this.nav && (this.major > 5)) this.js = 1.4
    else if (this.ie && (this.major > 5)) this.js = 1.3
    // HACK: no idea for other browsers; always check for JS version with > or >=
    else this.js = 0.0;

    // *** PLATFORM ***
    this.win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
    // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
    //        Win32, so you can't distinguish between Win95 and WinNT.
    this.win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));

    // is this a 16 bit compiled version?
    this.win16 = ((agt.indexOf("win16")!=-1) ||
                  (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
                  (agt.indexOf("windows 16-bit")!=-1) );

    this.win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
                  (agt.indexOf("windows 16-bit")!=-1));

    // NOTE: Reliable detection of Win98 may not be possible. It appears that:
    //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
    //       - On Mercury client, the 32-bit version will return "Win98", but
    //         the 16-bit version running on Win98 will still return "Win95".
    this.win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
    this.winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
    this.win32 = ( this.win95 || this.winnt || this.win98 ||
                   ((this.major >= 4) && (navigator.platform == "Win32")) ||
                   (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1) );

    this.os2   = ((agt.indexOf("os/2")!=-1) ||
                  (navigator.appVersion.indexOf("OS/2")!=-1) ||
                  (agt.indexOf("ibm-webexplorer")!=-1));

    this.mac    = (agt.indexOf("mac")!=-1);
    this.mac68k = (this.mac && ((agt.indexOf("68k")!=-1) ||
                               (agt.indexOf("68000")!=-1)));
    this.macppc = (this.mac && ((agt.indexOf("ppc")!=-1) ||
                               (agt.indexOf("powerpc")!=-1)));

    this.sun   = (agt.indexOf("sunos")!=-1);
    this.sun4  = (agt.indexOf("sunos 4")!=-1);
    this.sun5  = (agt.indexOf("sunos 5")!=-1);
    this.suni86= (this.sun && (agt.indexOf("i86")!=-1));
    this.irix  = (agt.indexOf("irix") !=-1);    // SGI
    this.irix5 = (agt.indexOf("irix 5") !=-1);
    this.irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
    this.hpux  = (agt.indexOf("hp-ux")!=-1);
    this.hpux9 = (this.hpux && (agt.indexOf("09.")!=-1));
    this.hpux10= (this.hpux && (agt.indexOf("10.")!=-1));
    this.aix   = (agt.indexOf("aix") !=-1);      // IBM
    this.aix1  = (agt.indexOf("aix 1") !=-1);
    this.aix2  = (agt.indexOf("aix 2") !=-1);
    this.aix3  = (agt.indexOf("aix 3") !=-1);
    this.aix4  = (agt.indexOf("aix 4") !=-1);
    this.linux = (agt.indexOf("inux")!=-1);
    this.sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
    this.unixware = (agt.indexOf("unix_system_v")!=-1);
    this.mpras    = (agt.indexOf("ncr")!=-1);
    this.reliant  = (agt.indexOf("reliantunix")!=-1);
    this.dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
         (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
         (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
    this.sinix = (agt.indexOf("sinix")!=-1);
    this.freebsd = (agt.indexOf("freebsd")!=-1);
    this.bsd = (agt.indexOf("bsd")!=-1);
    this.unix  = ((agt.indexOf("x11")!=-1) || this.sun || this.irix || this.hpux ||
                 this.sco ||this.unixware || this.mpras || this.reliant ||
                 this.dec || this.sinix || this.aix || this.linux || this.bsd || this.freebsd);

    this.vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
}

var is;
var isIE3Mac = false;
// this section is designed specifically for IE3 for the Mac

if ((navigator.appVersion.indexOf("Mac")!=-1) && (navigator.userAgent.indexOf("MSIE")!=-1) && 
(parseInt(navigator.appVersion)==3))
       isIE3Mac = true;
else   is = new Is(); 


/************************************************************************************/
/*********** Javascript added by Nasser Muhammad ************************************/

/* All these below have been written and tested by Nasser  Muhammad */

var loginImage = new Image();
	loginImage.src = "/AM/CSAGraphics/" + "member.gif";
var logoutImage = new Image();
	logoutImage.src = "/AM/CSAGraphics/" + "logout.gif";


/* Start - Jason Rowe 22/06/2007 Added script below for the online tax invoice for CSA Conference */

function Clickheretoprint()
{ 
  var disp_setting="toolbar=yes,location=no,directories=yes,menubar=yes,"; 
      disp_setting+="scrollbars=yes,width=650, height=600, left=100, top=25"; 
  var content_vlue = document.getElementById("print_content").innerHTML; 
  
  var docprint=window.open("","",disp_setting); 
   docprint.document.open(); 
   docprint.document.write('<html><head><LINK REL="StyleSheet" HREF="/AM/Styles/styles.css" type="text/css">'); 
   docprint.document.write('</head><body onLoad="self.print()"><center>');          
   docprint.document.write(content_vlue);          
   docprint.document.write('</center></body></html>'); 
   docprint.document.close(); 
   docprint.focus(); 
}

/* End - Jason Rowe 22/06/2007 Added script below for the online tax invoice for CSA Conference */


function SwapUtilities(element, type)
{
	
	var imagename = element.src.substring(element.src.lastIndexOf("/")+1,element.src.length - 4);
	//alert(imagename);
	if (imagename.indexOf("_over") != -1)
	{
		imagename = imagename.substring(0, imagename.length - 5);
	}
	if (type == 'over')
	{
		element.src = "/AM/CSAGraphics/" + imagename + "_over.gif";
	}
	else
	{
		element.src = "/AM/CSAGraphics/" + imagename + ".gif";	
	}
}

function SwapNewsLink(element, type)
{
	if (type == 'over')
	{
		element.src = "/AM/images/homepagegraphics/headingArrow_over.gif";
	}
	else
	{
		element.src = "/AM/images/homepagegraphics/headingArrow.gif";	
	}
}


function RemoveItems()
{
	var obj = document.getElementById("JournalTable");
	var tempStr = "";
	for (var index=0; index <obj.childNodes.length;index++)
	{
		if (obj.childNodes[index].nodeName == 'TABLE')
		{
				var tblJournal = obj.childNodes[index];
				break;
		}
	}

	if (tblJournal != null)
	{
		if (is.nav)
		{
			for(var i = 0; i<tblJournal.rows.length; i++)
			{
				var tblRow = tblJournal.rows[i];
				for(var x = 0; x < tblRow.cells.length; x++)
				{
					var tblCell = tblRow.cells[x];
					for (var y = 0; y < tblCell.childNodes.length; y++)
					{
						if (tblCell.childNodes[y].nodeName == "A")
						{
							tblCell.innerHTML = (tblCell.childNodes[y].innerHTML);
						}
					}
				}
			}
		}
		else
		{
			for(var i = 0; i<tblJournal.cells.length; i++)
			{
				var tblCell = tblJournal.cells[i];
	
				for (var x=0; x<tblCell.childNodes.length; x++)
				{
					if (tblCell.childNodes[x].nodeName == "A")
					{
						tblCell.innerHTML = (tblCell.childNodes[x].innerHTML);
					}
				}
			}
		}
	}
	var pdfMessage = document.getElementById("tblPDFMessage");
	if (pdfMessage != null)
	{
	pdfMessage.style.display = "none";
	}

}

function HandleMenuItem(obj, action)
{
	if (timeOutId != null)
	{
		clearTimeout(timeOutId);
		timeOutId = null;
	}
	if (action == 'over')
	{
		obj.className = "MenuItemOn";
	}
	else
	{
		obj.className = "MenuItem";	
		/*if (timeOutId == null)
		{
			timeOutId = setTimeout("hideMenu(menuObj)", 1000);		
		}*/	
	}

}

function calculateSumOffset(idItem, offsetName){
	var totalOffset = 0;
	var item = eval('idItem');
	do{
		totalOffset += eval('item.'+offsetName);
		item = eval('item.offsetParent');
	} while (item != null);
	return totalOffset;
}

var timeOutId;
var menuObj;

function HandleCustomMenu(obj, action)
{
	menuObj = document.getElementById("SearchSubMenu");
	if (action == "show")
	{
		if (timeOutId != null)
		{
			clearTimeout(timeOutId);
			timeOutId = null;
		}
		menuObj.style.top = obj.offsetTop + obj.offsetHeight - 1;
		menuObj.style.left = calculateSumOffset(obj,'offsetLeft');
		menuObj.style.width = obj.offsetWidth + 10;
		menuObj.style.display = "block";	
	}
	else
	{
		if (timeOutId == null)
		{
			timeOutId = setTimeout("hideMenu(menuObj)", 1000);		
		}
	}	
}

function hideMenu(obj)
{
	obj.style.display = "none";
	timeOutId = null;
}


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 verify(f) {
	var msg;
	var empty_fields = "";
	var errors = "";
	
	for (var i=0;i<f.length;i++) {
		var e = f.elements[i];
		
		if (((e.type == "radio") || (e.type == "checkbox")) && !e.optional) {
		  if(e == f[e.name][0]) {
			var noneselected = 1;		
			if(f[e.name].length == 1) {
				if(e.checked)
					noneselected = 0;
			} else {
				for(j=0;j<f[e.name].length;j++)
					if(f[e.name][j].checked)
						noneselected = 0;
			}
			if(noneselected) {
				empty_fields += "\n           - " + e.name;
			}
		  }
		} 
		if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
			// check if the field is empty
			if ((e.value == null) || (e.value == "") || isblank(e.value)) {
				empty_fields += "\n           - " + e.name;
				continue;
			}
			
			// check fields that are supposed to be numeric
			if (e.numeric || (e.min != null) || (e.max != null)) {
				var v = parseFloat(e.value);
				if (isNaN(v) || 
					((e.min != null) && (v < e.min)) ||
					((e.max != null) && (v > e.max))) {
					errors += "The field " + e.name + " must be a number";
					if (e.min != null)
						errors += " that is greater than " + e.min;
					if (e.max != null && e.min != null)
						errors += " and less than " + e.max
					else if (e.max != null)
						errors += " that is less than " + e.max
					errors += ".\n";
				}
			}
		}
		if (e.name == "expiryyear") {
			var expiryyear = parseInt(e.value);
		}
		if (e.name == "expirymonth") {
			var expirymonth = e.value;
        }
		

	}
	var expiredate = new Date (expiryyear,expirymonth,1);
	var now = new Date();
	if (expiredate <= now) {
		errors += "Credit Card was expired.\n";
	}
	if (!empty_fields && !errors)
		return true;
	
	// display any error messages
	msg  = "_______________________________________________\n\n";
	msg += "The form was not submitted because of the following error(s).\n";
	msg += "Please correct these error(s) and re-submit\n"
	msg += "_______________________________________________\n\n";
	
	if (empty_fields) {
		msg += "The following required field(s) are empty:" + empty_fields + "\n";
		if (errors) msg += "\n";
	}
	msg += errors;
	alert(msg);
	return false;
}	

function initializeForm(formObj)
{
	formObj.postcode.numeric = true;
	formObj.titleother.optional = true;
	formObj.position.optional = true;
	formObj.fax.optional = true;
	//formObj.email.optional = true;
	formObj.enclose_cheque.optional = true;
	formObj.cardnumber.numeric = true;										 
	formObj.expirymonth.numeric = true;
	formObj.expiryyear.numeric = true;

	if (formObj.CocktailPartyGuestName)
	{
		formObj.CocktailPartyGuestName.optional = true;
	}
	if (formObj.CocktailGuestName)
	{
		formObj.CocktailGuestName.optional = true;
	}
	if (formObj.DinnerGuestName)
	{
		formObj.DinnerGuestName.optional = true;
	}

	if (formObj.BreakfastGuestName)
	{
		formObj.BreakfastGuestName.optional = true;
	}
 
	if (formObj.enclose_cheque.checked) {
		formObj.total_payable.optional = true;
		formObj.paymethod.optional = true;
		formObj.cardnumber.optional = true;
		formObj.expirymonth.optional = true;
		formObj.expiryyear.optional = true;
		formObj.cardname.optional = true;
	} else {
		formObj.total_payable.optional = false;
		formObj.paymethod.optional = false;
		formObj.cardnumber.optional = false;
		formObj.expirymonth.optional = false;
		formObj.expiryyear.optional = false;
		formObj.cardname.optional = false; 
	}
}

function stripDollarSign() {
document.affiliates.amount_payable.value = document.affiliates.amount_payable.value.replace(/\$+/g,"");
	}

var costBasic = 0;
var earlyBirdDiscount = 0;
var costDinner = 0;
var costDinnerGuest = 0;
var costCocktail = 0;
var costCocktailGuest = 0;
var costBreakfast = 0;
var costBreakfastGuest = 0;

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)?'':'-') + num + '.' + cents);
}
function calTotal() {
	var fm = document.state_event;


	fm.total_payable.value=formatCurrency(costBasic-earlyBirdDiscount+costDinner+costDinnerGuest+costCocktail+costCocktailGuest+costBreakfast+costBreakfastGuest);
}



function radiochecked (group) {
     var checked = false;
     if (!group.length)
       checked = element.checked;
     else
       for (var r = 0; r < group.length; r++)
         if ((checked = group[r].checked))
           break;
		   
     if (!checked)
		return false;
		
	 return true;
}

function resetbutton(){


	for (var r = 0; r < document.EnrolOnline.tutorial_city.length; r++)
	{document.EnrolOnline.tutorial_city[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode1.length; r++)
	{document.EnrolOnline.studymode1[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode2.length; r++)
	{document.EnrolOnline.studymode2[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode3.length; r++)
	{document.EnrolOnline.studymode3[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode4.length; r++)
	{document.EnrolOnline.studymode4[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode5.length; r++)
	{document.EnrolOnline.studymode5[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode6.length; r++)
	{document.EnrolOnline.studymode6[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode7.length; r++)
	{document.EnrolOnline.studymode7[r].checked=false;}

	for (var r = 0; r < document.EnrolOnline.studymode8.length; r++)
	{document.EnrolOnline.studymode8[r].checked=false;}

	return true;
}

function newverify(form) {
	form.other_title.optional = true;
	form.preferredname.optional = true;
	form.home_postcode.numeric = true;
	form.middlename.optional = true;
	form.home_mobile.optional = true;
	form.home_fax.optional = true;
	form.work_postcode.numeric = true;
	form.work_mobile.optional = true;
	form.work_fax.optional = true;
	form.birthday.numeric = true;
	form.birthmonth.numeric = true;
	form.birthyear.numeric = true;
	form.total_fee.numeric = true;
	form.cardnumber.numeric = true;
	form.expirymonth.numeric = true;
	form.expiryyear.numeric = true;
	form.single_subject.numeric = true;
	form.uni_insti.optional = true;
	form.uni_course.optional = true;
	form.uni_major.optional = true;
	form.uni_year.optional = true;
	form.uni_year.numeric = true;
	form.uni_insti2.optional = true;
	form.uni_course2.optional = true;
	form.uni_major2.optional = true;
	form.uni_year2.optional = true;
	form.uni_year2.numeric = true;
	form.studymode1[0].optional = true;
	form.studymode2[0].optional = true;
	form.studymode3[0].optional = true;
	form.studymode4[0].optional = true;
	form.studymode5[0].optional = true;		
	form.studymode6[0].optional = true;
	form.studymode7[0].optional = true;
	form.studymode8[0].optional = true;				 		 
	form.tutorial_city[0].optional = true;
	form.cheque.optional = true;
	form.paymethod.optional = true;
    	form.cardholder_name.optional = true;
    	form.cardnumber.optional = true;
    	form.expirymonth.optional = true;
	form.expiryyear.optional = true;
	
    if (verify(form)) 
    {
	if (!radiochecked(form.studymode1) && !radiochecked(form.studymode2) 
		&& !radiochecked(form.studymode3) && !radiochecked(form.studymode4) 
		&& !radiochecked(form.studymode5) && !radiochecked(form.studymode6)
		&& !radiochecked(form.studymode7) && !radiochecked(form.studymode8)) 
	{
		alert('Please check at least one of the radio buttons of subject ' +'and study modes');
        	return false;	
	}
    } 
    else { return false; }

	return true; 
}

function initializeEventForm(formObj)
{
	
	formObj.postcode.numeric = true;										 
	formObj.titleother.optional = true;
	 formObj.position.optional = true;
	 formObj.fax.optional = true;
	 //formObj.email.optional = true;
	 formObj.enclosech.optional = true;
	 formObj.cardnumber.numeric = true;										 
	 formObj.expirymonth.numeric = true;
	 formObj.expiryyear.numeric = true;
	 if (formObj.enclosech.checked) {
		formObj.total_payable.optional = true;
		formObj.paymethod.optional = true;
		formObj.cardnumber.optional = true;
		formObj.expirymonth.optional = true;
		formObj.expiryyear.optional = true;
		formObj.cardname.optional = true;
	 } else {
		formObj.total_payable.optional = false;
		formObj.paymethod.optional = false;
		formObj.cardnumber.optional = false;
		formObj.expirymonth.optional = false;
		formObj.expiryyear.optional = false;
		formObj.cardname.optional = false; 
	 }
}