// Menus, added 5/15/2008
// coshima@acm.org

YAHOO.util.Event.onDOMReady(function () {

	var oMenuBar = new YAHOO.widget.MenuBar("mainMenuBar", { 
		autosubmenudisplay: true, 
		showdelay: 0,
		hidedelay: 750, 
		lazyload: false }
	);

	if (window.bSkipMenus) {
		oMenuBar.render();
		return;
	}
	
	var aMenus = [
	
		{
			id: "mnuHome", 
			itemdata: [ 
				{ text: "About AA", url: "http://www.aagrapevine.org/about/aa.php" },
				{ text: "About AA Grapevine", url: "http://www.aagrapevine.org/about/" },
				{ text: "12 Steps &amp; 12 Traditions", url: "http://www.aagrapevine.org/stepsTrads/" },
				{ text: "GV/LV Reps", url: "http://www.aagrapevine.org/reps/" },
				{ text: "i-Say Forum", url: "http://www.aagrapevine.org/topics.php" },
				{ text: "Calendar of Events", url: "http://www.aagrapevine.org/calendar/" },
				{ text: "Humor", url: "http://www.aagrapevine.org/humor/" },
				{ text: "Count Your Days", url: "http://www.aagrapevine.org/countyourdays.php" },
				{ text: "The Small Print", url: "http://www.aagrapevine.org/about/privacy.php" },
				{ text: "Site Map", url: "http://www.aagrapevine.org/sitemap.php" }
			]
		},

		{
			id: "mnuGV", 
			itemdata: [
				{ text: "Current Issue", url: "http://www.aagrapevine.org/gv/current/" },
				{ text: "Last Month's Issue", url: "http://www.aagrapevine.org/gv/previous/" },
				{ text: "Discussion Topics", url: "http://www.aagrapevine.org/topics.php" },
				{ text: "Submit Your Work", url: "http://www.aagrapevine.org/about/submit.php" }
			]    
		},
		
		{
			id: "mnuLV", 
			itemdata: [
				{ text: "Current Issue", url: "http://www.aagrapevine.org/lv/" },
				{ text: "Env&iacute;anos tu colaboraci&oacute;n", url: "http://www.aagrapevine.org/about/es_submit.php" },
				{ text: "Sobre La Vi&ntilde;a", url: "http://www.aagrapevine.org/about/es_gvhistorylavina.php" },
				{ text: "¿Tiene su grupo un RLV?", url: "http://www.aagrapevine.org/reps/es_rlv.php" }
			]    
		},
		
		{
			id: "mnuDA", 
			itemdata: [
				{ text: "Digital Archive", url: "http://www.aagrapevine.org/da/" },
				{ text: "Click-A-Joke", url: "http://www.aagrapevine.org/da/grabbag.php" },
				{ text: "Story of the Day", url: "http://www.aagrapevine.org/da/storyoday.php" },
				{ text: "Subscribe", url: "https://www.aagrapevine.org/secure/daregister.php" }
			]    
		},

		{
			id: "mnuCatalog", 
			itemdata: [
				{ text: "Books", url: "http://www.aagrapevine.org/catalog/shop/books.php" },
				{ text: "Audio CDs", url: "http://www.aagrapevine.org/catalog/shop/cds.php" },
				{ text: "Other Items", url: "http://www.aagrapevine.org/catalog/shop/otherproducts.php" },
				{ text: "Items in Spanish", url: "http://www.aagrapevine.org/catalog/shop/spanishproducts.php" },
				{ text: "Ordering Information", url: "http://www.aagrapevine.org/catalog/" },
				{ text: "Shipping Information", url: "http://www.aagrapevine.org/catalog/shop/shipping.php" },
				//{ text: "Discounts", url: "unknown" }
			]    
		},
		
		{
			id: "mnuSubscribe", 
			itemdata: [
				{ text: "Grapevine Magazine", url: "http://www.aagrapevine.org/catalog/shop/gvsuborder.php" },
				{ text: "La Vi&ntilde;a", url: "http://www.aagrapevine.org/catalog/shop/lvsuborder.php" },
				{ text: "AudioGrapevine", url: "https://www.aagrapevine.org/secure/audioregister.php" },
				{ text: "Digital Archive", url: "https://www.aagrapevine.org/secure/daregister.php" },
				{ text: "Gift Subscriptions", url: "http://www.aagrapevine.org/catalog/shop/giftsub.php" }
			] 
		}          
	];				

	oMenuBar.getItem(0).cfg.setProperty("submenu", aMenus[0]);
	oMenuBar.getItem(1).cfg.setProperty("submenu", aMenus[1]);
	oMenuBar.getItem(2).cfg.setProperty("submenu", aMenus[2]);
	oMenuBar.getItem(3).cfg.setProperty("submenu", aMenus[3]);
	oMenuBar.getItem(4).cfg.setProperty("submenu", aMenus[4]);
	oMenuBar.getItem(5).cfg.setProperty("submenu", aMenus[5]);
		
	oMenuBar.render();
});

// Hook up event handlers for the newsletter email box.
YAHOO.util.Event.onDOMReady(function () {

	var txtSubscribeEmail = document.getElementById("txtSubscribeEmail");
	var sPlaceholder = "email@address.com";

	if (txtSubscribeEmail) {
		YAHOO.util.Event.addListener(txtSubscribeEmail, "focus", function(evt){
			YAHOO.util.Dom.removeClass(this, "gray");
			if (this.value == sPlaceholder) { 
				this.value = "";
			}
		});
		YAHOO.util.Event.addListener(txtSubscribeEmail, "blur", function(evt){ 
			if (YAHOO.lang.trim(this.value) == "") { 
				this.value = sPlaceholder;
				YAHOO.util.Dom.addClass(this, "gray");
			} 
		});
	}

});


var gImages = new Array();

// SwapImg() provides a standard way to swap images preloaded into
// gImages, which should be an array of images indexed by img.name.
// A second parameter is passed to indicate mouseover or mouseout.
// A value of true means mouseover, false means mouseout (revert to
// original image source); it defaults to true, so you only need to
// pass it when reverting.
//var gImages = new Array(); << this is done before the header image is added
// (that way it's not dependent on gv.js being downloaded on time)
function SwapImg(img) {
	if (gImages[img.name]) {
		var bHigh = true;
		if (arguments.length > 1) {
			bHigh = arguments[1];
		}
		if (bHigh && gImages[img.name].complete) {
			img.osrc = img.src;
			img.src = gImages[img.name].src;
		}
		else if (img.osrc) {
			img.src = img.osrc;
		}
	}
}


// L10N: U.S. phone phormat
// Takes a string and formats as a US phone number is appropriate. Otherwise leaves
// string unchanged.
function FormatPhone(s) {
	var sPhone = s;
	s = s.replace(/[^0-9]/g, "");
	
	// If 11 characters and first is a "1", remove it
	if ((s.length == 11) && (s.charAt(0) == "1")) {
		s = s.substr(1);
		sPhone = s;
	}
	
	// Now if valid phone number, format it
	if (s.length == 10) {
		sPhone = "(" + s.substr(0, 3) + ") " + s.substr(3, 3) + "-" + s.substr(6);
	}
	else if (s.length == 7) {
		sPhone = s.substr(3, 3) + "-" + s.substr(6);
	}
	return sPhone;
}

function FormatZipCode(s) {
	var sZip = s;
	s = s.replace(/[^0-9]/g, "");
	
	if (s.length == 9) {
		sZip = s.substr(0, 5) + "-" + s.substr(5);
	}
	else {
		sZip = s;
	}
	return sZip;
	
}

function Capitalize(s) {
	if (s.length > 0) {
		var sFirst = s.substr(0,1).toUpperCase();
		s = sFirst + s.substr(1);
	}
	return s;
}

function InitCapTextValue(txt) {
	txt.value = Capitalize(txt.value);
}


function DisableSubmitButtons(frm) {
	setTimeout("DelayedDisableSubmitButtons('" + frm.name + "');", 10);
}
function DelayedDisableSubmitButtons(sFormName) {
	var frm = document.forms[sFormName];
	var nCount = frm.elements.length;
	for (var n=0; n < nCount; n++) {
		if ((frm.elements[n].type == "submit") || (frm.elements[n].type == "image")) {
			frm.elements[n].disabled = true;
		}
	}
}


// With PHP, cannot rely on browser object model to provide
// checkbox arrays, since we need to include "[]" as part of the
// form element names, and that confuses the browser.  Because of
// this, we provide a function to build the checkbox array we use
// elsewhere.  One side effect of this is that we can always assume
// chkArray will be an array, unlike the browser object model approach,
// where "document.frm.chkSelect" might refer to a checkbox or an array
// of checkboxes.

function MakeCheckboxArray(frm, sChkName) {
	var chkArray = new Array();
	var nNumCheckboxes = 0;
	var elms = frm.elements;
	var nNumElements = elms.length;
	
	for (var n=0; n < nNumElements; n++) {
		if ((elms[n].type == "checkbox") && (elms[n].name == sChkName)) {
			chkArray[nNumCheckboxes++] = elms[n];
		}
	}
	return chkArray;
}

//
// Handles select/unselect all behavior for list checkboxes.
// Takes an array of the checkboxes, or a reference to a single
// checkbox if there's only one.
//
function SelectAll(chkArray) {
	var nNumChecked = 0;
	var nCount = GetNumSelectCheckboxes(chkArray);
	var n;
		
	for (n = 0; n < nCount; n++) {
		var chk = chkArray[n];
		if (!chk.checked) {
			chk.checked = true;
		}
		else {
			nNumChecked++;
		}
	}

	// if it turns out that all the checkboxes were already checked,
	// uncheck all the checkboxes
	if (nNumChecked == nCount) {
		for (n = 0; n < nCount; n++) {
			chkArray[n].checked = false;
		}
	}
}

function UnselectAll(chkArray) {
	for (var n = 0; n < nCount; n++) {
		chkArray[n].checked = false;
	}
}

// Added check for null chkArray
function GetNumSelected(chkArray) {
	var nNumChecked = 0;
	if (chkArray != null) {
		// count the number of checked checkboxes
		var nCount = GetNumSelectCheckboxes(chkArray);
		for (var n = 0; n < nCount; n++) {
			if (chkArray[n].checked) {
				nNumChecked++;
			}
		}
	}
	return nNumChecked;
}

function GetNumSelectCheckboxes(chkArray) {
	var nCount = 0;
	// if the array isn't null
	if (chkArray && (typeof(chkArray) != "undefined")) {
		// if the array actually IS an array
		if (chkArray.length) {
			nCount = chkArray.length;
		}
		else {
			nCount = 1;
		}
	}
	return nCount;
}


