function getBooleanValue(value){
	if( value == null ) return false;
	if( value == "false" || value == 0 ) return false;
	return Boolean(value);
}

function submitFormAction(formNameStr, actionURLStr) {
    document.forms[formNameStr].action = actionURLStr;
    document.forms[formNameStr].submit();
 }

function confirmCancel(confirmTextStr, actionURLStr) {
   if (confirm(confirmTextStr)) {
      document.location = actionURLStr;
   } 
}

// Two functions to toggle styles by adding/removing class="on" to an element with a certain id, e.g. used for tabs
function activate(idArr) {
	var pattern = /( |^)(on)( |$)/;
	for (var i = 0; i < idArr.length; i++) {
		var el = document.getElementById(idArr[i]);
		if (!el.className.match(pattern)) {
			el.className += " on";
		}
	}
}

function deactivate(idArr) {
	var pattern = /( |^)(on)( |$)/;
	for (var i = 0; i < idArr.length; i++) {
		var el = document.getElementById(idArr[i]);
		if (el.className.match(pattern)) {
			var oldClassStr = el.className;
			var newClassStr = oldClassStr.replace(pattern, "");
			el.className = newClassStr;
		}
	}
}

/* open a new window...requires window.js */
function popOpen(url) {
   openCenteredOnOpenerWindow(url, 'window2', 500, 500, '', true, '', 'opener');
   }

/* open a new window...requires window.js */
function CP_salesPop(url) {
   openCenteredOnOpenerWindow(url, 'window2', 300, 200, '', true, '', 'opener');
   }

/* Selectbox navigation...the <select> tag requires an id */
function go(whatToSelect,protocol) {
   var theSelectBox = document.getElementById(whatToSelect);
   if (!protocol) protocol = "";
   if (theSelectBox.options[theSelectBox.selectedIndex].value != "none") {
      location = protocol + theSelectBox.options[theSelectBox.selectedIndex].value;
   }
}

  	function persistCouponCode(){
  		var hiddenCouponCode = document.getElementById("hiddenCouponCode");
		var couponCode = document.getElementById("couponCode");
		hiddenCouponCode.value=couponCode.value;
		alert(document.getElementById("hiddenCouponCode").value);
		document.getElementById("promotionForm").submit();
  	}
  	


function checkThis(name){
	if (confirm("Do you want to delete this item?")){
		var chk = document.getElementsByTagName("input");
		for(var i=0; i<chk.length; i++) {
			if(chk[i].getAttribute("type")=="checkbox"){
				var tempID = chk[i].getAttribute("id");
				var tempName = name;
				if(tempID == tempName){
					chk[i].checked = true;
				}
			}
		}
		document.cartform.update.click();
	}
}

function setChangedEcommQuantityValues(relId, catRefId, qty, isbn) {
	document.cartform.changedRelationshipId.value = relId;
	document.cartform.changedQuantityItem.value = catRefId;
	document.cartform.changedQuantityItemAmt.value = qty;
	document.cartform.changedISBN.value = isbn;

	document.cartform.update.click();
}

function icfrRemove(commerceId,catRefId, qty, isbn) {
	if (confirm("Are you sure you want to remove this book from your order?")) {
		document.getElementById("removedItem").value = commerceId;
		document.getElementById("changedRelationshipId").value = commerceId;
		document.getElementById("changedQuantityItem").value = catRefId;
		document.getElementById("changedQuantityItemAmt").value = qty;
		document.getElementById("changedISBN").value = isbn;
		if(document.getElementById("successUrl")!=null){
			document.getElementById("successUrl").value = "/ICFRProduct.nav";
		}
		document.getElementById("remove").click();
	}
}

function icfrRemoveConfirm(commerceId,catRefId, qty, isbn,removedBook) {
	if (confirm("Are you sure you want to remove this book from your order?")) {
		if (removedBook) {
			document.getElementById("removedBook").value = removedBook;
		}
		document.getElementById("removedItem").value = commerceId;
		document.getElementById("changedRelationshipId").value = commerceId;
		document.getElementById("changedQuantityItem").value = catRefId;
		document.getElementById("changedQuantityItemAmt").value = qty;
		document.getElementById("changedISBN").value = isbn;
		if(document.getElementById("successUrl")!=null){
			document.getElementById("successUrl").value = "/ICFRProduct.nav";
		}
		document.getElementById("removeItem").click();
	}
}

function editQuantity(cId) {
	document.getElementById("qtyLbl_"+cId).style.display='none';
	document.getElementById("qty_"+cId).style.display='inline';
}

function setChangedIcfrQuantityValues(relId, catRefId, qty, isbn,changedQuantity) {
	document.courseBookForm.changedRelationshipId.value = relId;
	document.courseBookForm.changedQuantityItem.value = catRefId;
	document.courseBookForm.changedQuantityItemAmt.value = qty;
	document.courseBookForm.changedISBN.value = isbn;
	document.courseBookForm.changedQuantity.value = changedQuantity;
	document.getElementById("updateQuantity").click(); 
}


 

function confirmationCreateAccount(email) {
	document.getElementById("profileEmail").value = email;
	document.getElementById("create").click();
}

function showCartNoticeDiv() {
	alert("success");
    // var pos = $('subtotal').cumulativeOffset();
	$('miniCart').absolutize().show();
}

function getResults(indx,pFilterCriteria,pCategoryId,pLevel1,pLevel2,pLevel3,pCurrTree,pSel){
	var filterCriteria = document.getElementById("filterCriteria");
	var publishedBy = document.getElementById("publishedBy");
	var lstPublishedBy = document.getElementById("lstPublishedBy[" + indx + "]");
	filterCriteria.value = pFilterCriteria;
	var categoryId = document.getElementById("categoryId");	
	categoryId.value = pCategoryId;
	
	if(pCategoryId!=''){
		var searchInput = document.getElementById("searchInput");
		searchInput.value = pCategoryId;
	}else{
		var mainSearchInput = document.getElementById("mainSearchInput");
		var searchInput = document.getElementById("searchInput");
		searchInput.value=mainSearchInput.value;
	}
	
	var level1 = document.getElementById("level1");
	level1.value = pLevel1;
	var level2 = document.getElementById("level2");
	level2.value = pLevel2;
	var level3 = document.getElementById("level3");
	level3.value = pLevel3;
	var currTree = document.getElementById("currTree");
	currTree.value = pCurrTree;
	var sel = document.getElementById("sel");
	sel.value = pSel;
	
	if (pFilterCriteria!="publishedBy") {
		publishedBy.value = "None";
	} else {
		if (lstPublishedBy) {
			var tmpPublishedBy = lstPublishedBy.options[lstPublishedBy.selectedIndex].value;
			if(tmpPublishedBy == "None") {
				filterCriteria.value = "all";
			}
			publishedBy.value = tmpPublishedBy;
		}	
	}
	
	document.getElementById("search-form").submit();
}
function updateRequestType(itemId,value){
	var url = "/updateRequestType.data?itemId="+itemId+ "&value="+value;
	var time = new Date()
	new Ajax.Request(url, {
		method :'post',
		onSuccess: function(transport) {
			try{
				response = transport.responseText.evalJSON();
				if(value=='Desk Copy'){
					$("deskCopy"+itemId).style.display="inline";	
					$("reviewCopy"+itemId).hide();
				}else{
					$("reviewCopy"+itemId).style.display="inline";	
					$("deskCopy"+itemId).hide();
					$("deskCopyCheck"+itemId).checked=false;
				}
			}
			catch(e){
				if(console) console.log(e);
			}
		}
	});
}
function showHideCourseDetails(itemId,value,span){
	if(value=='show'){
		$(itemId).style.display="inline";
		$("hide"+span).style.display="inline";
		$("show"+span).hide();
	}else{
		$("show"+span).style.display="inline";
		$(itemId).hide();
		$("hide"+span).hide();
	}
}


/*
   Adds an html hidden input field (dynamically created) to the given HTML form element.
   @param formElement the given HTML form element
   @param fieldName the name of the hidden input field
   @param fieldValue the (string) value of the hidden input field
*/
function addHiddenInputField(formElement, fieldName, fieldValue) {
	var hiddenField = document.getElementById(fieldName);
	
	if (!hiddenField) {
	   var inputElement = document.createElement("input");
	   inputElement.setAttribute("id", fieldName);
	   inputElement.setAttribute("type", "hidden");
	   inputElement.setAttribute("name", fieldName);
	   inputElement.setAttribute("value", fieldValue);
	   formElement.appendChild(inputElement);
	} else {
	  hiddenField.value =  fieldValue;
	}
   return;
}
/*
   Creates an html attribute.
   @param name the name of the attribute.
   @param value the (string) value of the attribute.
   @return the newly created html attribute
*/
function createHtmlAttribute(name, value) {
   var attribute = document.createAttribute(name);
   attribute.nodeValue = value;
   return attribute;
} 

function isVisible(item){
	return item.visible() && !item.hasClassName("hidden") && !item.up(".hidden");
}
function initialise(site,page){
	var namespace = YAHOO.namespace("sage.account");
	buildContingencies();
	eval(page + "_init(site);");
	if($("ship-address1")!=null){
		addWash("ship-address1");
		showSelected("ship-address1","1")
	}
	if($("bill-address1")!=null){
		addWash("bill-address1","1");
		showSelected("bill-address1","1")
	}
}	

function addWash(itemName,index){
	removeWash(itemName);
	parentRow = $(itemName).up("tr");
	parentRow.addClassName("wash");
	showSelected(itemName,index)
}
function removeWash(itemName){
	$$(".shipBillButton").each(function(frmInput){
		if(frmInput.id!=itemName && frmInput.id.substring(0,4)==itemName.substring(0,4)){
			parentRow = frmInput.up("tr");
			if(parentRow.hasClassName("wash")){
				parentRow.removeClassName("wash");
				showDefault(frmInput.id,frmInput.id.substring(12));
			}	
		}
	});
	
}
function showSelected(itemName,index){
	if($(itemName).id.indexOf("ship")!=-1){
		var showLabel = "selectedShip"+index;
		var hideLabel = "defaultShip"+index;
		if($(showLabel)!=null && $(hideLabel)!=null){
			$(showLabel).style.display="inline";
			$(itemName).checked=true;
			$(hideLabel).hide();
		}
		
	}
	if($(itemName).id.indexOf("bill")!=-1){
		var showLabel = "selectedBill"+index;
		var hideLabel = "defaultBill"+index;
		if($(showLabel)!=null && $(hideLabel)!=null){
			$(showLabel).style.display="inline";
			$(itemName).checked=true;
			$(hideLabel).hide();
		}
	}
}
function showDefault(itemName,index){
	if($(itemName).id.indexOf("ship")!=-1){
		var showLabel = "selectedShip"+index;
		var hideLabel = "defaultShip"+index;
		$(hideLabel).style.display="inline";
		$(showLabel).hide();
	}
	if($(itemName).id.indexOf("bill")!=-1){
		var showLabel = "selectedBill"+index;
		var hideLabel = "defaultBill"+index;
		$(hideLabel).style.display="inline";
		$(showLabel).hide();
	}
}


function buildContingencies(){
	$$(".hasContingencies").each(function(element){
		Event.observe( element, "change",function(){
			var targetClass = this.id + "_" + this.value;
			if(targetClass.indexOf('institution')>0) {
				$("addAddressForm_c").setStyle({height:550+'px'});
			}
			$$(".contingentOn_" + this.id).each(function(child){
				if(child.hasClassName(targetClass)){
					child.removeClassName("hidden").show().select("input","select").each(function(frmInput){
						frmInput.enable();
					});
				}
				else{
					child.hide().select("input","select").each(function(frmInput){
						if(frmInput.type == "text" && !frmInput.hasClassName("persist")){
							frmInput.value = "";
						}
						// elements tag cleared are emptied of their contents by the preceding
						//  block of code, but the cleared value is submitted so that we don't have
						//  -- say -- a business name and a dept name
						if(!frmInput.hasClassName("cleared")){
							frmInput.disable();
						}
					});
				}
			});
			formWash();
		});
	});

}




// obj is a css descriptor matching the parent element
// start is a boolean (1|0) that describes how to start the wash:
//   0: first row is washed
//   1: first row is clear
function formWash(obj){

	//assume 'form tbody tr' if obj null
	if ($(obj)==undefined)
		obj=".form tbody tr";

	if ($$(obj) != null && $$(obj) !='' ){

		if($("errorMsg")!=null && $("errorMsg").style.display!="none" ) $("errorMsg").style.display="none";

		var i=0;
		$$(obj).each(function(item){
			if( isVisible(item) ){
				item.removeClassName("err");
				if (item.hasClassName("doubleRowWash")) i++;
				i % 2 == 0 ? item.addClassName("wash") : item.removeClassName("wash");
				i++;
			}
		});
	}
}


function resizeSelectControlForIE() {
	// Widens the state dropdown control when clicked so all elements are completely visible (ie only)
	// Control will revert back to original size when clicked off
	var IE = document.all?true:false;
	if (IE){
		$$(".statedrop").each( function(dropdown){
		  dropdown.onclick = stateSelectExpandBehaviour;
		  dropdown.onfocus = stateSelectExpandBehaviour;
		  dropdown.onblur = stateSelectContractBehaviour;
		});
	}
}

function stateSelectExpandBehaviour(){
    if ($('addressTbl'))
	    $('addressTbl').setStyle({width:'646px'})
	if ($('instDetailsTbl'))
	    $('instDetailsTbl').setStyle({width:'646px'})
	    
	this.setStyle("width: 440px");
}

function stateSelectContractBehaviour(){
	this.setStyle("width: 226px");
	if ($('addressTbl'))
	    $('addressTbl').setStyle({width:'432px'})
    if ($('instDetailsTbl'))
	    $('instDetailsTbl').setStyle({width:'432px'})
}

function populateAddressType(formType) {
	if(!$(formType+"OtherRow").hasClassName("hidden")) {
		$(formType+"Business").value=$(formType+"Other").value;
		$(formType+"School").value=$(formType+"Other").value;
	}
	if(!$(formType+"SchoolRow").hasClassName("hidden")) {
		$(formType+"Business").value=$(formType+"School").value;
		$(formType+"Other").value=$(formType+"School").value;
	}
	if(!$(formType+"BusinessNameRow").hasClassName("hidden")) {
		$(formType+"School").value=$(formType+"Business").value;
		$(formType+"Other").value=$(formType+"Business").value;
	}
}

function populateAddressStatesForCountry(siteId, country, setState, isNAmericaRegion, countryChanged, formType){
	
    $(formType+"CountryDropdown").show();
	if( $(formType+'StateSelect') ){
		var stateSelect = $(formType+'StateSelect').disable();
		var stateTextbox = $(formType+'StateTextbox').disable();
		var requiredStateAsterisk = $(formType+"RequiredState");

		new Ajax.Request("/getStatesForCountry.data?country=" + country, {
			method: 'get',
			onSuccess: function(transport) {
				var states = transport.responseXML.getElementsByTagName("state");
				if(states != null && states.length > 0 && isNAmericaRegion){
					if (country=="CA")
						var menuOptions = "<option value=\"\">Select a Province...</option>";
					else
						var menuOptions = "<option value=\"\">Select a State...</option>";
					for(var i = 0; i < states.length; i++){
						menuOptions += "<option value=\"" + states[i].getElementsByTagName("code")[0].firstChild.nodeValue + "\">"
									+ states[i].getElementsByTagName("name")[0].firstChild.nodeValue + "</option>";
					}
					requiredStateAsterisk.show();
					stateTextbox.hide().enable().value = "";
					stateSelect.removeClassName("hidden").addClassName("mandatory")
						.show().enable().update(menuOptions);
                               $(formType+"StateSelect").hide();
                               $(formType+"CountryDropdown").hide();
                               if(getBooleanValue(countryChanged || $F("showGenericDepts"))){             
                                 $(formType+"StateSelect").show();                                                   
                                 $(formType+"CountryDropdown").show();
                                }
				}
				else{
					stateSelect.hide().disable();
					stateTextbox.removeClassName("hidden")
						.show().enable().value = "";
					if(siteId != "sage-uk" && country=="MX") {
						stateTextbox.required = 'true';
						requiredStateAsterisk.show();
						stateTextbox.addClassName("mandatory");
					} else {
				    	stateTextbox.removeClassName("mandatory");
						stateTextbox.required = 'false';
						requiredStateAsterisk.hide();
					}                                  
				}

				if( setState && setState != "" ){
					stateSelect.value = setState;
					stateTextbox.value = setState;
				}
			},
			onFailure: function(transport) {
				stateSelect.hide().disable();
				stateTextbox.show().enable();
			}
		});
	}

}

function handleInstitutionAddressType(formType) {
	// iF the user has an ic-approved role, set up a trigger on the addressType
	//   drop down to send them to the institution page if they select "Higher Ed"
	//   as their address type
	if(getBooleanValue($F("icfrEligible")) && $(formType+"AddressType")){
		Event.observe($(formType+"AddressType"), 'change', function(event){
			if(this.value == 'institution'){
				document.location.href = '/addInstitution.nav';
				Event.stop(event);
			}
		});
	}
}

function address_init(site){
	initAddressManagement();
	if ($("frmAddressDetails")) {
		Event.observe('createAddress','click',function(event){
			populateAddressType('create');
			validateForm(event,$("frmAddressDetails"));
		});
		handleInstitutionAddressType('create');
	}
	if ($("frmEditAddressDetails")) {
		Event.observe('updateAddress','click',function(event){
			populateAddressType('update');
			validateForm(event,$("frmEditAddressDetails"));	
		});
		handleInstitutionAddressType('update');
	}					
	
	resizeSelectControlForIE();
	
	formWash();
}



function initAddressManagement(){
	$$(".defaultShippingRadio").each(function(radioBttn){
		radioBttn.onclick = function(){
			$$(".defaultShippingRadio").each(function(b){
				b.checked = false;
			});
			this.checked = true;
			setDefaultShippingAddress(this.value);
		}
	});
}

function setDefaultShippingAddress(addressId){
	var url = "/setDefaultShippingAddress.data?aId=" + addressId;
	new Ajax.Request(url, {
		method :'post',
		onSuccess: function(transport) {
			try{
				response = transport.responseText.evalJSON();
			}
			catch(e){
				if(console) console.log(e);
			}
		}
	});
}




function icfrAddress_init(site) {
	address_init(site);

	if($("addNewAddress")) {
		Event.observe("addNewAddress", "click", function(event){
			if($("modalAddAddressPanel")){
				Event.stop(event);
				if(!YAHOO.sage.account.modalAddAddressForm){
					var addressForm = new ModalForm("addAddressForm", "modalAddAddressPanel", 100);
					YAHOO.sage.account.modalAddAddressForm = addressForm;
					var consumer = new Consumer("addAddressConsumer", addressForm, function(type,args,me){
						YAHOO.sage.account.modalAddAddressForm.hide();
						var result = args[0];
						location.reload(true);
					});
				}
				YAHOO.sage.account.modalAddAddressForm.show();
			}
			formWash();
		});		
	}
	Event.observe("addAddress", "click", function(event){
		var addressSelected = false;
		
		$$(".shipBillButton").each(function(frmInput){
			if (!addressSelected && frmInput.checked) {
				addressSelected = true;
			}
		});
		
		if (!addressSelected) {
			$("addNewAddress").up("tr").style.background='#f5cccc';
			Event.stop(event);
		}
		
		if($("acceptPolicy") && !$("acceptPolicy").checked){
			parentRow = $("acceptPolicy").up("tr");
			parentRow.removeClassName("wash");
			parentRow.style.background='#f5cccc';
			$("errPolicySelect").style.display="inline";
			Event.stop(event);
		}
	});
	
	if ($ ("bttnDeleteIcfrAddress")) {
		Event.observe("bttnDeleteIcfrAddress", "click", function(event) {
			handleDeleteIcfrAddress(event);
		});
	}
	
	$("addressListForm").select(".bttnEditAddress").each(function(frmInput){	
		Event.observe(frmInput.id, "click", function(event){
			handleEditAddress(event,frmInput.id,site);
		});
	  });
}

function handleEditAddress(event,id,site) {
		if($("modalEditAddressPanel")){
			resetAddress()
			Event.stop(event);
			new Ajax.Request("/getAddressDetailsJS.data?id=" + id, {
				method :'post',
				onSuccess: function(transport) {
					try{ 
							response = transport.responseText.evalJSON();
							$("addressId").value = id;
							$("updateAddress1").value = response.address.address1;
							if (response.address.address2) $("updateAddress2").value = response.address.address2;
							
							if (response.address.addressType) {
								if (response.address.addressType == "business") {
									$("updateBusiness").value = response.address.companyName;
									$("updateBusinessNameRow").removeClassName("hidden").show();
									$("updateSchoolRow").addClassName("hidden").hide();
									$("updateOtherRow").addClassName("hidden").hide();
									$("updateInstitutionRow").addClassName("hidden").hide();
									$("updateDeptRow").addClassName("hidden").hide();
									if(site=='sage-uk'){
										$("updateDeptPhoneRow").addClassName("hidden").hide();
										$("updateBldgRow").addClassName("hidden").hide();
										$("updateRoomNumberRow").addClassName("hidden").hide();
									}
								} else if(response.address.addressType == "school") {
									if (response.address.institution) {
										$("updateSchool").value = response.address.institution;
									} else {
										$("updateSchool").value = response.address.companyName;
									}
									$("updateSchoolRow").removeClassName("hidden").show();
									$("updateBusinessNameRow").addClassName("hidden").hide();
									$("updateOtherRow").addClassName("hidden").hide();
									$("updateInstitutionRow").addClassName("hidden").hide();
									$("updateDeptRow").addClassName("hidden").hide();
									if(site=='sage-uk'){
										$("updateDeptPhoneRow").addClassName("hidden").hide();
										$("updateBldgRow").addClassName("hidden").hide();
										$("updateRoomNumberRow").addClassName("hidden").hide();
									}
								} else if(response.address.addressType == "other") {
									$("updateOther").value = response.address.companyName;
									$("updateOtherRow").removeClassName("hidden").show();
									$("updateSchoolRow").addClassName("hidden").hide();
									$("updateBusinessNameRow").addClassName("hidden").hide();
									$("updateInstitutionRow").addClassName("hidden").hide();
									$("updateDeptRow").addClassName("hidden");
									if(site=='sage-uk'){
										$("updateDeptPhoneRow").addClassName("hidden").hide();
										$("updateBldgRow").addClassName("hidden").hide();
										$("updateRoomNumberRow").addClassName("hidden").hide();
									}
								} else if(response.address.addressType == "institution") {
									if (response.address.institution) {
										$("updateInstitutionName").value = response.address.institution;
									}
									if (response.address.department) {
										$("updateDept").value = response.address.department;
									}
									$("updateInstitutionRow").removeClassName("hidden").show();
									$("updateDeptRow").removeClassName("hidden").show();
									$("updateBusinessNameRow").addClassName("hidden").hide();
									$("updateSchoolRow").addClassName("hidden").hide();
									$("updateOtherRow").addClassName("hidden").hide();
									if(site=='sage-uk'){
										$("updateDeptPhoneRow").removeClassName("hidden").show();
										$("updateBldgRow").removeClassName("hidden").show();
										$("updateRoomNumberRow").removeClassName("hidden").show();
									}
								} else {
									$("updateInstitutionRow").addClassName("hidden").hide();
									$("updateDeptRow").addClassName("hidden").hide();
									$("updateBusinessNameRow").addClassName("hidden").hide();
									$("updateSchoolRow").addClassName("hidden").hide();
									$("updateOtherRow").addClassName("hidden").hide();
									if(site=='sage-uk'){
										$("updateDeptPhoneRow").addClassName("hidden").hide();
										$("updateBldgRow").addClassName("hidden").hide();
										$("updateRoomNumberRow").addClassName("hidden").hide();
									}
								}
							}
							if (response.address.zip) {
								$("updateZipcode").value = response.address.zip;
							}
							$("updateCity").value = response.address.city;
							if(site!='sage-uk'){
								populateAddressStatesForCountry(site,response.address.country,response.address.state,$("updateNAmericaRegion").value,true,'update');
							}
						   $("updateCountryDropdown").value = response.address.country;
						   
						   if (site == "sage-uk") {
							   if(response.address.phoneNumber) $("updateDeptPhone").value = response.address.phoneNumber;
							   if(response.address.county) $("updateCounty").value = response.address.county;
							   if(response.address.building) $("updateBldg").value = response.address.building;
							   if(response.address.roomNumber) $("updateRoomNum").value = response.address.roomNumber;
						   }
						   if(response.address.billingAddress) $("updateBillingAddress").checked = response.address.billingAddress;
							if(response.address.shippingAddress) $("updateShippingAddress").checked = response.address.shippingAddress;
							
							YAHOO.sage.account.modalAddressForm.show();
					}
					catch(e){
						if(console) console.log(e);
					}
				}
			});					
			
			if (!YAHOO.sage.account.modalAddressForm) {
				var addressForm = new ModalForm("editAddressForm", "modalEditAddressPanel", 100);
				YAHOO.sage.account.modalAddressForm = addressForm;
				var consumer = new Consumer("editAddressConsumer", addressForm, function(type,args,me){
					YAHOO.sage.account.modalAddressForm.hide();
					var result = args[0];
					location.reload(true);
				});
			}
	}
}

function deleteIcfrAddress(addressId) {
	document.getElementById('addressIdToDelete').value=addressId;
	if (confirm('Do you want to delete the address?')) {
		document.getElementById('bttnDeleteIcfrAddress').click();
	}	
}


function handleDeleteIcfrAddress(event) {
	Event.stop(event);
	$("frmDeleteAddress").request({
		parameters : {
			'submitmode' : 'ajax',
			'submit.x' : '',
			'submit.y' : '',
			'atg.formHandlerUseForwards' : 'false'
		},
		onSuccess : function(transport) {
			Event.stop(event);
			location.reload(true);
		}
	});
}

function resetAddress(){
	$("updateAddress2").value = "";
	if($("updateCounty")) $("updateCounty").value = "";
	if($("updateZipcode")) $("updateZipcode").value = "";
}

function icfrConfirmation_init(site){
	Event.observe('courseInstitution', 'change', function(event){
		if ($F("courseInstitution") == '') {
			$("courseInstitution").up("tr").addClassName("err");
		} else {
			$("courseInstitution").up("tr").removeClassName("err");
			populateDepartmentsForInstitution();
		}
	});

	if ($("saveCourse")) {	
		initACMessage("enrolledit");
		Event.observe('saveCourse','click',function(event){
			saveCourseDetails(event,$("courseDetailsFrm"),"add");		
		});
	}
}


function validateEnrollment(event,enrollment){
	if (!isValid($(enrollment)) || $F(enrollment).toString().search(/^0*$/) == 0 || $F(enrollment).toString().search(/^[0-9]+$/) != 0) {
		$(enrollment).value = "Please enter valid number";
		$(enrollment).addClassName("greyed");
		$(enrollment).up('tr').addClassName("err");
		$("errorMsg").style.display="inline";
		initACMessage($(enrollment));
		Event.stop(event);
		return false;
	} else {
		$(enrollment).up('tr').removeClassName("err");
		$("errorMsg").hide();
		return true;
	}
}



function validateCourseForm(event,form){
	var validForm = validateForm(event,form);
	var validEnrollment = validateEnrollment(event,$("enrolledit"));
	return validForm && validEnrollment;
}


function saveCourseDetails(event,courseForm,csPrefix) {
	if (validateCourseForm(event,courseForm)) {
		if (isValid($("courseStatus"))) {
			$("courseStatusId").value = $("courseStatus").value;
		} else {
			$("courseStatusId").value = 'A';
		}
		$("courseSubject1").value = $F(csPrefix+"coursesubject1");
		if ($(csPrefix+"coursesubject2")) {
			$("courseSubject2").value = $F(csPrefix+"coursesubject2");
		}
		if($(csPrefix+"coursesubject3")){
			$("courseSubject3").value = $F(csPrefix+"coursesubject3");
		}
		return true;
	}
	return false;
}

function populateDepartmentsForInstitution() {
	
	new Ajax.Request("/getDepartmentsForInstitutionJS.data?d=" + $F("courseInstitution"), {
		method :'get',
		onSuccess: function(transport) {
			try{ 
				var response = transport.responseText.evalJSON();
				var select = $("lstDepartment");
				var departments = response.departments;
				if (departments.length > 0) {
					select.options.length = 0;
					select.insert("<option value=''>" + "Select..." + "</option>");
					for (var i=0;i<departments.length;i++) {
						select.insert("<option value=\"" + departments[i].id + "\">" + departments[i].name + "</option>");
					}
					select.value = select.options[0].value;
				}
			}
			catch(e){
				if(console) console.log(e);
			}
		}
	});
	
}

function initACMessage(obj){
	Event.observe(obj, "focus", function(event){
			$(obj).clear();
			$(obj).removeClassName('greyed');
			$(obj).stopObserving();
	});
}

/* 
 * Validates a form looking for a @mandatory css attribute on each select or input
 *  beneath the optiona form. If no form is specified, the currentTarget's (DOM element 
 *  that triggered the event) form reference is used
*/
function validateForm(event,form){

	var formErr=false;
	var parentForm = undefined;
	if(form) parentForm = form;
	else if(this.tagName.toLowerCase() == "form"){
		parentForm = $(this);
	}
	else{
		parentForm = $(this.form.id);
	}
	parentForm.select(".mandatory").each(function(frmInput){
		try{
			parentRow = frmInput.up("tr");
			if ( isVisible(parentRow) && frmInput.getStyle('display')!='none'){
				if( !isValid(frmInput) ){
					parentRow.addClassName("err");
					formErr=true;
				}else if (!formErr) {
						parentRow.removeClassName("err");
				}
			}
		}
		catch(ex){
			alert(ex+' '+id);
			Event.stop(event);
		}
	});
	if (formErr){
		$("errorMsg").style.display="inline";
		Event.stop(event);
		return false;
	}else{
		$("errorMsg").hide();
		return true;
	}
}

function isVisible(item){
	return item.visible() && !item.hasClassName("hidden") && !item.up(".hidden");
}

function isValid(frmInput){
	return ( !( frmInput.value.blank() 
				|| frmInput.hasClassName("greyed")
				|| ( frmInput.tagName == "select" && parseInt(frmInput.value) < 0 )
			  )
			);
}

function openPopup(url){
	window.open(url,'Child','scrollbars=yes,height=500,width=600,top='+document.body.clientHeight/2+',left='+document.body.clientHeight/2);
}
/*function populateCitiesForState(stateId){
	new Ajax.Request("/getCitiesForState.data?state="+stateId, {
			method: 'get',
			onSuccess: function(transport) {
				var cities = transport.responseXML.getElementsByTagName("city");
				if(cities != null && cities.length > 0){
					var menuOptions = "<option value=\"\">--select a city--</option>";
					for(var i = 0; i < cities.length; i++){
						menuOptions += "<option value=\"" + cities[i].getElementsByTagName("name")[0].firstChild.nodeValue + "\">"
									+ cities[i].getElementsByTagName("name")[0].firstChild.nodeValue + "</option>";
					}
					$("citySelect").update(menuOptions);
				}
			},
			onFailure: function(transport) {
				
			}
		});
}*/
function populateCitiesForState(stateId){ 
	new Ajax.Request("/search/cities.nav?s="+stateId+"&facetField=city&onlyFacets=true", {
			method: 'get',
			onSuccess: function(transport) {
				var jsonObj = transport.responseText.evalJSON();
				cities = jsonObj.result;
				if(cities != null){
					var menuOptions = "<option value=\"\">--select a city--</option>";
					for(var i = 0; i < cities.length; i++){
						menuOptions += "<option value=\"" + cities[i] + "\">"
									+ cities[i] + "</option>";
					}
					$("citySelect").update(menuOptions);
					resetInst();
				}
			},
			onFailure: function(transport) {
				
			}
		});
}
function resetInst(){
	$("insititution").value="Please type full institution name...";
	$("insititution").addClassName("greyed");
	$("repInfo").addClassName("hidden");
	$("repImage").addClassName("hidden");
}

