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

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_setTextOfTextfield(objName,x,newText) { //v3.0
  var obj = MM_findObj(objName); if (obj) obj.value = newText;
}

var dis = false;
function disableShippingFields(d) {
// sets the shipping form fields to equal the billing form fields, and disables them
// requires disable(), and var dis - boolean
	var disableFields = new Array('s_address1', 's_address2', 's_city', 's_state', 's_zip');
	for (var j=0; j<disableFields.length; j++) {
		disable(d, disableFields[j]);
	}
	if (d) { dis = false; } else { dis = true; }
}
function disable(d, objName) {
	obj = MM_findObj(objName);
	if (d) {
		obj.disabled = false;
	} else {
		obj.disabled = true;
	}
}

function toggleDisplay(id) {
	if (document.getElementById) {
		var element = document.getElementById(id);
		if (element.style.display == 'none') {
			element.style.display = "";
		} else {
			element.style.display = "none";
		}
	}
} 

var currently_displayed = 0;


function toggleDisplayMulti(id_prefix, id_num) {
	var my_id;
	if (id_num > currently_displayed) {
		for (var i=currently_displayed+1; i<=id_num; i++) {
			my_id = id_prefix+i;
			toggleDisplay(my_id);
		}
	} else {
		for (var i=currently_displayed; i>id_num; i--) {
			my_id = id_prefix+i;
			toggleDisplay(my_id);
		}
	}
	currently_displayed = parseInt(id_num);
}

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

function confirmDelete(delUrl) {
	if (confirm("Are you sure you want to delete this thing?")) {
		document.location = delUrl;
	}
}

function confirmAdd(delUrl) {
	if (confirm("Are you sure you want to add this thing?")) {
		document.location = delUrl;
	}
}


// Flash Version Detector  v1.2.1
// documentation: http://www.dithered.com/javascript/flash_detect/index.html
// license: http://creativecommons.org/licenses/by/1.0/
// code by Chris Nott (chris[at]dithered[dot]com)
// with VBScript code from Alastair Hamilton (now somewhat modified)
var flashVersion = 0;
function getFlashVersion() {
  var latestFlashVersion = 8;
  var agent = navigator.userAgent.toLowerCase(); 
  
   // NS3 needs flashVersion to be a local variable
   if (agent.indexOf("mozilla/3") != -1 && agent.indexOf("msie") == -1) {
      flashVersion = 0;
   }
  // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
  if (navigator.plugins != null && navigator.plugins.length > 0) {
    var flashPlugin = navigator.plugins['Shockwave Flash'];
    if (typeof flashPlugin == 'object') { 
      for (var i = latestFlashVersion; i >= 3; i--) {
            if (flashPlugin.description.indexOf(i + '.') != -1) {
               flashVersion = i;
               break;
            }
         }
    }
  }

  // IE4+ Win32:  attempt to create an ActiveX object using VBScript
  else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) {
     var doc = '<scr' + 'ipt language="VBScript"\> \n';
      doc += 'On Error Resume Next \n';
      doc += 'Dim obFlash \n';
      doc += 'For i = ' + latestFlashVersion + ' To 3 Step -1 \n';
      doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
      doc += '   If IsObject(obFlash) Then \n';
      doc += '      flashVersion = i \n';
      doc += '      Exit For \n';
      doc += '   End If \n';
      doc += 'Next \n';
      doc += '</scr' + 'ipt\> \n';
      document.write(doc);
   }
  // WebTV 2.5 supports flash 3
  else if (agent.indexOf("webtv/2.5") != -1) flashVersion = 3;

  // older WebTV supports flash 2
  else if (agent.indexOf("webtv") != -1) flashVersion = 2;

  // Can't detect in all other cases
  else {
    flashVersion = flashVersion_DONTKNOW;
  }
  return flashVersion;
}

flashVersion_DONTKNOW = -1;

var required_version = 6;

var my_flash_version = getFlashVersion();
var flash_detected = false;

function hasFlash(flashVersion, requiredVersion) {
  if (flashVersion >= requiredVersion) {
    flash_detected = true;
    return true;
  } else {
    return false;
  }
}
