// JavaScript Document

//GLOBAL VARIABLES
var isDiscount = false;
var isPercent = false;
var discountAmt = 0;

/*////////////////// SHOPPING /////////////////////////////////*/
//adds all items to the cart
function addToCart(formName){
	var something=0;
	createList(formName);
	
	for(var i=0; i<formName.PRODUCTSELECTION.length; i++){
		if(formName.PRODUCTSELECTION[i].checked){
			something = 1;
		}
	}
	
	if(something == 1){
		//alert('submitting!');
		formName.action="../msascartdll.dll/getCart";
		formName.submit();
		return true;
	}else{
		alert("Please choose an item to add to the cart.");
		return false;
	}
	
}

//adds products to comma delimited list
function createList(formName){
	formName.ADD.value = '';
	for(var i=0; i<formName.PRODUCTSELECTION.length; i++){
		if(formName.PRODUCTSELECTION[i].checked){
			var productName = formName.PRODUCTSELECTION[i].value+'';
			productName = Trim(productName);
			//alert('---'+productName+'---');
			//check if first in list
			if(formName.ADD.value==""){
				formName.ADD.value += productName;
			}else{
				formName.ADD.value += ", " + productName;
			}
			
			if(formName.PRODUCTQTY[i].value >= 1){
				formName.ADD.value += "=" + formName.PRODUCTQTY[i].value;
			}		
		}
	}
	
	//alert(formName.ADD.value);
	return true;
}

//function which enters quantity of 1 if the box is checked
function checkValues(formName){
	
	for(var i=0; i<formName.PRODUCTSELECTION.length; i++){
		if(formName.PRODUCTSELECTION[i].checked){
			if(formName.PRODUCTQTY[i].value == 0){
				formName.PRODUCTQTY[i].value = 1;
			}
		}
	}
}

//function which automatically checks the box if a quantity is entered
function checkBoxes(formName){
	
	for(var i=0; i<formName.PRODUCTSELECTION.length; i++){
		if(formName.PRODUCTQTY[i].value > 0){
			formName.PRODUCTSELECTION[i].checked = true;
		}
	}
}

//trims off whitespace
function Trim(str)
{  while(str.charAt(0) == (" ") )
  {  str = str.substring(1);
  }
  while(str.charAt(str.length-1) == " " )
  {  str = str.substring(0,str.length-1);
  }
  return str;
}






/*///////////////////////// CHECKOUT ///////////////////////////*/

function cartInitialize(formName){
	//check if theyre logged in
	var loggedIn = false;
	if(GetCookieValue('memberid') != ''){
		loggedIn = true;
	}
	
	//check if logged in
	if(!loggedIn){
		$('showProfileLink').hide();
		$('hideProfileLink').hide();
	}else{
		$('notLoggedIn').hide();
		$('hideProfileLink').hide();
		$('profileInformation').hide();
		insertProfile('profileInformation');
	}
	
	calcCartTotals(formName);

	
	
}

function calcCartTotals(formName){
	var totalAmt = $('cartTotal').innerHTML;
	
	var discountTotal = 0;
	var shipTotal = 0;
	var taxTotal = 0;
	if(isDiscount){
		debug(discountAmt);
		if(isPercent){
			debug(discountAmt + ' * ' + totalAmt); 
			discountTotal = parseFloat(discountAmt) * parseFloat(totalAmt);
		}else{
			discountTotal = parseFloat(-discountAmt);
		}
	}
	$('discountTotal').innerHTML = parseFloat(discountTotal).toFixed(2);
	
	var shipCD = $("shipViaCD").value;

	var cartURL = '../orderdll.dll/estimatetotals?wrp=shipTotal.htm&wmt=none&shipviacd='+shipCD;
	new Ajax.Request(cartURL, {method:'get', asynchronous:false,
		onSuccess:function(content){
			var response = content.responseText || "0";
			shipTotal = parseFloat(response);
		},
		onFailure:function(){alert("An AJAX error has occurred. Please re-load the page to try again.");}
	});
	
	
	$('shipTotal').innerHTML = parseFloat(shipTotal).toFixed(2);
	
	var subTotal = parseFloat(totalAmt) + parseFloat(shipTotal) + parseFloat(taxTotal) - parseFloat(discountTotal);
	//alert(subTotal);

	$('totalAmt').innerHTML = parseFloat(subTotal).toFixed(2);

}



//checks validity of promo code
function checkPromo(formName){
	var promoURL = '../orderdll.dll/verifyPromoCode?code='+formName.PRODUCTPROMOTIONALCODE_input.value;
	new Ajax.Request(promoURL, 
		{method:'get',
		onSuccess: function(content){
			var response = content.responseText || "Invalid Promotional Code";
		
			//alert('Response is: '+response);
			var promoArray = response.split(',');
			var status = promoArray[0];
			var amt = promoArray[1];
			promoName = promoArray[2];
			var orgcd = parseInt(promoArray[3]);
			var tempAmt = 0;
					
		
			var successMessage = 'Promo code successful!';
			
			//alert('--'+orgcd+'-- ?= --<#ORGCD>--');
			
			if(status == 1){
				if((orgcd == '<#ORGCD>') || (isNaN(orgcd)) ){
					//valid promo code
					discountAmt = amt;
					//alert('amt: '+amt);
				
					if(parseFloat(amt) > 0){
						isPercent = true;
						tempAmt = parseFloat(amt) * parseFloat(100);
						successMessage = successMessage + ' A ' + tempAmt + '% discount will be applied to your total price.';
 					}else if(parseFloat(amt) == 0){
						isPercent = false;
						tempAmt = parseFloat(amt) * parseFloat(-1);
					}else{
						isPercent = false;
						tempAmt = parseFloat(amt) * parseFloat(-1);
						successMessage = successMessage + ' A $' + tempAmt  + ' discount will be applied to your total price.';
					}
					
					isDiscount = true;
					alert(successMessage);
					//copy to hidden field
					formName.PRODUCTPROMOTIONALCODE.value = formName.PRODUCTPROMOTIONALCODE_input.value;
				
					//disable promo seactions
					$('promo_button').disable();
					$('promo_code').disabled = true;
					calcCartTotals(formName);
					
				}else{
					alert('This promo code does not apply to your organization.');
				}		
			}else if(status == 0){
				alert('This promo code has expired.');
			}else{
				alert('This promo code does not exist.');
			}
			
		},
		onFailure: function(){alert('An AJAX error has occured. Please ensure that you have Javascript-enabled browser and re-load the page to try again.');}
	});
}



//on cart, toggles update info section on or off
function toggleUpdate(show){
	if(show){
		$('hideProfileLink').show();
		$('profileInformation').show();
		$('showProfileLink').hide();	
	}else{
		$('hideProfileLink').hide();
		$('profileInformation').hide();
		$('showProfileLink').show();	
	}
}


//toggle shipping addresses
//switch shipping address
function switchAddress(formName,address, orgcd){
		//check if theyre logged in
		var loggedIn = false;
		if(GetCookieValue('memberid') != ''){
			loggedIn = true;
		}
		
		var url = '';
		var div = 'shipSection';
		
		if(loggedIn){
			if(address == 'home'){
				url=url+'../memberdll.dll/info?wmt=none&wrp=shipHome.htm&wnr=shipAddress.htm';
			}else if(address == 'work'){
				url=url+'../memberdll.dll/info?wmt=none&wrp=shipWork.htm&wnr=shipAddress.htm';
			}else if(address == 'org'){
				url=url+'../organizationdll.dll/info?wmt=none&wrp=shipAddress.htm&wnr=shipAddress.htm';
			}else if(address == 'new'){
				url=url+'../memberdll.dll/info?wmt=none&wrp=shipAddress.htm&wnr=shipAddress.htm';
			}
			
			new Ajax.Updater(div, url, {method:'get'});
		}else{
			//NOTE LOGGED IN
			url += '../memberdll.dll/openpage?wmt=none&wrp=shipAddress.htm';
			//new Ajax.Updater(div, url, {method:'get', asynchronous:'false'});
			new Ajax.Request(url, {method:'get',
				onSuccess:function(content){
					var response = content.responseText || '';
					$(div).innerHTML = response;
					//update fields with newly entered info
					if(formName.ADDRESS1){
						if(address == 'home'){
							formName.SHIPADDRESS1.value = formName.ADDRESS1.value;
							formName.SHIPADDRESS2.value = formName.ADDRESS2.value;
							formName.SHIPCITY.value = formName.CITY.value;
							formName.SHIPSTATECD.selectedIndex = formName.STATECD.selectedIndex;
							formName.SHIPZIP.value = formName.ZIP.value;
							formName.SHIPCOUNTRY.selectedIndex = formName.COUNTRY.selectedIndex;
						}else if(address == 'work'){
							formName.SHIPADDRESS1.value = formName.ALTADDRESS1.value;
							formName.SHIPADDRESS2.value = formName.ALTADDRESS2.value;
							formName.SHIPCITY.value = formName.ALTCITY.value;
							formName.SHIPSTATECD.selectedIndex = formName.ALTSTATE.selectedIndex;
							formName.SHIPZIP.value = formName.ALTZIP.value;
							formName.SHIPCOUNTRY.selectedIndex = formName.ALTCOUNTRY.selectedIndex;
						}
					}
				},
				onFailure:function(){alert('ERROR: An AJAX error has occurred. Please re-load the page and try again.');}
				});
		}
}

//UNIVERSAL update totals function
//looks for products, donations, subscriptions, and membership
//populates appropriate hidden fields and updates totals screen
function updateTotals(initialTotal){
	var tempTotal = 0.00;
	var donsTotal = 0.00;
	var membershipTotal = 0.00;
	var subsTotal = 0.00;
	
	var subItems = '';
	var cartItems = '';
	
	if(initialTotal != undefined){
		tempTotal = parseFloat(initialTotal);
	}
	//all subscription type items
	//cycles thorugh all items where class='subItem
	//id = subsriptionname
	//value = price
	//name = type of subscription
	$A($$('.subItem')).each(function(element){
		if(element.checked){
			if(element.name=="SUBSCRIPTIONNAME"){
				subsTotal += parseFloat(element.value);
			}
			if(element.name=="MEMBERSHIPNAME"){
				membershipTotal += parseFloat(element.value);
			}
			
			subItems += element.id+',';
			tempTotal += parseFloat(element.value);
		}
		
		if((element.type=="text") && (parseFloat(element.value) > 0.00)){
			if(element.name=="DONATIONNAME"){
				donsTotal += parseFloat(element.value);
				subItems += element.id + '=' +element.value + ',';
				tempTotal += parseFloat(element.value);
			}	
		}
	});

	$('subsTotal').innerHTML = parseFloat(subsTotal).toFixed(2);
	$('membershipTotal').innerHTML = parseFloat(membershipTotal).toFixed(2);
	$('donsTotal').innerHTML = parseFloat(donsTotal).toFixed(2);
	$('totalAmt').innerHTML = parseFloat(tempTotal).toFixed(2);
	
	//trim trailing comma off subitems
	$('SUBITEMS').value = subItems.substring(0,subItems.length-1);
	//debug('Subitems: '+$('SUBITEMS').value);
}


function membershipApp_addToCart(formName){
	//validate everything (except payment)
	if(validateAll(formName,false)){		
		//add cart items via AJAX
		var addURL = '../msascartdll.dll/getcart?add='+formName.SUBITEMS.value;
		new Ajax.Request(addURL, {method:'get', asynchronous:false});

		formName.action = '../memberdll.dll/updateInfo';
		formName.submit();
	}
}

function membershipApp_payNow(formName){
	if(validateAll(formName,true)){		
		formName.action = '../orderdll.dll/orderp';
		formName.submit();
	}			
}
