// JavaScript Document
// Client functionality and checks for RegistryShare
//

// Show Registries - return a list of RegistryShare registries
function showRegistries(site_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=show_registries&site_id=' + site_id + '&name=' + name;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Create Registry
function createRegistry(site_id, div_to_load) {
	if (document.getElementById('new_registry_name').value == '') {
		alert("Please enter a name for the registry you're creating");
		document.getElementById('new_registry_name').focus();
		return;
	}
	
	var name = document.getElementById('new_registry_name').value;
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=create_registry&site_id=' + site_id + '&name=' + name;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Edit registry
function showEditRegistry(site_id, registry_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=edit_registry&site_id=' + site_id + '&registry_id=' + registry_id;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Preferences
function showPreferences(site_id, registry_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=edit_preferences&site_id=' + site_id + '&registry_id=' + registry_id;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Show Purchases
function showPurchases(site_id, registry_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=show_purchases&site_id=' + site_id + '&registry_id=' + registry_id;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Refresh Purchases - Reorder purchase list based on menu input
function refreshPurchases(site_id, registry_id, div_to_load, menu_object) {
	var orderby = menu_object.options[menu_object.selectedIndex].value
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=show_purchases&site_id=' + site_id + '&registry_id=' + registry_id + '&orderby=' + orderby;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Save Preferences
function savePreferences(site_id, registry_id, div_to_load) {
	var label = document.getElementById('label').value;
	var description = document.getElementById('description').value;
	if (document.getElementById('use_paypal').checked) var use_paypal = '1';
		else var use_paypal = '0';
	if (document.getElementById('use_check').checked) var use_check = '1';
		else var use_check = '0';
	var paypal_email = document.getElementById('paypal_email').value;
	var check_text = document.getElementById('check_text').value;
	var currency_menu = document.getElementById('currency');
	var fontcode_menu = document.getElementById('fontcode');
	var fontsize_menu = document.getElementById('fontsize');
	var currency = currency_menu.options[currency_menu.selectedIndex].value;
	var fontcode = fontcode_menu.options[fontcode_menu.selectedIndex].value;
	var myfontsize = fontsize_menu.options[fontsize_menu.selectedIndex].value;
	if (label == '') {
		alert("Please enter a name for this registry");
		document.getElementById('label').focus();
		return;
	}
	if ((use_paypal == '0') && (use_check == '0')) {
		alert("You must specify at least one payment method to allow. Please choose to allow PayPal, cash/check, or both.");
		return;
	}
	if ((use_paypal == '1') && (paypal_email == '')) {
		alert("Please enter the email address to send PayPal payments to");
		document.getElementById('paypal_email').focus();
		return;
	}
	if ((use_check == '1') && (check_text == '')) {
		alert("Please enter the text that will be displayed if a guest wishes to send a gift by cash/check");
		document.getElementById('check_text').focus();
		return;
	}
	if ((use_paypal == '1') && (!validateEmail(paypal_email))) {
		alert("The PayPal email address you entered doesn't appear to be valid");
		document.getElementById('paypal_email').focus();
		return;
	}
	
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=save_preferences&site_id=' + site_id + '&registry_id=' + registry_id + '&label=' + escape(label) + '&description=' + escape(description) +
		 '&use_paypal=' + use_paypal + '&use_check=' + use_check + '&paypal_email=' + escape(paypal_email) + '&currency=' + currency + '&fontcode=' + fontcode + 
		 '&fontsize=' + myfontsize + '&check_text=' + check_text;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// Delete Registry
function deleteRegistry(site_id, registry_id, div_to_load) {
	var is_confirmed = confirm("CAREFUL: Do you really want to delete this registry? You will not be able to recover it once it is deleted.");
	if (is_confirmed == true) {
		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=delete_registry&site_id=' + site_id + '&registry_id=' + registry_id;
		fetchData(url,send_data,div_to_load,'One moment...');
	} else {
		return;
	}
}

// Show Examples
// Populates the example pane with a dropdown of example registry items, pulled from the database
function showExamples(site_id) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=get_examples&site_id=' + site_id;
	fetchData(url,send_data,'example_container','');
}

// Move Item Up
// Move the selected item up in its listing position
function moveItemUp(site_id, registry_id, item_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_item_up&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id;
	fetchData(url,send_data,div_to_load,'');
}

// Move Item Down
// Move the selected item down in its listing position
function moveItemDown(site_id, registry_id, item_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_item_down&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id;
	fetchData(url,send_data,div_to_load,'');
}

// Move Category Up
// Move the selected category up in its listing position
function moveCatUp(site_id, registry_id, category_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_cat_up&site_id=' + site_id + '&registry_id=' + registry_id + '&category_id=' + category_id;
	fetchData(url,send_data,div_to_load,'');
}

// Move Category Down
// Move the selected category down in its listing position
function moveCatDown(site_id, registry_id, category_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_cat_down&site_id=' + site_id + '&registry_id=' + registry_id + '&category_id=' + category_id;
	fetchData(url,send_data,div_to_load,'');
}

// Move Registry Up
// Move the selected registry up in its listing position
function moveRegistryUp(site_id, registry_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_registry_up&site_id=' + site_id + '&registry_id=' + registry_id;
	fetchData(url,send_data,div_to_load,'');
}

// Move Registry Down
// Move the selected registry down in its listing position
function moveRegistryDown(site_id, registry_id, div_to_load) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=move_registry_down&site_id=' + site_id + '&registry_id=' + registry_id;
	fetchData(url,send_data,div_to_load,'');
}

// Edit Item
function editItem(site_id, registry_id, item_id) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=edit_item&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id;
	fetchData(url,send_data,'item_container' + item_id,'');
}

// Edit Category
function editCategory(site_id, registry_id, category_id) {
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=edit_category&site_id=' + site_id + '&registry_id=' + registry_id + '&category_id=' + category_id;
	fetchData(url,send_data,'category_container' + category_id,'');
}

// Update Registry Item
function updateRegistryItem(site_id, registry_id, item_id, div_to_load) {
	// persist the selected photo id (if any) in a hidden field if the photo edit pane is open
	var picmenu = document.getElementById('existingimg_photo' + item_id);
	if (picmenu != null) {
		var persistfield = document.getElementById('persist_photo' + item_id);
		persistfield.value = picmenu.options[picmenu.selectedIndex].value;
	}
	
	var label = document.getElementById('label' + item_id).value;
	var category_menu = document.getElementById('category_id' + item_id);
	var category_id = category_menu[category_menu.selectedIndex].value;
	var amount = document.getElementById('amount' + item_id).value;
	var num_requested = document.getElementById('num_requested' + item_id).value;
	var description = document.getElementById('description' + item_id).value;
	var photo = document.getElementById('persist_photo' + item_id).value;
	
	if (label == '') {
		alert("Please provide a name for this item");
		document.getElementById('label' + item_id).focus();
		return;
	}
	if (amount < 1) {
		if (amount > 0) {
			amount = '0';
			alert("The amount must be at least $1. To allow an unlimited amount, leave the amount field blank.");
			document.getElementById('amount' + item_id).focus();
			return;
		}
	}
	
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=update_item&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id + '&label=' + escape(label) +
		'&category_id=' + category_id + '&amount=' + escape(amount) + '&num_requested=' + escape(num_requested) + '&description=' + escape(description) + '&photo=' + photo;
	fetchData(url,send_data,div_to_load,'');
}

// Update Category Name
function updateCategory(site_id, registry_id, category_id, div_to_load) {
	var label = document.getElementById('category_name' + category_id).value;
	
	if (label == '') {
		alert("Please provide a name for this category");
		document.getElementById('category_name' + category_id).focus();
		return;
	} else {
		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=update_category&site_id=' + site_id + '&registry_id=' + registry_id + '&category_id=' + category_id + '&label=' + escape(label);
		fetchData(url,send_data,div_to_load,'');
	}
}

// Delete Item
function deleteItem(site_id, registry_id, item_id, div_to_load) {
	var is_confirmed = confirm("CAREFUL: Do you really want to delete this registry item? You will not be able to recover it once it is deleted. All information for this item, including purchase history, will be deleted.");
	if (is_confirmed == true) {
		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=delete_item&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id;
		fetchData(url,send_data,div_to_load,'');
	} else {
		return;
	}
}

// Delete Category
function deleteCategory(site_id, registry_id, category_id, div_to_load) {
	var is_confirmed = confirm("CAREFUL: Do you really want to delete this category? You will not be able to recover it once it is deleted.\nNote: Items in this category will not be deleted.");
	if (is_confirmed == true) {
		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=delete_category&site_id=' + site_id + '&registry_id=' + registry_id + '&category_id=' + category_id;
		fetchData(url,send_data,div_to_load,'');
	} else {
		return;
	}
}

// Create Category
function createCategory(site_id, registry_id, div_to_load) {
	var label = document.getElementById('new_category_name').value;
	if (label == '') {
		alert("Please provide a name for this category");
		document.getElementById('new_category_name').focus();
		return;
	} else {
		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=create_category&site_id=' + site_id + '&registry_id=' + registry_id + '&label=' + label;
		fetchData(url,send_data,div_to_load,'');
	}
}

// Create Item
function createRegistryItem(site_id, registry_id, div_to_load) {
	var label = document.getElementById('label').value;
	var category_menu = document.getElementById('category_id');
	var category_id = category_menu[category_menu.selectedIndex].value;
	var amount = document.getElementById('amount').value;
	var num_requested = document.getElementById('num_requested').value;
	var description = document.getElementById('description').value;
	var photo = document.getElementById('persist_photo').value;
	
	if (label == '') {
		alert("Please provide a name for this item");
		document.getElementById('label').focus();
		return;
	}
	if (amount < 1) {
		if (amount > 0) {
			amount = '0';
			alert("The amount must be at least $1. To allow an unlimited amount, leave the amount field blank.");
			document.getElementById('amount' + item_id).focus();
			return;
		}
	}
	
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=update_item&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + '' + '&label=' + escape(label) +
		'&category_id=' + category_id + '&amount=' + escape(amount) + '&num_requested=' + escape(num_requested) + '&description=' + escape(description) + '&photo=' + photo;
	fetchData(url,send_data,div_to_load,'');
}

// Show Edit Photo
// adds the HTML for an add/view photo interface
function showEditPhoto(site_id, registry_id, item_id, workspace_id, field_name, hide_function) {
	if (!hide_function) hide_function = 'hideEditPhoto';
	
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var persist = document.getElementById('persist_photo' + item_id).value;
	var send_data = 'do=get_edit_photo&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id + '&field_name=' + field_name + '&persist=' + persist + '&hide_function=' + hide_function;
	
//	var labeldiv = document.getElementById("photo_label" + item_id);
//	labeldiv.innerHTML='<input type="button" name="hide" class="buttontext" onclick="javascript:' + hide_function + '(\'' + registry_id + '\',\'' + item_id + '\',\'' + workspace_id + '\',\'' + field_name + '\');" value="Hide Photo" /></a>';
	
	request = createRequest();
	request.onreadystatechange=function() {
		var object = document.getElementById(workspace_id);
		if (request.readyState == 4) {
			if (request.status == 200) {
				object.innerHTML = request.responseText;

				// execute PNG fix code for IE versions < 7
				var agent=navigator.userAgent.toLowerCase();
				if (agent.indexOf('msie') != -1) {
					var arVersion = navigator.appVersion.split("MSIE");
					var version = parseFloat(arVersion[1]);
					
					if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
					{
					   for(var i=0; i<document.images.length; i++)
					   {
						  var img = document.images[i];
						  var imgName = img.src.toUpperCase();
						  var name_array=imgName.split("?");
							   imgName = name_array[0];
						  if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
							 var imgID = (img.id) ? "id='" + img.id + "' " : ""
							 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
							 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
							 var imgStyle = "display:inline-block;" + img.style.cssText 
							 if (img.align == "left") imgStyle = "float:left;" + imgStyle
							 if (img.align == "right") imgStyle = "float:right;" + imgStyle
							 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
							 var strNewHTML = "<span " + imgID + imgClass + imgTitle
							 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
							 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
							 + "(src=\'" + img.src + "\', sizingMethod='image'); visibility:visible\"></span>";
							 img.outerHTML = strNewHTML;
							 i = i-1;
						  }
					   }
					}
				}

			} else {
				alert("Error: Request status is " + request.status);
			}
		}
	}
	
	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}


// removes the HTML for an add/view photo interface
function hideEditPhoto(site_id, registry_id, item_id, workspace_id, field_name) {
//	var labeldiv = document.getElementById("photo_label");
//	if ((entry_id != '') && (entry_id != '0')) var post_button = 'Submit Changes';
//		else var post_button = 'Submit';
//	labeldiv.innerHTML='<input type="button" name="editphoto" class="buttontext" onclick="javascript:showEditPhoto(\'' + site_id + '\'\'' + registry_id + '\',\'' + edit_id + '\',\'photo_edit_container' + entry_id + '\',\'photo' + entry_id + '\');" value="Edit This Item\'s Photo" /> &nbsp;&nbsp; <input type="button" name="savepost" class="buttontext" onClick="javascript:savePost(\'edit_container\',\'' + blog_id + '\',\'' + post_id + '\')" value="' + post_button + '" />';
	
	// persist the selected photo id (if any) in a hidden field
	var picmenu = document.getElementById('existingimg_' + field_name);
	var persistfield = document.getElementById('persist_photo' + item_id);
	persistfield.value = picmenu.options[picmenu.selectedIndex].value;
	
	// remove the pic interface
	var object = document.getElementById(workspace_id);
	object.innerHTML = '';
}

// save photo properties from interface
function saveRegistryPhotoChanges(fieldname, status_container, registry_id, item_id, site_id) {
	startProgress(status_container);
	
	var pid = document.getElementById('existingimg_' + fieldname).options[document.getElementById('existingimg_' + fieldname).selectedIndex].value;
	
	// persist the selected photo id (if any) in a hidden field
	var persistfield = document.getElementById('persist_photo' + item_id);
	persistfield.value = pid;
	
	if (pid.charAt(0) != "0") { // only save uploaded image properties
		if (item_id == 'intro') var max_width = 250;  // intro photos should be no larger than this width
			else var max_width = 150;  // item photos should be no larger than this width
	
		var resize = document.getElementById('resize_' + fieldname).value;
		if (resize == '') resize = 450;
		var caption = document.getElementById('caption_' + fieldname).value;
		var title = document.getElementById('title_' + fieldname).value;
		if (document.getElementById('no_popup_' + fieldname).checked) var no_popup = '1';
	  	 else var no_popup = '0';
		if (document.getElementById('bw_' + fieldname).checked) var bw = '1';
	  	 else var bw = '0';
		if (document.getElementById('sep_' + fieldname).checked) var sep = '1';
	  	 else var sep = '0';
		var border_style = document.getElementById('border_style_' + fieldname).options[document.getElementById('border_style_' + fieldname).selectedIndex].value;

		if (border_style == '3') max_width = max_width - 10;  // for polaroid styled images, make the image a bit smaller
		if (border_style > '3') max_width = max_width - 25;  // for stacked/tilted polaroids, make the image even smaller
		if (parseInt(resize) > max_width) {  // if the selected width is larger than our determined max width, force it down to the max width
			resize = max_width;
			document.getElementById('resize_' + fieldname).value = max_width;
			var notice = 'Adjusting image size to fit...';
		} else {
			var notice = '';
		}

		var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
		var send_data = 'do=save_photo_changes&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id + '&pid=' + escape(pid) + '&resize=' + escape(resize) + '&caption=' + escape(caption) + '&title=' + escape(title) + '&no_popup=' + no_popup + '&bw=' + bw + '&sep=' + sep + '&border_style=' + border_style;
		request = createRequest();
		request.onreadystatechange=function() {
			if (request.readyState == 4) {
				if (request.status == 200) {
					clearText(status_container);
					var xmlDoc = request.responseXML;
					
					// post feedback
					var msg = (xmlDoc.getElementsByTagName("message")[0].firstChild.nodeValue);
					postTempMessage(status_container,notice + msg,5);
					
					// swap the photo, to reflect any changes
					var img_url = (xmlDoc.getElementsByTagName("path")[0].firstChild.nodeValue);
					var containerElement = document.getElementById(fieldname + '_container');
					var thumbContainerElement = document.getElementById(fieldname + '_thumbcontainer');
					var newImage = document.createElement("img");
					//var newThumb = document.createElement("img");
					newImage.setAttribute("src", img_url);
					//newThumb.setAttribute("src", img_url);
					var oldImage = containerElement.firstChild;
					//var oldThumb = thumbContainerElement.firstChild;
					containerElement.removeChild(oldImage);
					containerElement.appendChild(newImage);
					//thumbContainerElement.removeChild(oldThumb);
					//thumbContainerElement.appendChild(newThumb);
				}
			}
		}
		
		request.open('POST',url,true);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.send(send_data);

	} else { // public images don't have adjustable properties; just save the selected image and alignment to the post, if any
		clearText(status_container);
		
		var url = '/sitebuilder/controlpanel/imagemanager.ajaxsocket.php';
		var send_data = 'do=save_public_photo&site_id=' + site_id + '&registry_id=' + registry_id + '&item_id=' + item_id + '&pid=' + pid;
		fetchData(url,send_data,status_container);
	}
}

// Populate Example Data
function populateExampleData(site_id, menu_object) {
	var pos = menu_object.options[menu_object.selectedIndex].value;
	
	var url = '/sitebuilder/includes/classes/registrycontroller.class.php';
	var send_data = 'do=populate_example_data&site_id=' + site_id + '&pos=' + pos;
	request = createRequest();
	
	request.onreadystatechange=function() {
		if (request.readyState == 4) {
			if (request.status == 200) {
				var xmlDoc = request.responseXML;
				document.getElementById('label').value = (xmlDoc.getElementsByTagName("label")[0].firstChild.nodeValue);
				document.getElementById('description').value = (xmlDoc.getElementsByTagName("description")[0].firstChild.nodeValue);
				document.getElementById('amount').value = (xmlDoc.getElementsByTagName("amount")[0].firstChild.nodeValue);
				document.getElementById('num_requested').value = (xmlDoc.getElementsByTagName("num_requested")[0].firstChild.nodeValue);
			}
		}
	}
	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}

// Add to Cart
function addToCart(site_id, registry_id, item_id, div_to_load, num_needed, amount_in) {
	var quantity = document.getElementById('quantity' + registry_id + '-' + item_id).value;
	quantity = quantity.replace(/,/g, ""); // remove commas
	var amount_field = document.getElementById('amount' + registry_id + '-' + item_id);
	if (amount_field != null) {
		var amount = amount_field.value;
		amount = amount.replace(/,/g, ""); // remove commas
		amount = currencyFormatted(amount);  // convert amount entered to currency
	} else {
		var amount = parseFloat(amount_in);
	}
	
	num_needed = parseInt(num_needed);
	
	
	// make sure that the quantity entered is not 0 or empty
	if ((quantity == '') || (quantity == '0')) {
		alert ("Please enter a quantity of 1 or more in the quantity field");
		document.getElementById('quantity' + registry_id + '-' + item_id).focus();
		return;
	}
	
	// make sure that the quantity entered is an integer:
	if(parseInt(quantity) != (quantity - 0)) {
		alert("The quantity specified, " + quantity + ", isn't a valid number");
		document.getElementById('quantity' + registry_id + '-' + item_id).focus();
		return;
	} else {
		quantity = parseInt(quantity);
	}
	
	// reject bad currency values
	if (amount == '0.00') {
		alert("The amount specified does not appear to be valid");
		amount_field.focus();
		return;
	}
	
	// reject quantities that exceed the number needed
	if (num_needed < quantity) {
		alert("The quantity specified is too high: it exceeds the quantity needed");
		document.getElementById('quantity' + registry_id + '-' + item_id).focus();
		return;
	}
	
	// load saved cart and add new item
	var cart_string = document.getElementById('cart').value;
	cart_string += '::' +  registry_id + '-' + item_id + ',' + quantity + ',' + amount;
	document.getElementById('cart').value = cart_string;
	
	// temporarily hide the main registry content
	toggleLayer('mainregistry');
	
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=show_cart&site_id=' + site_id + '&cart_string=' + cart_string;
	fetchData(url,send_data,div_to_load,'One Moment...');
}

// Hide Cart
function hideCart(site_id, div_to_load) {
	// make main registry content visible again
	toggleLayer('mainregistry');
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=render_public_registries&site_id=' + site_id;
	fetchData(url,send_data,div_to_load,'One Moment...');
}

// Remove item from cart
function removeFromCart(site_id, registry_id, item_id, div_to_load) {
	// load saved cart
	var cart_string = document.getElementById('cart').value;
	var new_cart_string = '';
	var removed_flag = false;

	var label_to_remove = registry_id + '-' + item_id;
	var cart_array = cart_string.split("::");
	for (var i = 0; i < cart_array.length; i++) {
		if ((cart_array[i].indexOf(label_to_remove) < 0) || (removed_flag == true)){
			new_cart_string += ('::' + cart_array[i]);
		} else {
			removed_flag = true;  // this is so we won't remove more than one item, if there are identical items
		}
	}
	document.getElementById('cart').value = new_cart_string;

	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=show_cart&site_id=' + site_id + '&cart_string=' + new_cart_string;
	fetchData(url,send_data,div_to_load,'One Moment...');
}

// View cart contents
function viewCart(site_id, div_to_load) {
	// load saved cart
	var cart_string = document.getElementById('cart').value;
	
	// temporarily hide the main registry content
	toggleLayer('mainregistry');
	
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=show_cart&site_id=' + site_id + '&cart_string=' + cart_string;
	fetchData(url,send_data,div_to_load,'One Moment...');
}

// Check out
function checkoutCart(site_id, div_to_load) {
	// load saved cart
	var cart_string = document.getElementById('cart').value;
	
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=checkout_cart&site_id=' + site_id + '&cart_string=' + cart_string;
	fetchData(url,send_data,div_to_load,'');
}

// Verify that the required checkout fields are filled in
function verifyCheckout(cart_string) {
	var first_name = document.getElementById('first_field').value;
	var last_name = document.getElementById('last_field').value;
	var email = document.getElementById('email_field').value;

	if (first_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('first_field').focus();
		return false;
	}
	if (last_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('last_field').focus();
		return false;
	}
	if (email == '') {
		alert("Please enter your email address");
		document.getElementById('email_field').focus();
		return false;
	}
	if (!validateEmail(email)) {
		alert("Sorry, your email address does not appear to be valid. Please check the email address provided.");
		document.getElementById('email_field').focus();
		return false;
	}


	document.getElementById('first_name').value = first_name;
	document.getElementById('last_name').value = last_name;
	document.getElementById('email').value = email;
	
	return true;
}

// Get Interface for Cash/Check Check out
function cartCheckoutCash(site_id, cart_string, div_to_load) {
	var first_name = document.getElementById('first_field').value;
	var last_name = document.getElementById('last_field').value;
	var email = document.getElementById('email_field').value;

	if (first_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('first_field').focus();
		return;
	}
	if (last_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('last_field').focus();
		return;
	}
	if (email == '') {
		alert("Please enter your email address");
		document.getElementById('email_field').focus();
		return;
	}
	if (!validateEmail(email)) {
		alert("Sorry, your email address does not appear to be valid. Please check the email address provided.");
		document.getElementById('email_field').focus();
		return;
	}
	
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=cart_checkout_cash&site_id=' + site_id + '&cart_string=' + escape(cart_string);
	fetchData(url,send_data,div_to_load,'');
}

// Process Payment for Cash/Check Check out
function ProcessCartCheckoutCash(site_id, cart_string, div_to_load) {
	var first_name = document.getElementById('first_field').value;
	var last_name = document.getElementById('last_field').value;
	var email = document.getElementById('email_field').value;

	if (first_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('first_field').focus();
		return;
	}
	if (last_name == '') {
		alert("Please enter your first and last name");
		document.getElementById('last_field').focus();
		return;
	}
	if (email == '') {
		alert("Please enter your email address");
		document.getElementById('email_field').focus();
		return;
	}
	if (!validateEmail(email)) {
		alert("Sorry, your email address does not appear to be valid. Please check the email address provided.");
		document.getElementById('email_field').focus();
		return;
	}
	
	var url = '/registry.localajaxsocket.php';
	var send_data = 'do=process_cart_checkout_cash&site_id=' + site_id + '&cart_string=' + escape(cart_string) + '&first=' + escape(first_name) + '&last=' + escape(last_name) + '&email=' + escape(email);
	fetchData(url,send_data,div_to_load,'');
}




// Get Frame Document
// Returns a handle to the document inside a frame or iframe. Accepts the ID of a frame as the parameter
// Compatible with: 
// - Internet Explorer 6 (Win), 5.5 (Win), and higher
// - Mozilla 1.7.5 (all) - Firefox 1.0, Camino 0.8, K-Meleon 0.9, etc.
// - Safari 1.2.4
// - Opera 7.54 (Win)
function getFrameDocument(frameid) {
  var oIframe = document.getElementById(frameid);
  var oDoc = (oIframe.contentWindow || oIframe.contentDocument);
  if (oDoc.document)
    oDoc = oDoc.document;
  return oDoc;
}

// hides the passed div
function hide(div_to_hide) {
	document.getElementById(div_to_hide).innerHTML = '';
}

// starts the graphical progress indicator
function startProgress(container) {
	// start the graphical progress indicator
	var progressicon = top.document.createElement("img");
	progressicon.setAttribute("src", "/images/indicator.gif");
	var container_div = top.document.getElementById(container);
	clearText(container_div);
	container_div.appendChild(progressicon);
}

// URL to Filename
// Given a URL or path to a file, returns just the filename portion
function urlToFilename(url) {
	var url_array=url.split("/");
	return url_array[(url_array.length - 1)];
}

// starts the graphical progress indicator
function startProgressLocal(container) {
	// start the graphical progress indicator
	var progressicon = parent.document.createElement("img");
	progressicon.setAttribute("src", "http://www.wedshare.com/images/indicator.gif");
	var container_div = parent.document.getElementById(container);
	clearText(container_div);
	container_div.appendChild(progressicon);
}

// simple email validator
function validateEmail(str) {
	var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
 	return str.match(re);
}

// format to currency
function currencyFormatted(amount) {
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

// simple currency validator
function isCurrency(str) { 
	isPrice = /^\d+\.\d{2}$/; 
	return isPrice.test( str ); 
}

function toggleLayer( whichLayer )
{
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}



