// Common Javascript functions, including:
//
// Macromedia rollover functions
// Popup functions
// Overlay (layer) functions
// Widget (floating menu) functions
//

//Macromedia rollover 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_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];}
}

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_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

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_popupMsg(msg) { //v1.0
  alert(msg);
}

// Popup functions

function new_popup(fileHref,windowHeight,windowWidth,posLeft,posTop,showToolbar,showScrollbars,showLocation,allowResizable) {
    newWindow=window.open(fileHref, "", "height="+windowHeight+",width="+windowWidth+",left="+posLeft+",top="+posTop+",toolbar="+showToolbar+",scrollbars="+showScrollbars+",location="+showLocation+",resizable="+allowResizable);
}

// Overlay (layer) functions

function toggleLayer(whichLayer) {
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}

function hideit (something) {
	var bob = document.getElementById(something);
	bob.style.display = 'none';	
}

function showit (something) {
	var bob = document.getElementById(something);
	bob.style.display = 'block';
}

// Widget (floating menu) functions

var ua = navigator.userAgent;
var ual = ua.toLowerCase();

var brokenHover = ((ual.indexOf("msie") != -1) && (ual.indexOf("konqueror") == -1));
var mozPosBug = false;

var bd = ua.match(/Gecko\/(\d+)/);

if (bd) {
   try {
      var d = new Date(bd[1].substr(0, 4), bd[1].substr(4,2), bd[1].substr(6,2));
      if (d <= new Date( 2003, 10, 18 )) {
         mozPosBug = true;
      }
   } catch (e) {}
}

function dSM( num ) {
   if (brokenHover) {
      var sm = document.getElementById('subMenu' + num);
      sm.style.visibility = "visible";
   } else if (mozPosBug) {
      var sm = document.getElementById('subMenu' + num);
      sm.style.marginTop = "20";
   }
}

function hSM( num ) {
   if (!brokenHover) return;
   var sm = document.getElementById('subMenu' + num);
   sm.style.visibility = "hidden";
}

// Show hide element functions

function showDiv(boxid) {
   var sm = document.getElementById(boxid);
   sm.style.visibility = "visible";
   sm.style.display = "block";
}

function hideDiv(boxid) {
   var hm = document.getElementById(boxid);
   hm.style.visibility = "hidden";
   hm.style.display = "none";
}

function showHideDiv(boxid1, boxid2) {
   var sm = document.getElementById(boxid1);
   var hm = document.getElementById(boxid2);
   sm.style.visibility = "visible";
   sm.style.display = "block";
   hm.style.visibility = "hidden";
   hm.style.display = "none";
}

// Modalbox functions

function closeModalbox()
{
	if ($('closeModalbox')) {
		// hide the modal box
		Modalbox.hide();
		// refresh the current page
		location.reload(true);
	} else {
		// resize to content (in case of validation error messages)
		Modalbox.resizeToContent()
	}
	return true;
}

// check Flash version

function MM_CheckFlashVersion(reqVerStr,msg){
  with(navigator){
    var isIE  = (appVersion.indexOf("MSIE") != -1 && userAgent.indexOf("Opera") == -1);
    var isWin = (appVersion.toLowerCase().indexOf("win") != -1);
    if (!isIE || !isWin){  
      var flashVer = -1;
      if (plugins && plugins.length > 0){
        var desc = plugins["Shockwave Flash"] ? plugins["Shockwave Flash"].description : "";
        desc = plugins["Shockwave Flash 2.0"] ? plugins["Shockwave Flash 2.0"].description : desc;
        if (desc == "") flashVer = -1;
        else{
          var descArr = desc.split(" ");
          var tempArrMajor = descArr[2].split(".");
          var verMajor = tempArrMajor[0];
          var tempArrMinor = (descArr[3] != "") ? descArr[3].split("r") : descArr[4].split("r");
          var verMinor = (tempArrMinor[1] > 0) ? tempArrMinor[1] : 0;
          flashVer =  parseFloat(verMajor + "." + verMinor);
        }
      }
      // WebTV has Flash Player 4 or lower -- too low for video
      else if (userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 4.0;

      var verArr = reqVerStr.split(",");
      var reqVer = parseFloat(verArr[0] + "." + verArr[2]);
  
      if (flashVer < reqVer){
        if (confirm(msg))
          window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";
      }
    }
  } 
}
