// BASIC.JS - site-wide JavaScript functions

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];}
}

// *** SZT 03/07: slightly simpler version of above 'active content' kluge
function RunFlash(flashfile, flashW, flashH) {
   document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab##version=8,0,0,0" width="' + flashW + '" height="' + flashH + '">\n');
    document.write(' <param name=movie value="' + flashfile + '" />\n');
	document.write(' <param name=quality value=high />\n');
	document.write(' <embed src="' + flashfile + '" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="' + flashW + '" height="' + flashH + '">\n');
	document.write('</embed>\n');
    document.write('</object>\n');
}	

function toggleFlashLayer() {
	//find flash object using MM_findObj function (document.all, document.getElementById, document.layers)
	var flashlayer = MM_findObj("popUpFlash");
	
	/* normally, if we used the visibility property, the Flash movie would always be running, but not necessarily viewable. if the flash div was closed, then re-opened without a page refresh in between, the movie would start where it left off, not at the beginning. to fix this, we'd use the display property, then the code to generate the movie wouldn't included in the page at all when the div is closed, so the move always starts at the beginning when opened. however, in the Flash movie, we used an unload function, so the movie is automatically closed via actionscript. */
	
	if (flashlayer.style.display == 'none' || flashlayer.style.visibility == 'hidden')
		{
		flashlayer.style.display = 'inline';
		flashlayer.style.visibility = 'visible';
		}
	else
		{
		flashlayer.style.display = 'none';
		flashlayer.style.visibility = 'hidden';
		}
		// alert!
		// alert(flashlayer.style.display & '-' & flashlayer.style.visibility);
}
	
// pops up new browser window
var newWindow = null; 
function popWindow(pageName,winName,winAttr) {
	newWindow = window.open(pageName,winName,winAttr);
	newWindow.focus(); 
}

// SZT added 12/06/07: functions to calculate auto-complete donation amount fields on campaign and community sites.
// calculates amount of recurring monthly donation payment (total amount / number of payments) and displays in field
function calcMonthlyAmt() {
	var payments = document.donate.paymentNumb.options[document.donate.paymentNumb.selectedIndex].value;
	var totalGift = document.donate.giftAmountTotal.value;
	var giftType = findRadioValue(document.donate.giftOption);
	var monthlyGift = 0;
	
	// SZT 12/07/07 - remove any commas the user might have included, which will mess up the final calculation
	totalGift = totalGift.replace(/,/g,"");
	
	// remove any other non-numbers
	payments = parseFloat(payments);
	totalGift = parseFloat(totalGift);		
	
	/*
	if ((giftType == "monthly") && (payments > 0)) {
		alert(giftType);
	} 
	*/
	
	// if the selected gift option is recurring monthly payments...
	if ((giftType == "monthly") && (payments > 0))
		{
		// alert("monthly payment");
		// determine amount to be billed monthly by dividing gift amount by selected number of payments
		// (use jsDollarFormat function instead of math.round())
		// monthlyGift = Math.round((totalGift/payments)*100)/100;
		monthlyGift = jsDollarFormat(totalGift/payments);		
	
	// if not, then this is must be a one-time gift...
	} else {
		// alert("one-time payment");
		// reset monthly gift amount to an empty string so as not to confuse users
		monthlyGift = "";
		//  in this same vein, reset paymentNumb select box to 0 (no monthly payments)
		document.donate.paymentNumb.selectedIndex = 0;
	}
	
	// change number displayed in 'monthly' gift amount field to current monthlyGift value		
	document.donate.giftAmount.value = monthlyGift;
}

// function parses number as dollar amount (with cents displayed)
// (can be used anytime we need to format a number via JS. not donation specific.)
function jsDollarFormat(num) {
	// get rid of any excess symbols
	num = num.toString().replace(/\$|\,/g,'');
	
	// if value passed in is not a number, set to 0
	if(isNaN(num)) num = "0";
		// determine part of 'number' to display as cents ('.00')
		cents = Math.floor((num*100+0.5)%100);
		// determine part of 'number' to display as dollars ('00.')
		num = Math.floor((num*100+0.5)/100).toString();
	
	// determine part of 'number' to display as cents ('.00')
	if(cents < 10) cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	// we could tack on dollar sign here...but don't
	return (num + '.' + cents);
	//return ('$' + num + '.' + cents);
}

// function loops through options in a radio buttons group to determine the value of the one selected
/*
function findRadioValue() 	{
	for (var i=0; i < document.donate.giftOption.length; i++)
	   {
	   if (document.donate.giftOption[i].checked)
		  {
		  // if this button is the one selected, save value
		  var radioVal = document.donate.giftOption[i].value;
		  //alert("The radio button you chose has the value: " + rad_val);
		  // return selected value
		  return radioVal;
		  }
	   }
	}
*/

// function determines the value of the button selected within a group of radio buttons
// (can be used anytime we need to look-up a radio button value. not donation-specific.)
function findRadioValue(thisButton) {
	// pass in radio button object to look up; for example, "findRadioValue(document.donate.giftOption)";
	
	// loop through number of radio buttons contained in named radio button group passed in
	for (var i=0; i < thisButton.length; i++)
	{
		if (thisButton[i].checked) 
			{
			// alert("radioVal");
			// if this button is the one selected, save value...
			var radioVal = thisButton[i].value;
			// ...and return selected value
			return radioVal;
			} 
	}
}