// JavaScript Document

 function checkEmail()
 {
	var x = document.getElementById('tutor_email').value;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+ac.uk$/;
	if (filter.test(x)) document.getElementById('email_checking').innerHTML = '<span style="color:#009900"><b>Correct email address!</b></span>';
	else document.getElementById('email_checking').innerHTML = '<span style="color:#FF0000">Go on entering your email address ... (must end with .ac.uk)</span>';
	
 }
 function check100Words(box_id)
 {
	var content = document.getElementById(box_id).value;
	content=content.split(" ")
	wds = content.length;
	
	if ( wds <= 100 )
	document.getElementById(box_id+'_check').innerHTML = '<span style="color:#009900"><b>'+wds+' words</b></span>';
	else
	document.getElementById(box_id+'_check').innerHTML = '<span style="color:#FF0000"><b>Too many words ! ('+wds+'). Please reduce the word count.</b></span>';
	
 }
 
 
 
 
function togglePlop(plop)
{
	if ( document.getElementById(plop).style.display == 'none' )
		document.getElementById(plop).style.display = '';
	else
		document.getElementById(plop).style.display = 'none';
}

function askConfirm(msg)
{
	if ( window.confirm(msg) )
	{
		return true;
	}
	else
	{
		return false;
	}
}


function showAdvancedOptions()
{
	document.getElementById('advanced_options').style.display = '';
	document.getElementById('advanced_options_1').style.display = 'none';
	document.getElementById('advanced_options_2').style.display = '';
	document.getElementById('advanced').value = 1;
}
function hideAdvancedOptions()
{
	document.getElementById('advanced_options').style.display = 'none';
	document.getElementById('advanced_options_1').style.display = '';
	document.getElementById('advanced_options_2').style.display = 'none';
	document.getElementById('advanced').value = 0;
}



// JavaScript Document

/*
###########################################
# Ajax Functions
###########################################
*/

var http_request = false;
var nextcall2 = false;
var inner2change3 = false;
function makeRequestUTF_Call(url,innervar,whattocall)
{
	http_request = false;
	inner2change3 = innervar;
	nextcall2 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request.onreadystatechange = function() { alertContentsUTF_Call(http_request); } //alertContentsURL;
	http_request.open('GET', url, true);
	http_request.send(null);

}

function alertContentsUTF_Call()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var xmldoc = http_request.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change3).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change3).innerHTML = '';
			}
			setTimeout(nextcall2, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}




var http_request4 = false;
var nextcall4 = false;
var inner2change4 = false;
function makeRequestUTF_Call4(url,innervar,whattocall)
{
	http_request4 = false;
	inner2change4 = innervar;
	nextcall4 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request4 = new XMLHttpRequest();
		if (http_request4.overrideMimeType)
		{
			http_request4.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request4 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request4 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request4)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request4.onreadystatechange = function() { alertContentsUTF_Call4(http_request4); } //alertContentsURL;
	http_request4.open('GET', url, true);
	http_request4.send(null);

}

function alertContentsUTF_Call4()
{
	if (http_request4.readyState == 4)
	{
		if (http_request4.status == 200)
		{
			var xmldoc = http_request4.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change4).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change4).innerHTML = '';
			}
			setTimeout(nextcall4, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}







var http_request5 = false;
var nextcall5 = false;
var inner2change5 = false;
function makeRequestUTF_Call5(url,innervar,whattocall)
{
	http_request5 = false;
	inner2change5 = innervar;
	nextcall5 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request5 = new XMLHttpRequest();
		if (http_request5.overrideMimeType)
		{
			http_request5.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request5 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request5 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request5)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request5.onreadystatechange = function() { alertContentsUTF_Call5(http_request5); } //alertContentsURL;
	http_request5.open('GET', url, true);
	http_request5.send(null);

}

function alertContentsUTF_Call5()
{
	if (http_request5.readyState == 4)
	{
		if (http_request5.status == 200)
		{
			var xmldoc = http_request5.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change5).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change5).innerHTML = '';
			}
			setTimeout(nextcall5, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}





var http_request6 = false;
var nextcall6 = false;
var inner2change6 = false;
function makeRequestUTF_Call6(url,innervar,whattocall)
{
	http_request6 = false;
	inner2change6 = innervar;
	nextcall6 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request6 = new XMLHttpRequest();
		if (http_request6.overrideMimeType)
		{
			http_request6.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request6 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request6 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request6)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request6.onreadystatechange = function() { alertContentsUTF_Call6(http_request6); } //alertContentsURL;
	http_request6.open('GET', url, true);
	http_request6.send(null);

}

function alertContentsUTF_Call6()
{
	if (http_request6.readyState == 4)
	{
		if (http_request6.status == 200)
		{
			var xmldoc = http_request6.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change6).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change6).innerHTML = '';
			}
			setTimeout(nextcall6, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}




var http_request7 = false;
var nextcall7 = false;
var inner2change7 = false;
function makeRequestUTF_Call7(url,innervar,whattocall)
{
	http_request7 = false;
	inner2change7 = innervar;
	nextcall7 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request7 = new XMLHttpRequest();
		if (http_request7.overrideMimeType)
		{
			http_request7.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request7 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request7 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request7)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request7.onreadystatechange = function() { alertContentsUTF_Call7(http_request7); } //alertContentsURL;
	http_request7.open('GET', url, true);
	http_request7.send(null);

}

function alertContentsUTF_Call7()
{
	if (http_request7.readyState == 4)
	{
		if (http_request7.status == 200)
		{
			var xmldoc = http_request7.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change7).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change7).innerHTML = '';
			}
			setTimeout(nextcall7, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}











var http_request8 = false;
var nextcall8= false;
var inner2change8 = false;
function makeRequestUTF_Call8(url,innervar,whattocall)
{
	http_request8 = false;
	inner2change8 = innervar;
	nextcall8 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request8 = new XMLHttpRequest();
		if (http_request8.overrideMimeType)
		{
			http_request8.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request8 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request8 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request8)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	//http_request8.onreadystatechange = function() { alertContentsUTF_Call8(http_request8); } //alertContentsURL;
	http_request8.open('GET', url, true);
	http_request8.send(null);


	setTimeout('set_tutee_online()', 20000);

}

/*
function alertContentsUTF_Call8()
{
	if (http_request8.readyState == 4)
	{
		if (http_request8.status == 200)
		{
			var xmldoc = http_request8.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				document.getElementById(inner2change8).innerHTML = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change8).innerHTML = '';
			}
			setTimeout(nextcall8, 20);
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}
*/













var http_request9 = false;
var nextcall9 = false;
var inner2change9 = false;
function mRUTF_Call9(url,innervar,whattocall)
{
	http_request9 = false;
	inner2change9 = innervar;
	nextcall9 = whattocall;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request9 = new XMLHttpRequest();
		if (http_request9.overrideMimeType)
		{
			http_request9.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request9 = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request9 = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request9)
	{
		alert('Sorry, unable to create the page. Please update your browser (www.getfirefox.com). (Error with XMLHTTP)');
		return false;
	}
	http_request9.onreadystatechange = function() { alertContentsUTF_Call9(http_request9); } //alertContentsURL;
	http_request9.open('GET', url, true);
	http_request9.send(null);

}

function alertContentsUTF_Call9()
{
	if (http_request9.readyState == 4)
	{
		if (http_request9.status == 200)
		{
			var xmldoc = http_request9.responseXML;
			var root_node = xmldoc.getElementsByTagName('root').item(0);		
			try
			{
				var temp0 = decode_utf8( root_node.firstChild.data );
			}
			catch ( ex )
			{			
				document.getElementById(inner2change9).innerHTML = '';
			}
			
			////////////////
			var arr = temp0.split('-');
			for (var j=0; j<arr.length; j++)
			{
				
				var temp1 = arr[j].split('_');
				
				if ( ( temp1[0] == 'tutor' )  || ( temp1[0] == 'tutee' ) )
				{
					
					//alert(temp1);
				
					
				
					// For every elem on the screen
					var elementsArray = document.getElementsByTagName('span');
					for (var i = 0; i < elementsArray.length; i++)
					{		
						if ( elementsArray[i].getAttribute('id') != null )
						{
							// status_oo_tutor_
							if ( elementsArray[i].getAttribute('id').substr(0, 10) == 'status_oo_' )
							{
								var temp3 = elementsArray[i].getAttribute('id');
								var temp2 = temp3.split('_');
								
								//alert('temp1 ' + temp1 + ' ///  temp2 ' + temp2 );
								
								// Check corresponds (temp1=ResultFromLibPost // temp2=HomePHPSpan
								if ( ( temp2[3] == temp1[0] ) && ( temp2[4] == temp1[1] ) )
								{
									
									
									//alert('is ' + temp1[2] + ' check : ' + temp2 + ' // ' + temp1 );		
									
									if ( temp1[2] == 'online' )
									document.getElementById(elementsArray[i].getAttribute('id')).innerHTML = '<span style="color:green;"><b>Currently online !</b></span>';
									else if ( temp1[2] == 'offline' )
									document.getElementById(elementsArray[i].getAttribute('id')).innerHTML = '<span style="color:red;">Not connected yet.</span>';	
								}
								
		
							}
						}
					}
					
				
				} // end .. is tutor tutee
				
				
			}
	
			
		} else {
		//	alert('Sorry, an error has been detected. Please try again later...');
		}
	}
}








/*
function set_tutor_online()
{
	makeRequestUTF_Call8('/lib_post.php?func=update_online','ajax_data_handler__8','dN()');
}
*/

function set_tutee_online()
{
	makeRequestUTF_Call8('/lib_post.php?func=update_online&fckie='+Math.random(), 'ajax_data_handler__8','dN()');
}



function change_status_all()
{
	var tempstr = '';
	var elementsArray = document.getElementsByTagName('span');
	for (var i = 0; i < elementsArray.length; i++)
	{					
		if ( elementsArray[i].getAttribute('id') != null )
		{
			// status_oo_tutor_
			if ( elementsArray[i].getAttribute('id').substr(0, 10) == 'status_oo_' )
			{
				tempstr = tempstr + '-' + elementsArray[i].getAttribute('id');
			}
		}
	}
	
	mRUTF_Call9('/lib_post.php?func=check_span&name='+tempstr+'&fckie='+Math.random(), 'null', 'dN()');
	setTimeout('change_status_all()', 10000);
	
}





/*
###########################################
# Encoding Functions
###########################################
*/

function encode_utf8( s )
{
  return unescape( encodeURIComponent( s ) );
}

function decode_utf8( s )
{
  return decodeURIComponent( escape( s ) );
}

function uD(str){
    str=str.replace(new RegExp('\\+','g'),' ');
    return unescape(str);
}
function uE(str){
    str=escape(str);
    str=str.replace(new RegExp('\\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}
function dN() { }






/*
###########################################
# Useful
###########################################
*/



function enlargePicture(sPicURL) {
	window.open("/enlarge.php?"+sPicURL, "", "resizable=1,HEIGHT=200,WIDTH=200");
}


function goProfile(sURL) {
	window.open(sURL, "Profile", "resizable=0,HEIGHT=450,WIDTH=350");
}


function timeoutRemaining()
{
	var count = document.getElementById('span_seconds_left').innerHTML;
	if ( count == 0 ) 
	{
		window.location.href = 'call-abort.php';
	}
	else 
	{
		document.getElementById('span_seconds_left').innerHTML = (count-1);
	}
	setTimeout('timeoutRemaining()', 1000);
}


/*
###########################################
# Call functions
###########################################
*/


function is_numeric(num)
{
	var exp = new RegExp("^[0-9]*$","g");
	return exp.test(num);
}


/* New call Tutee ==> Tutor */
function call_getNew()
{
	makeRequestUTF_Call4('/lib_post.php?func=call_isnew&fck_ie='+Math.random(), 'ajax_data_handler__1', 'call_getNew__callback()');	
	setTimeout('call_getNew()', 10000);
}

function call_getNew__callback()
{
	var temp = document.getElementById('ajax_data_handler__1').innerHTML;
	if ( temp == 'NoNewCall' )
	{
		document.getElementById('call_window').innerHTML = '';	
	}
	else if ( temp != '' )
	{
		document.getElementById('call_window').innerHTML = '<div style="border:green 1px solid; background-color:#b4ebab; width:680px; padding:5px; font-size:18px; font-family:Arial;"><b>You have received a new call !</b> ' + '<div id="callbox" style="width:220px; height:50px; color:red; float:right; margin-top:-26px; font-weight:bold; font-size:12px;">You must get Adobe Flash to be able to have online tuition! <a href="http://www.adobe.com/go/getflashplayer">Click here to download it now</a>, then log in again!</div>' + '</div><br /><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="1" height="1"><param name="movie" value="/call.swf" /><param name="quality" value="high" /><embed src="/call.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="1" height="1"></embed></object>';
		
		//<a onclick="tutor_startcall('+temp+'); return false;">Accept</a> | <a href="#" onclick="call_refuseCall('+temp+'); return false;">Refuse</a>
		
		
			var so = new SWFObject("/btn-call-tutor.swf?v21", "viewer", "220", "28", "7", "#B4EBAB");
			so.addVariable("tmp", temp);
			so.write("callbox");
	}
}



/* On calling, if tutor refuses a call */
function call_refuseCall(cid)
{
	makeRequestUTF_Call5('/lib_post.php?func=call_refuse&call_id='+cid+'&fck_ie='+Math.random(), 'ajax_data_handler__0', 'dN()');	
	document.getElementById('call_window').innerHTML = 'Call refused... Please wait a few seconds.';	
}





/* On Calling, checking if tutee got an answer */
function call_getReply_Tutee(cid)
{
	makeRequestUTF_Call6('/lib_post.php?func=call_check_accepted&call_id='+cid+'&fck_ie='+Math.random(), 'ajax_data_handler__6', 'call_getReply_Tutee__callback('+cid+')');		
	setTimeout('call_getReply_Tutee('+cid+')', 4500);
}
function call_getReply_Tutee__callback(cid)
{
	var temp = document.getElementById('ajax_data_handler__6').innerHTML;
	if ( temp == 'AcceptedBoth' )
	{
		window.location.href = 'call-room.php?call_id='+cid;
	}
	else if ( temp == 'RefusedTutor' )
	{
		window.location.href = 'call-refuse.php?call_id='+cid;
	}
}




/* On Calling, checking if tutee got an answer */
function call_getConfirm_Tutor(cid)
{
	makeRequestUTF_Call6('/lib_post.php?func=call_check_confirmed&call_id='+cid+'&fck_ie='+Math.random(), 'ajax_data_handler__6', 'call_getConfirm_Tutor__callback('+cid+')');		
	setTimeout('call_getConfirm_Tutor('+cid+')', 4500);
}
function call_getConfirm_Tutor__callback(cid)
{
	var temp = document.getElementById('ajax_data_handler__6').innerHTML;
	if ( temp == 'Confirmed' )
	{
		window.location.href = 'call-room.php?call_id='+cid+'&fck_ie='+Math.random();
	}
	else if ( temp == 'Expire' )
	{
		window.location.href = 'call-timeout.php?call_id='+cid+'&fck_ie='+Math.random();
	}
}



function tutee_startcall(tid) {
	pmsg = window.open("call.php?tutor_id="+tid, "HTOSESSION", "resizable=1,HEIGHT=300,WIDTH=400");
	if(pmsg.window.focus){pmsg.window.focus();}
}
function tutor_startcall(cid) {
	pmsg = window.open("call-check.php?call_id="+cid, "HTOSESSION", "resizable=1,HEIGHT=300,WIDTH=400");
	if(pmsg.window.focus){pmsg.window.focus();}
}


function confirmUnload()
{
	return false;
}



/*
###########################################
# MM Functions
###########################################
*/


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];}
}





/*
###########################################
# Flash Detection
###########################################
*/

/*
Copyright (c) Copyright (c) 2007, Carl S. Yestrau All rights reserved.
Code licensed under the BSD License: http://www.featureblend.com/license.txt
Version: 1.0.2
*/
var FlashDetect = new function(){
	var self = this;
	self.installed = false;
	self.major = -1;
	self.minor = -1;
	self.revision = -1;
	self.revisionStr = "";
	self.activeXVersion = "";
	var activeXDetectRules = [
		{
			"name":"ShockwaveFlash.ShockwaveFlash.7",
			"version":function(obj){
				return getActiveXVersion(obj);
			}
		},
		{
			"name":"ShockwaveFlash.ShockwaveFlash.6",
			"version":function(obj){
				var version = "6,0,21";
				try{
					obj.AllowScriptAccess = "always";
					version = getActiveXVersion(obj);
				}catch(err){}
				return version;
			}
		},
		{
			"name":"ShockwaveFlash.ShockwaveFlash",
			"version":function(obj){
				return getActiveXVersion(obj);
			}
		}
	];
	var getActiveXVersion = function(activeXObj){
		var version = -1;
		try{
			version = activeXObj.GetVariable("$version");
		}catch(err){}
		return version;
	};
	var getActiveXObject = function(name){
		var obj = -1;
		try{
			obj = new ActiveXObject(name);
		}catch(err){}
		return obj;
	};
	var parseActiveXVersion = function(str){
		var versionArray = str.split(",");//replace with regex
		return {
			"major":parseInt(versionArray[0].split(" ")[1], 10),
			"minor":parseInt(versionArray[1], 10),
			"revision":parseInt(versionArray[2], 10),
			"revisionStr":versionArray[2]
		};
	};
	var parseRevisionStrToInt = function(str){
		return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision;
	};
	self.majorAtLeast = function(version){
		return self.major >= version;
	};
	self.FlashDetect = function(){
		if(navigator.plugins && navigator.plugins.length>0){
			var type = 'application/x-shockwave-flash';
			var mimeTypes = navigator.mimeTypes;
			if(mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description){
				var desc = mimeTypes[type].enabledPlugin.description;
				var descParts = desc.split(' ');//replace with regex
				var majorMinor = descParts[2].split('.');
				self.major = parseInt(majorMinor[0], 10);
				self.minor = parseInt(majorMinor[1], 10); 
				self.revisionStr = descParts[3];
				self.revision = parseRevisionStrToInt(self.revisionStr);
				self.installed = true;
			}
		}else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript){
			var version = -1;
			for(var i=0; i<activeXDetectRules.length && version==-1; i++){
				var obj = getActiveXObject(activeXDetectRules[i].name);
				if(typeof obj == "object"){
					self.installed = true;
					version = activeXDetectRules[i].version(obj);
					if(version!=-1){
						var versionObj = parseActiveXVersion(version);
						self.major = versionObj.major;
						self.minor = versionObj.minor; 
						self.revision = versionObj.revision;
						self.revisionStr = versionObj.revisionStr;
						self.activeXVersion = version;
					}
				}
			}
		}
	}();
};
//FlashDetect.release = "1.0.2";