function checkAjax()
{
	if ( window.XMLHttpRequest )
	{
		try
		{
			var requestObject = new XMLHttpRequest();
		}
		catch(e)
		{
			var requestObject = null;
		}
	}
	else if ( window.ActiveXObject )
	{
		try
		{
			var requestObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				var requestObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				var requestObject = null;
			}
		}
	}
	
	if ( requestObject == null )
	{
		return false;
	}
	
	return true;
}
function checkCookies()
{
	var tmp_cookie = new Date();
	var chk_cookie = (tmp_cookie.getTime().toString());
	document.cookie = 'chk_cookie=' + chk_cookie + '; path=/';
	if ( document.cookie.indexOf(chk_cookie, 0) < 0 )
	{
		return false;
	}
	
	return true;
}
function checkBrowser()
{
	if ( navigator.userAgent.match(/firefox/i) )
	{
		return 'ffox';
	}
	else if ( navigator.userAgent.match(/netscape/i) )
	{
		return 'nets';
	}
	else if ( navigator.userAgent.match(/opera/i) )
	{
		return 'op';
	}
	else if ( navigator.userAgent.match(/safari/i) )
	{
		return 'saf';
	}
	else if ( navigator.userAgent.match(/msie/i) )
	{
		return 'msie';
	}
	else if ( navigator.userAgent.match(/mozilla/i) )
	{
		return 'moz';
	}
	else
	{
		return false;
	}
}
function checkFlash(sRequired)
{
	var sVersion = deconcept.SWFObjectUtil.getPlayerVersion();
	
	if ( sVersion['major'] < sRequired )
	{
		return false;
	}
	
	return sVersion['major'] + '.' + sVersion['minor'] + '.' + sVersion['rev'];
}
function checkScreen(sMinRes)
{
	var sResolution = window.screen.colorDepth;
	
	if ( sResolution < sMinRes )
	{
		return false;
	}
	
	return sResolution;
}
function replaceContents(oDetect, sItem, sValue, sClass)
{
	//	select list items to cycle through
	var oItems = oDetect.getElementsByTagName('li');
	
	eval("var regex = /^" + sItem + "/;");
	for (var i = 0; i < oItems.length; i++)
	{
		if ( oItems[i].className.match(regex) )
		{
			//	clear text
			oItems[i].removeChild(oItems[i].firstChild);
			
			//	create new item
			var new_text = document.createTextNode(sValue);
			
			//	insert new item
			oItems[i].appendChild(new_text);
			
			//	change color and icon
			eval("var regex = /^(" + sItem + ")(\\w*)$/;");
			oItems[i].className = oItems[i].className.replace(regex, '$1_' + sClass);
			
			break;
		}
	}
	
	return;
}
function checkRequirements(sDetect, sCheckBrowser, sCheckCookies, sCheckAjax, sCheckFlashVersion, sCheckScreen)
{
	//	this is our list item
	var oDetect = document.getElementById(sDetect);
		
	//	javascript test (this test is always run!)
	replaceContents(oDetect, 'javascript', l_javascript, 'pass');
		
	//	browser test
	if ( sCheckBrowser == true )
	{
		var sBrowser = checkBrowser();
		if ( sBrowser != false && sBrowser != null )
		{
			replaceContents(oDetect, 'browser', l_browser.replace('%s', l_browsers[sBrowser]), sBrowser);
		}
		else
		{
			replaceContents(oDetect, 'browser', l_browser_fail, 'fail');
		}
	}
		
	//	cookies test
	if ( sCheckCookies == true )
	{
		var sCookie = checkCookies();
		if ( sCookie != false && sCookie != null )
		{
			replaceContents(oDetect, 'cookie', l_cookie, 'pass');
		}
		else
		{
			replaceContents(oDetect, 'cookie', l_cookie_fail, 'fail');
		}
	}
	
	//	AJAX test
	if ( sCheckAjax == true )
	{
		var sAjax = checkAjax();
		if ( sAjax != false && sAjax != null )
		{
			replaceContents(oDetect, 'ajax', l_ajax, 'pass');
		}
		else
		{
			replaceContents(oDetect, 'ajax', l_ajax_fail, 'fail');
		}
	}
	
	//	flash player test
	if ( sCheckFlashVersion != false )
	{
		var sFlash = checkFlash(sCheckFlashVersion);
		if ( sFlash != false && sFlash != null )
		{
			replaceContents(oDetect, 'flash', l_flash.replace('%s', sFlash), 'pass');
		}
		else
		{
			replaceContents(oDetect, 'flash', l_flash_fail, 'fail');
		}
	}
	
	//	screen resolution test
	if ( sCheckScreen != false )
	{
		var sScreen = checkScreen(sCheckScreen);
		if ( sScreen != false && sScreen != null )
		{
			replaceContents(oDetect, 'screen', l_screen.replace('%d', sScreen), 'pass');
		}
		else
		{
			replaceContents(oDetect, 'screen', l_screen_fail, 'fail');
		}
	}
	
	return;
}