var userOS = getOS();
var browserName = getBrowserName();
var browserVersion = getBrowserVersion();

function getBrowserName()
{
	var lsBrowser = navigator.appName;
	if (lsBrowser.indexOf("Microsoft") >= 0 )
	{
		var userAgent = navigator.userAgent;
		if (userAgent.indexOf("Opera") >= 0) 	{ lsBrowser = "Opera"; 	}
		else { 	lsBrowser = "MSIE"; }
	}
	else if (lsBrowser.indexOf("Netscape") >= 0 )
	{
		lsBrowser = "Netscape";
	}
	else
	{
		lsBrowser = "Unknown";
	}
	return lsBrowser;
}


function getOS()
{
	var userPlat = "unknown";
	var navInfo = navigator.userAgent;

	if ((navInfo.indexOf("Windows NT") != -1)
		|| (navInfo.indexOf("Windows 95") != -1)
		|| (navInfo.indexOf("Windows 98") != -1)
		|| (navInfo.indexOf("Win NT") != -1)
		|| (navInfo.indexOf("Win 95") != -1)
		|| (navInfo.indexOf("Win 98") != -1))
	{
		userPlat = "Win32";
	}
	else if(navInfo.indexOf("Win16") != -1)
	{
		userPlat = "Win16";
	}
	else if (navInfo.indexOf("Macintosh") != -1) 
	{
		userPlat = "PPC";
	}
	else if (navInfo.indexOf("68K") != -1)
	{
		userPlat = "68K";
	}
	return userPlat;
}

function getBrowserVersion()
{
	var findIndex;
	var browserVersion = 0;
	var browser = getBrowserName();

	if (browser == "MSIE")
	{
	browserVersion = navigator.userAgent;
	findIndex = browserVersion.indexOf(browser) + 5;
	browserVersion = parseInt(browserVersion.substring(findIndex, findIndex + 1));
	}
	else
	{
	browserVersion = parseInt(navigator.appVersion.substring(0, 1));
	}
	return browserVersion;
}
//alert("browserversion: " + browserName + " version: " + browserVersion);


function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

var ns = (document.layers)? true:false
var ie = (document.all)   ? true:false
var id;

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function show(id)
{
	
	var styleObject = getStyleObject('sub' + id);
	
	if		(ns) {; styleObject.visibility = "show"; }
	else if (ie) { styleObject.visibility = "visible";}
	
	return false;
}

function hide(id)
{
	var styleObject;
	var i;
	for(i=1; i<=1; i++)
	{
		styleObject = getStyleObject('sub' + i);
		if (ns) styleObject.visibility = "hide";
		else if (ie) styleObject.visibility = "hidden";
	}
	return false;
}

function isName(text)
//check name entered in the registration form. 
//can contain letters, dash and spaces
{
	if (text.length == 0) 
	{
		return false;
	}
	var regExp = /[^A-Za-z\xC0-\xFF\- ]+/
	return !(regExp.test(text));
}

function isEmail(formname) {
//check that email entered in registration form is valid 
	if (formname == "newUser") { var str = document.newUser.uemail.value; }
	else if (formname == "subscribe") { var str = document.subscribe.subscribeemail.value; }
	else { var str = document.form1.email.value; }

	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\_\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid
	  return true;
	}
	alert("\"" + str + "\" is not a valid e-mail address!\nPlease try again"); // this is also optional
	return false;
}


function onsubmit_validateForm(language, formname) {
	
	var msgboxtext = "Please fill in the following field/s:";
	var myform;
			
	switch(formname) { 
		case "newUser":
		case "subscribe":
		case "signup":
			
			myform = window.document.newUser;
			var aCompulsary = new Array("uemail", "utitle", "uname", "usurname", "ucompany", "uposition", "uprimbus", "uaddress", "upostcode", "ucity", "ucountry", "utel");
			
			switch(language){
				case "es":
					var aLanguage = new Array("Correo Electr\xF3nico", "T\xEDtulo", "Nombre", "Apellido\x2Fs", "Empresa", "Cargo", "Principal rama de negocios", "Direcci\xF3n", "C\xF3digo Postal", "Ciudad", "Pa\xEDs", "Telefone");
					break;
				case "pt":
					var aLanguage = new Array("E-mail", "T\xEDtulo", "Nome", "Sobrenome", "Empresa", "Posi\xE7\xE3o", "Ramo de Atividade", "Endere\xE7o", "CEP", "Ciudade", "Pa\xEDs", "Tel\xE9fone");
					msgboxtext = "Preencha o(s) seguinte(s) campo(s)"
					break;
				default:	//chinese, russian and english. Can't work out how to do the chinese chars in javascript...
					var aLanguage = new Array("Email", "Title", "First Name", "Family Name", "Company", "Position", "Primary Business", "Address", "Post code/Zip", "City", "Country", "Telephone");
					break;
			}
			break;
						
		default:
			myform = window.document.form1;
			var aCompulsary = new Array("name", "company", "businesstype", "jobtitle", "address", "postcode", "city", "country", "email");
						
			switch(language){
				case "es":
					var aLanguage = new Array("Nombre", "Empresa", "Principal rama de negocios", "Cargo", "Direcci\xF3n", "C\xF3digo Postal", "Ciudad", "Pa\xEDs", "Correo Electr\xF3nico");
					break;
				case "pt":
					var aLanguage = new Array("Nome", "Empresa", "Ramo de Atividade", "Posi\xE7\xE3o", "Endere\xE7o", "CEP", "Cidade", "Pa\xEDs", "E-mail");
					msgboxtext = "Preencha o(s) seguinte(s) campo(s)"
					break;
				default:	//chinese and english
					var aLanguage = new Array("Name", "Company name", "Primary Business", "Position", "Address", "Post Code", "City", "Country", "E-mail");
					break;
			}
			break;
	}
	var formlength = myform.elements.length;
	var sOutput = "";
	for (counter = 0; counter < formlength; counter++){
		if ((myform.elements[counter].value == "") || (myform.elements[counter].value == '00')){
			//Form element is empty!
			for (i = 0; i < aCompulsary.length; i++){
				if (aCompulsary[i] == myform.elements[counter].name) {
					//alert("Found field in compulsary array!" + myform.elements[counter].name);
					sOutput = sOutput + aLanguage[i] + ", ";
				}			
			}
		}
		if ((myform.elements[counter].name == 'uposition') && (myform.elements[counter].value == 'Other')) {
			if (myform.txtPosExtra.value == '') {
				//user has selected other in the position drop-down and not filled in position in the textfield provided
				sOutput = sOutput + aLanguage[5] + ", ";
			}
		}
	}
	
	if (formname == 'newUser') {
		var index;
		var element;
		var bNovalue = false;	//check if user have selected any interest areas.
		
		for (index=0; index < formlength; index++)
		{
			element = myform[index];
			if (element.type == "checkbox")
			{
				if (element.name == "focusarea")  {
					if (element.checked) 
					{	
						counter++;
						bNovalue = false;
						break;
					}
					else
					{	bNovalue = true; }
				}
			}
		}
		if ((bNovalue) && (sOutput.length == 0)) { 
			sOutput = 'Please select at least one interest area, '; 
			msgboxtext = ''
			}
		else if ((bNovalue) && (sOutput.length > 0)  )
			{sOutput = sOutput.substring(0, sOutput.length-2) + ' & Interest areas, ';}
		
	}
	
	if (sOutput.length > 0) {
		alert(msgboxtext + " \n" + sOutput.substring(0, sOutput.length-2));
		return false;
	}
	else { return true; }
}


var a

function openWin(page,props) { 
	//alert("Hello you");
  popupWin = window.open(page, 'GDS', props);
}

function onload_checkWindow(loadUrl)
{
	if (self.name == 'GDS') 
	{
		var parentWindow = window.opener;
		parentWindow.focus();
		//alert("helo");
		//document.write(loadUrl);
		parentWindow.location.href = loadUrl;
		//parentWindow.reload(loadUrl);
		self.close();
	}
}

//enables user to double click a company name in the select drop-down menu
//called from mag.asp, summary.asp, eventsubs.asp
function dblclick_displayoption(theEventNo, language) {
	var selectedValue, redirect_url;
	if (isNaN(theEventNo) == true) {
		selectedValue = theform.comp.value;
		redirect_url = 'company.asp?comp=' + selectedValue;
	}
	else {
		selectedValue = theform.compID.value;
		redirect_url = 'bio.asp?compID=' + selectedValue + '&eventID=' + theEventNo + '&lang=' + language;
	}
	location.reload(redirect_url);
}



//the functions below all used for rollovers...
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_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_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];}
}
//-->