var g_browserOpera          = 1;
var g_browserSafari         = 2;
var g_browserFirefox        = 3;
var g_browserIE             = 4;
var g_browserOther          = 5;
var g_browserIE6            = 6;
var g_browserIE7            = 7;
var g_ieVersion             = -1;


//
//	urlEncode
//
//	
//
////////////////////////////////////////////////////////////
function urlEncode(plaintext)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS  = "0123456789" +					// Numeric
					   "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					   "abcdefghijklmnopqrstuvwxyz" +
					   "-_.!~*'()";					// RFC2396 Mark characters
	var HEX        = "0123456789ABCDEF";
	var encoded    = "";
	
	for (var i = 0; i < plaintext.length; i++ ) 
	{
		var ch = plaintext.charAt(i);
		
	    if (ch == " ") 
	    {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} 
		else if (SAFECHARS.indexOf(ch) != -1) 
		{
		    encoded += ch;
		} 
		else 
		{
		    var charCode = ch.charCodeAt(0);
		    
			if (charCode > 255) 
			{
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} 
			else 
			{
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
}


//
//	urlDecode
//
//	
//
////////////////////////////////////////////////////////////
function urlDecode(encoded)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS     = "0123456789ABCDEFabcdef"; 
   var plaintext    = "";
   var i            = 0;
   
   while (i < encoded.length) 
   {
       var ch = encoded.charAt(i);
       
	   if (ch == "+") 
	   {
	       plaintext += " ";
		   i++;
	   } 
	   else if (ch == "%") 
	   {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) 
            {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} 
			else 
			{
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} 
		else 
		{
		   plaintext += ch;
		   i++;
		}
	} // while
	
   return plaintext;
}


//
//	createEmbedYouTubeClip
//
//	
//
////////////////////////////////////////////////////////////
function createEmbedYouTubeClip(clip, width, height, autoplay)
{
    var embed;
    
    GetBrowserClient();
    
    if (g_ieVersion != g_browserIE6)
    {
        embed = '<object class="youTubeClip" width="'+width+'" height="'+height+'">' +
                        '<param name="movie" value="http://www.youtube.com/v/'+clip+'&rel=1&autoplay='+autoplay+'"></param>' +
                        '<param name="wmode" value="transparent"></param>' +
                        '<embed src="http://www.youtube.com/v/'+clip+'&rel=1&autoplay='+autoplay+'" ' +
                               'type="application/x-shockwave-flash" wmode="transparent" width="'+width+'" height="'+height+'"></embed></object>';
    }
    else
    {                      
        embed = '<embed src="http://www.youtube.com/v/'+clip+'&rel=1&autoplay='+autoplay+'" ' +
                               'type="application/x-shockwave-flash" wmode="transparent" width="'+width+'" height="'+height+'"></embed>';
    }
                            
    return embed;
}


//
//	GetBrowserClient
//
//	returns the browser client
//
////////////////////////////////////////////////////////////
function GetBrowserClient()
{
    var browser;
    var agt = navigator.userAgent.toLowerCase(); 

    if (agt.indexOf('opera') != -1)
    {
        browser = g_browserOpera;
    }
    else if (agt.indexOf('safari') != -1) 
    {
        browser = g_browserSafari;
    }
    else if (agt.indexOf('firefox') != -1) 
    {
        browser = g_browserFirefox;
    }
    else if (agt.indexOf('msie') != -1)
    {
        var version = getIEVersionNumber();
        
        if (version <= 6)
        {
            g_ieVersion = g_browserIE6;
        }
        else
        {
            g_ieVersion = g_browserIE7;
        }
        
        browser     = g_browserIE;
    }
    
    return browser;
}


//
//	getIEVersionNumber
//
//	
//
////////////////////////////////////////////////////////////
function getIEVersionNumber() 
{
    var version     = -1;
    var ua          = navigator.userAgent;
    var MSIEOffset  = ua.indexOf("MSIE ");
    
    if (MSIEOffset == -1) 
    {
        version = 0;
    } 
    else 
    {
        version = parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
    }

    return version;
}


//
//	strrev
//
//	
//
////////////////////////////////////////////////////////////
function strrev(str) 
{
    if (!str) 
    {
        return '';
    }
    
    var revstr='';
   
    for (i = str.length-1; i>=0; i--)
    {
        revstr+=str.charAt(i);
    }
    
    return revstr;
}


//
//	reverseFind
//
//	
//
////////////////////////////////////////////////////////////
function reverseFind(str, subStr)
{
    var tmp     = strrev(str);
    var nPos    = tmp.indexOf(subStr);
    
    if (nPos != -1)
    {
        nPos = tmp.length - nPos - 1;
    }
    
    return nPos;
}


//
//	MM_jumpMenu
//
//	
//
////////////////////////////////////////////////////////////
function MM_jumpMenu(targ,selObj,restore)
{ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}


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