var domainPath = "http://wishfor.it/";
var domainRoot = "http://wishfor.it/";

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function logIn() {
	if (isBlank($F('login-username')))
	{
		alert("Please enter your username.");
    $('login-username').focus();
    $('login-username').select();
    return false;
  }
  if (isBlank($F('login-password')))
  {
    alert("Please enter your password.");
    $('login-password').focus();
    $('login-password').select();
    return false;
  }
  showLoading();
  //return true;
  new Ajax.Request(domainPath + 'login.php', {method:'post', asynchronous:true, parameters:Form.serialize($('login-form')), onComplete:processLogin});
 
  return false;
}

function processLogin(theResponse) {
  if (theResponse.responseText != null) {
    switch (theResponse.responseText) {
			case 'success': {
				window.location.href = domainPath + "home";
				break;
			}
			case 'nickname': {
			   window.location.href = domainPath + "profile/nickname";
         break;
			}
			case 'bookmarklet': {
			   window.location.href = domainPath + "additemweb.php?name=" + escape($F('bookmarklet_item_name')) + "&url=" + escape($F('bookmarklet_item_url')) + "&desc=" + escape($F('bookmarklet_item_desc'));
         break;
			}
      case 'failed': {
				alert("There was a problem with your email/password");
				hideLoading();
				break;
			}
			case 'not verified': {
				alert("That account has not been verified!");
				hideLoading();
				break;
			}
			case 'no account': {
				alert("That wishfor.it account does not exist!");
				hideLoading();
				break;
			}
		}
	}
}

function isBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ") {
			return false;
		}
	}
	return true;
}

function pageLoaded() {
	hideLoading();
}

function showLoading() {
	Element.show('status_bar');
}

function hideLoading() {
	Element.hide('status_bar');
}

function showNewContainer(thisForm) {
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    Effect.BlindDown('new_container', {duration: .4});
  } else {
    $('new_container').style.display = "block";
  }
}

function hideNewContainer(thisForm) {
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    Effect.BlindUp('new_container', {duration: .4});
  } else {
    $('new_container').style.display = "none";
  }
  switch (thisForm) {
    case 'wishlist': {
      Form.reset('new_wishlist_form');
      break;
    }
    case 'item': {
      Form.reset('add_item_form');
      if ($('item_image_display')) {
        remove_image($('item_image_display'), '');
      }
      break;
    }
    case 'friend': {
      Form.reset('add_contact_form');
      break;
    }
  }
}

function showFindContactContainer() {
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    Effect.BlindDown('find_contact_container', {duration: .3});
  } else {
    $('find_contact_container').style.display = "block";
  }
}

function hideFindContactContainer() {
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    Effect.BlindUp('find_contact_container', {duration: .3});
  } else {
    $('find_contact_container').style.display = "none";
  }
  Form.reset('find_contact_form');
}

function checkFormSignup1() {
  if (checkEmail($F('signup_email')) == false || isBlank($F('signup_email')) == true) {
    $('signup_email').focus();
    $('signup_email').select();
    return false;
  }

  if ($('form_month').options[$('form_month').selectedIndex].value == "no") {
    alert("Please select the month that you were born.");
    $('form_month').focus();
    return false;
  }

  if ($('form_day').options[$('form_day').selectedIndex].value == "no") {
    alert("Please select the day that you were born.");
    $('form_day').focus();
    return false;
  }

  if ($('form_year').value.length != 4 || isNumber($F('form_year')) == false || parseInt($F('form_year')) > parseInt(new Date().getFullYear())) {
    alert("Please enter the 4-digit year that you were born.");
    $('form_year').focus();
    $('form_year').select();
    return false;
  }
  
  return true;
}

function checkFormSignup2() {
  switch($F('form_coppa')) {
    case "true":
      if (isBlank($F('form_name'))) {
        alert("Please enter your name.");
        $('form_name').focus();
        return false;
        break;
      }

      if (checkEmail($F('signup_email')) == false || isBlank($F('signup_email')) == true) {
        $('signup_email').focus();
        $('signup_email').select();
        return false;
        break;
      }

      if (isBlank($F('form_parent_name'))) {
        alert("Please enter your parent or guardian's name.");
        $('form_parent_name').focus();
        return false;
        break;
      }

      if (checkEmail($F('form_parent_email')) == false || isBlank($F('form_parent_email')) == true) {
        $('form_parent_email').focus();
        $('form_parent_email').select();
        return false;
        break;
      }

      if ($F('signup_email') == $F('form_parent_email')) {
        alert("Your email address and your parent/guardian's\nemail address cannot be the same.");
        $('form_parent_email').focus();
        $('form_parent_email').select();
        return false;
        break;
      }
      break;

    case "false":
      if (isBlank($F('form_name'))) {
        alert("Please enter your name.");
        $('form_name').focus();
        return false;
        break;
      }

      if (isBlank($F('form_password'))) {
        alert("Please enter a password.");
        $('form_password').focus();
        return false;
        break;
      }

      if (isBlank($F('form_confirm_password'))) {
        alert("Please confirm your password.");
        $('form_confirm_password').focus();
        return false;
        break;
      }

      if ($F('form_password') != $F('form_confirm_password')) {
        alert("The passwords do not match!\nPlease reconfirm your password.");
        $('form_confirm_password').focus();
        $('form_confirm_password').select();
        return false;
        break;
      }
    break;
  }
}

function checkFormCreateWishlist() {
	if (isBlank($F('wishlist_name')))
  {
    alert("Please enter a name for your wish list.");
    $('wishlist_name').focus();
    return false;
  }
  else
  {
    showLoading();
    var url = domainPath + "createwishlist.php";
		new Ajax.Request(url, {method:'post', asynchronous:true, parameters:Form.serialize($('new_wishlist_form')), onComplete:function () { reloadWishLists(); hideNewContainer('wishlist'); Form.reset(theID); }});
  }
	return false;
}

function checkFormEditWishlist(theID) {
  var wishlist_name_id = "wishlist_name" + theID;
  if (isBlank($F(wishlist_name_id)))
  {
    alert("Please enter a name for your wish list.");
    $(wishlist_name_id).focus();
  }
  else
  {
    showLoading();
    var url = domainPath + "editwishlist.php";
    var form_id = "edit_wishlist_form" + theID;
    var pars = Form.serialize($(form_id));
    new Ajax.Request(url, {method:'post', asynchronous:true, parameters:pars, onComplete:reloadThisWishlist});
  }
  return false;
}

function checkFormAddItemWeb() {
  if ($F('wishlist_id') == "none") {
    alert("Please select a wish list to add this item to.");
    $('wishlist_id').focus();
    return false;
  }
  if (isBlank($F('item_name'))) {
    alert("Please enter a name for your wish list item.");
    $('item_name').focus();
    return false;
  }
  
  if (!validateDollar($('item_price'), "item_type")) {
    return false;
  }

  if (!validateWholeNumber($F('item_quantity'))) {
    return false;
  }

  showLoading();
  var item_hide_tag = "";
  
  if ($('item_hide_tag_yes').checked) {
    item_hide_tag = "yes";
  }

  if ($('item_hide_tag_no').checked) {
    item_hide_tag = "no";
  }

  var url = domainPath + "additem.php";
  var myAjax = new Ajax.Request(url, {method: 'post', asynchronous:true, parameters: Form.serialize($('add_item_form')), onComplete:function() { window.close(); }});
  return false;
}

function checkFormAddItem() {
  if (isBlank($F('item_name'))) {
    alert("Please enter a name for your wish list item.");
    $('item_name').focus();
    return false;
  }
  
  if (!validateDollar($('item_price'), "item_type")) {
    return false;
  }

  if (!validateWholeNumber($F('item_quantity'))) {
    return false;
  }

  showLoading();
  var item_hide_tag = "";
  
  if ($('item_hide_tag_yes').checked) {
    item_hide_tag = "yes";
  }

  if ($('item_hide_tag_no').checked) {
    item_hide_tag = "no";
  }

  var url = domainPath + "additem.php";
  var myAjax = new Ajax.Request(url, {method: 'post', asynchronous:true, parameters: Form.serialize($('add_item_form')), onComplete:function() { getRecentItems($F('id'), $F('item_tags')); reloadItems($F('id')); reloadTagCloud(); hideNewContainer('item'); }});
  return false;
}

function checkFormEditItem(theID) {
  var form_id = "edit_item_form" + theID;
  var item_name_id = "item_name" + theID;
  var item_price_id = "item_price" + theID;
  var item_quantity_id = "item_quantity" + theID;
  var item_type_id = "item_type" + theID;

  if (isBlank($F(item_name_id))) {
    alert("Please enter a name for your wish list item.");
    $(item_name_id).focus();
    return false;
  }

  if (!validateDollar($(item_price_id), item_type_id)) {
    return false;
  }

  if (!validateWholeNumber($F(item_quantity_id))) {
    return false;
  }

  showLoading();

  var url = domainPath + "edititem.php";
  var pars = Form.serialize(form_id)
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { reloadThisItem(theID); reloadTagCloud(); }, onFailure:reloadThisItem});
  return false;
}

function deleteItem(itemName,itemID,wishlistID) {
  var questionResponse = confirm('Are you sure you want to delete ' + unescape(itemName) + '?');
  if (questionResponse) {
    showLoading();
    var theItem = "a" + itemID;
    var url = domainPath + 'deleteitem.php';
    var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { Effect.SwitchOff(theItem); hideLoading(); }});
  }
}

function reloadItems(wishlist)
{
  var url = domainPath + "getviewlist.php?id=" + wishlist;
  var myAjax = new Ajax.Updater('content_container', url, {method: 'get', onComplete: function() { reloadTagCloud(); hideLoading(); }});
}

function reloadWishLists()
{
  showLoading();
  var url = domainPath + "getwishlists.php";
  var myAjax = new Ajax.Updater('content_container', url, {method:'get', onComplete: function() { hideLoading(); }});
}

function deleteWishlist(wishlistName,wishlistID)
{
    var questionResponse = confirm('Are you sure you want to delete ' + unescape(wishlistName) + '?');
    if (questionResponse) {
      showLoading();
      var theWishlist = 'a' + wishlistID;
      var url = domainPath + 'deletewishlist.php';
      var pars = 'id=' + wishlistID;
      var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { Effect.SwitchOff(theWishlist); hideLoading(); }});
    }
}

function editWishlist(wishlistID)
{
  showLoading();
  var url = domainPath + 'geteditwishlist.php';
	var pars = 'id=' + wishlistID;
	//var theWishlist = 'a' + wishlistID;
	var theWishlist = 'edit' + wishlistID;
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    var myAjax = new Ajax.Updater(theWishlist, url, {method: 'post', parameters: pars, evalScripts: true, onComplete:function() { hideLoading(); Effect.BlindUp('a' + wishlistID, {duration: .4}); Effect.BlindDown('edit' + wishlistID, {duration: .4}); }});
  } else {
    var myAjax = new Ajax.Updater(theWishlist, url, {method: 'post', parameters: pars, evalScripts: true, onComplete:function() { hideLoading(); Element.hide('a' + wishlistID); Element.show('edit' + wishlistID); }});
  }
}

function reloadThisWishlist(theID)
{
  if (theID.responseText == null)
  {
    showLoading();
    var url = domainPath + 'getwishlist.php';
    var pars = 'id=' + theID;
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'post', parameters: pars, onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID, {duration: .4}); Effect.BlindDown('a' + theID, {duration: .4}); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'post', parameters: pars, onComplete:function() { hideLoading(); Element.hide('edit' + theID); Element.show('a' + theID); }});
    }
  }
  else
  {
    showLoading();
    var url = domainPath + 'getwishlist.php';
    var pars = 'id=' + theID.responseText;
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'post', parameters: pars, onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID.responseText, {duration: .4}); Effect.BlindDown('a' + theID.responseText, {duration: .4}); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'post', parameters: pars, onComplete:function() { hideLoading(); Element.hide('edit' + theID.responseText); Element.show('a' + theID.responseText); }});
    }
  }
}

function get_images_amazon(thisItem, searchTerm) {
  if (isBlank($F(searchTerm)) || $F(searchTerm) == null) {
		alert("You must enter an item name before selecting a picture.");
		$(searchTerm).focus();
	} else {
    var url = domainPath + 'amazon.php';
		var pars = '?search=' + $F(searchTerm);
		window.open(url + pars, thisItem, "status = no, height = 400, width = 550, resizable = yes, menubar = no, toolbar = no, scrollbars = yes" )
	}
}

function remove_image(theElement, itemID) {
	theElement.parentNode.innerHTML = $F('select_image_code' + itemID);
  $('item_image' + itemID).value = "";
}

function editItem(itemID,wishlistID) {
  showLoading();
  var url = domainPath + 'getedititem.php';
	var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
	//var theItem = 'a' + itemID;
	var theItem = 'edit' + itemID;
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    var myAjax = new Ajax.Updater(theItem, url, {method: 'post', parameters: pars, evalScripts: true, onComplete:function() { hideLoading(); Effect.BlindUp('a' + itemID, {duration: .4}); Effect.BlindDown('edit' + itemID, {duration: .4}); }});
  } else {
    var myAjax = new Ajax.Updater(theItem, url, {method: 'post', parameters: pars, evalScripts: true, onComplete:function() { hideLoading(); Element.hide('a' + itemID); Element.show('edit' + itemID); }});
  }
}

function reloadThisItem(theID)
{
  if (theID.responseText == null)
  {
    showLoading();
    var url = domainPath + "getitem.php?id=" + theID + "&wishlist=" + $F('wishlist' + theID);
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'get', onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID, {duration: .4}); Effect.BlindDown('a' + theID, {duration: .4}); reloadTagCloud(); initLightbox(); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'get', onComplete:function() { hideLoading(); Element.hide('edit' + theID); Element.show('a' + theID); reloadTagCloud(); initLightbox(); }});
    }
  }
  else
  {
    showLoading();
    var url = domainPath + "getitem.php?id=" + theID.responseText + "&wishlist=" + $F('wishlist' + theID.responseText);
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'get', onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID.responseText, {duration: .4}); Effect.BlindDown('a' + theID.responseText, {duration: .4}); reloadTagCloud(); initLightbox(); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'get', onComplete:function() { hideLoading(); Element.hide('edit' + theID.responseText); Element.show('a' + theID.responseText); reloadTagCloud(); initLightbox(); }});
    }
  }
}

function sortWishlistItems(wishlist, orderby, direction)
{
  showLoading();
	var url = domainPath + "getsortwishlistitems.php?id=" + wishlist + "&orderby=" + orderby + "&direction=" + direction;
  var myAjax = new Ajax.Updater('content_container', url, {method: 'get', onComplete:function() { hideLoading(); initLightbox(); }});
}

function sortSharedWishlistItems(owner, wishlist, orderby, direction)
{
	showLoading();
  var url = domainPath + "getsortsharedwishlistitems.php?id=" + wishlist + "&owner_id=" + owner + "&orderby=" + orderby + "&direction=" + direction;
  var myAjax = new Ajax.Updater('content_container', url, {method: 'get', onComplete:function() { hideLoading(); initLightbox(); }});
}

function checkFormResetPassword1() {
	if (isBlank($F('email')))
	{
		alert("Please enter your email address.");
    $('email').focus();
    $('email').select();
    return false;
  }
  if (checkEmail($F('email'))) {
    showLoading();
    var url = domainPath + "resetpass.php";
    var pars = Form.serialize('reset_password_form');
    new Ajax.Request(url, {method:'post', asynchronous:true, parameters: pars, onComplete:checkFormResetPassword1_results});
  } else {
    $('email').focus();
    $('email').select();
  }
 
  return false;
}

function checkFormResetPassword1_results(the_response) {
  switch (the_response.responseText.strip()) {
    case 'sent': {
      $('reset_password_status').style.display = "block";
      Form.reset('reset_password_form');
      break;
    }
    case 'not verified': {
      alert("That account has not yet been verified.\r\nYou must verify your account before it can be used.");
      break;
    }
    case 'no account': {
      alert("There is no account associated with that email address.");
      $('email').focus();
      $('email').focus();
      break;
    }
  }
  hideLoading();
}

function checkFormResetPassword2() {
  if (isBlank($F('member_id'))) {
		return false;
	}

  if (isBlank($F('reset_pass_id'))) {
    return false;
  }
  

   if (isBlank($F('new_pass'))) {
		  alert("Please enter a password.");
		  $('new_pass').focus();
		  return false;
	 }

	 if (isBlank($F('new_pass_conf'))) {
		  alert("Please confirm your password.");
		  $('new_pass_conf').focus();
		  return false;
	 }

	if ($F('new_pass') != $F('new_pass_conf')) {
	  alert("The passwords do not match!\nPlease reconfirm your password.");
	  $('new_pass_conf').focus();
	  $('new_pass_conf').select();
	  return false;
  }
  
  showLoading();
  var url = domainPath + "resetpass.php";
  var pars = Form.serialize('reset_password_form');
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: checkFormResetPassword2_results});
  return false;
}

function checkFormResetPassword2_results(the_response) {
  switch (the_response.responseText.strip()) {
    case 'done': {
      alert("Your password has been changed. You will now\r\nbe redirected to the home page so that you can login.");
      window.location = "http://wishfor.it/";
      break;
    }
    default: {
      alert("There was an error updating your password. Please try again.");
      break;
    }
  }
  hideLoading();
}

function checkFormAddFriend() {
  if (isBlank($F('contact_name'))) {
    alert("Please enter a name for your contact.");
    $('contact_name').focus();
    return false;
  }
  
  if (isBlank($F('contact_email')) || checkEmail($F('contact_email')) != true) {
    $('contact_email').focus();
    return false;
  }
  
  showLoading();
  var url = domainPath + "addfriend.php";
  var pars = Form.serialize('add_contact_form');
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { reloadFriends(); hideNewContainer('friend'); }});
  return false;
}

function addImportedFriends() {
  $('finished_importing').style.display='none';
  if ($F('imported_friends') != "empty") {
    showLoading();
    var url = domainPath + "addimportedfriends.php";
    pars = Form.serialize('imported_friends_form');
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { reloadFriends(); }});
    $('imported_friends').value = "empty";
  }
}

function reloadFriends() {
  var url = domainPath + "getfriends.php";
  var myAjax = new Ajax.Updater('content_container', url, {method: 'get', onComplete: hideLoading});
}

function reloadThisFriend(theID) {
  showLoading();
  if (theID.responseText == null) {
    var url = domainPath + "getfriend.php?id=" + theID;
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'get', onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID, {duration: .4}); Effect.BlindDown('a' + theID, {duration:.2}); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID, url, {method: 'get', onComplete:function() { hideLoading(); Element.hide('edit' + theID); Element.show('a' + theID); }});
    }
  } else {
    var url = domainPath + "getfriend.php?id=" + theID.responseText;
    if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'get', onComplete:function() { hideLoading(); Effect.BlindUp('edit' + theID.responseText, {duration: .4}); Effect.BlindDown('a' + theID.responseText, {duration:.2}); }});
    } else {
      var myAjax = new Ajax.Updater('a' + theID.responseText, url, {method: 'get', onComplete:function() { hideLoading(); Element.hide('edit' + theID.responseText); Element.show('a' + theID.responseText); }});
    }
  }
}

function editContact(contactID) {
  showLoading();
  var url = domainPath + "geteditfriend.php";
	var pars = 'id=' + contactID;
	//var theContact = 'a' + contactID;
	var theContact = 'edit' + contactID;
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    var myAjax = new Ajax.Updater(theContact, url, {method: 'get', parameters: pars, onComplete:function() { hideLoading(); Effect.BlindUp('a' + contactID, {duration:.2}); Effect.BlindDown('edit' + contactID, {duration: .4}); }});
  } else {
    var myAjax = new Ajax.Updater(theContact, url, {method: 'get', parameters: pars, onComplete:function() { hideLoading(); Element.hide('a' + contactID); Element.show('edit' + contactID); }});
  }
}

function deleteContact(contactName,contactID) {
  	var questionResponse = confirm('Are you sure you want to delete ' + unescape(contactName) + '?');
    if (questionResponse) {
      showLoading();
      var thisContact = "a" + contactID;
      var url = domainPath + "deletefriend.php";
      var pars = 'id=' + contactID;
      var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: function() { Effect.SwitchOff(thisContact); hideLoading(); }});
    }
}

function inviteContact(contactName,contactID) {
  	var questionResponse = confirm('This will send ' + unescape(contactName) + ' an invitation to\r\nwishfor.it. Is this what you\'d like to do?');
    if (questionResponse) {
      showLoading();
      var thisContact = "invite" + contactID;
      var url = domainPath + "invitefriend.php";
      var pars = 'id=' + contactID;
      var myAjax = new Ajax.Updater(thisContact, url, {method: 'post', parameters: pars, onComplete: hideLoading });
    }
}

function checkFormEditFriend(theID) {
  var contact_name_id = "contact_name" + theID;
  var contact_email_id = "contact_email" + theID;
  var old_email_id = "old_email" + theID;
  var edit_contact_form = "edit_contact_form" + theID;

  if (isBlank($F(contact_name_id))) {
    alert("Please enter a name for your contact.");
    $(contact_name_id).focus();
    return false;
  }

  if (isBlank($F(contact_email_id)) || checkEmail($F(contact_email_id)) != true) {
    alert("Please enter a valid email address.");
    $(contact_email_id).focus();
    return false;
  }

  showLoading();
  var url = domainPath + "editfriend.php";
  var pars = Form.serialize(edit_contact_form);
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete:reloadThisFriend, onFailure:reloadThisFriend});
  return false;
}

function checkFormEditProfile() {
  if (isBlank($F('member_name'))) {
		alert("Please enter your name.");
		$('member_name').focus();
		return false;
	}

  if (!checkEmail($F('member_email'))) {
    $('member_email').focus();
    $('member_email').select();
    return false;
  }
  
  if (!isBlank($F('member_password')) && !isBlank($F('member_password_confirm'))) {

   if (isBlank($F('member_password'))) {
		  alert("Please enter a password.");
		  $('member_password').focus();
		  return false;
	 }

	 if (isBlank($F('member_password_confirm'))) {
		  alert("Please confirm your password.");
		  $('member_password_confirm').focus();
		  return false;
	 }

	 if ($F('member_password') != $F('member_password_confirm')) {
		  alert("The passwords do not match!\nPlease reconfirm your password.");
		  $('member_password_confirm').focus();
		  $('member_password_confirm').select();
		  return false;
	 }
  }
  
  showLoading();
  var url = domainPath + "editprofile.php";
  var pars = Form.serialize('edit_profile_form');
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: check_form_profile_results});
  return false;
}

function check_form_profile_results(the_response) {
  if (the_response.responseText == "email in use") {
    alert("There is already a user with that email address.");
    $('member_email').focus();
    $('member_email').select();
  } else {
    $('profile_status').style.display = "block";
  }
  hideLoading();
}

function checkFormSaveNickname() {
  var member_nickname = $F('member_nickname');
  
  if (isBlank($F('member_nickname'))) {
		alert("Please enter a username.");
		$('member_nickname').focus();
		return false;
	}
	
	if (!validateUsername($F('member_nickname'))) {
	  return false;
	}

  showLoading();
  var url = domainPath + "editprofilenickname.php";
  var pars = Form.serialize('edit_profile_form');
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: checkFormSaveNickname_results});
  return false;
}

function checkFormSaveNickname_results(the_response) {
  if (the_response.responseText == "nickname in use") {
    alert("That username is already in use.");
    $('member_nickname').focus();
    $('member_nickname').select();
  } else {
    window.location.href = domainRoot;
  }
  hideLoading();
}

function validateUsername(thisUsername)
{
   if (thisUsername == "")
   {
    return false;
   }
   thisUsername = thisUsername.toLowerCase();
   var Chars = "0123456789abcdefghijklmnopqrstuvwxyz";
   for (var i = 0; i < thisUsername.length; i++)
   {
       if (Chars.indexOf(thisUsername.charAt(i)) == -1)
       {
           alert("Invalid Character(s)\n\nOnly numbers (0-9) and letters (a-z) are allowed.");
           return false;
       }
   }
   return true;
}

function reloadTagCloud()
{
  showLoading();
  var url = domainPath + "gettagcloud.php";
  var myAjax = new Ajax.Updater('tag_cloud', url, {method:'get', onComplete: hideLoading});
}

function change_price_title(the_id) {
  var item_type_id = "item_type" + the_id;
  var price_title_id = "item_price_label" + the_id;
  
  if ($F(item_type_id) == "item")
  {
    $(price_title_id).innerHTML = "* price:";
  } else {
    $(price_title_id).innerHTML = "price:";
  }
}

function validateDollar(fld, item_type_id)
{
   var temp_value = fld.value;

   if (temp_value == "")
   {
     if (item_type_id == "give") {
        //alert("Please enter a price for this item.");
        return false;
     } else {
        if ($F(item_type_id) == "money") {
          alert("Please enter a price for this item.");
          return false;
        } else {
          fld.value = "0.00";
          return true;
        }
     }
   }
   var Chars = "0123456789.";
   for (var i = 0; i < temp_value.length; i++)
   {
       if (Chars.indexOf(temp_value.charAt(i)) == -1)
       {
           alert("Invalid Character(s)\n\nOnly numbers (0-9) and a period are allowed in this field.");
           fld.focus();
           fld.select();
           return false;
       }
   }
   return true;
}

function validateDollarText(amount)
{
   var Chars = "0123456789.";
   for (var i = 0; i < amount.length; i++)
   {
       if (Chars.indexOf(amount.charAt(i)) == -1)
       {
           alert("Invalid Character(s)\n\nOnly numbers (0-9) and a period are allowed in this field.");
           return false;
       }
   }
   return true;
}

function validateWholeNumber(thisNumber)
{
   var Chars = "0123456789";
   for (var i = 0; i < thisNumber.length; i++)
   {
       if (Chars.indexOf(thisNumber.charAt(i)) == -1)
       {
           alert("Invalid Character(s)\n\nOnly numbers (0-9) are allowed.");
           return false;
       }
   }
   return true;
}

function checkEmail(str) {
	var at = "@";
	var dot = ".";
	var lat = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);

	if (str.indexOf(at)==-1) {
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr){
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr){
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.indexOf(at,(lat + 1)) != -1){
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.substring(lat - 1,lat) == dot || str.substring(lat + 1, lat + 2) == dot){
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.indexOf(dot, (lat + 2)) == -1){
		alert("Please enter a valid email address.");
		return false;
	}

	if (str.indexOf(" ") != -1){
		alert("Please enter a valid email address.");
		return false;
	}

 	return true;
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
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));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function give_via_paypal(itemID, userName, amount) {
  var answer = confirm("Would you like to visit Paypal.com to send " + userName + " the " + formatCurrency(amount) + " that you just pledged?");
  if (answer) {
    $('paypal' + itemID).submit();
  }
}

function give_money(itemID,wishlistID,userName,itemName) {
  //var amount = prompt("How much would you like to pledge\r\nto " + userName + " for " + itemName + "?", "");
  var amount = $F('giveamount' + itemID); 
  if (!isBlank(amount)) {
    if (validateDollarText(amount)) {
      showLoading();
      document.getElementById('paypalamount' + itemID).value = amount;
      var url = domainPath + 'givemoney.php';
      var pars = 'id=' + itemID + '&wishlist=' + wishlistID + '&amount=' + amount;
      give_via_paypal(itemID, userName, amount);
      var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem });
    }
  }
}

function remove_money(itemID,wishlistID,userName,itemName,amount) {
  var questionResponse = confirm('Are you sure you want to remove your pledge of ' + amount + ' from\r\n' + userName + '\'s ' + itemName + '?');
  if (questionResponse) {
    showLoading();
    var url = domainPath + 'removemoney.php';
    var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem});
  }
}

function reloadThisSharedItem(theResponse)
{
  showLoading();
  if (theResponse.responseText != null)
  {
  var responseArray = theResponse.responseText.split("|");
  var url = domainPath + "getshareditem.php?id=" + responseArray[0] + "&wishlist=" + responseArray[1];
  var updateContainer = 'b' + responseArray[0];
  var myAjax = new Ajax.Updater(updateContainer, url, {method: 'get', onComplete:function() { hideLoading(); initLightbox();}});
  } else {
  
  }
}

function gotItem(itemID,wishlistID) {
  showLoading();
  var url = domainPath + 'gotitem.php';
	var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
	var theItem = 'a' + itemID;
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem});
}

function returnItem(itemID,wishlistID) {
	showLoading();
  var url = domainPath + 'returnitem.php';
	var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
	var theItem = 'a' + itemID;
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem});
}

function give_qty(itemID,wishlistID,userName,itemName,qty) {
  //var quantityPrompt = prompt("How many " + itemName + " did you\r\nbuy for " + userName + "?\r\n(" + userName + " still needs " + qty + ")", "1");
  var quantityPrompt = $F('giveamount' + itemID);
  if (!validateWholeNumber(quantityPrompt)) {
    return false;
  }
  if (quantityPrompt > qty) {
    quantityPrompt = qty;
  }
  showLoading();
  var url = domainPath + 'giveqty.php';
	var pars = 'id=' + itemID + '&wishlist=' + wishlistID + '&quantity=' + quantityPrompt;
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem});
}

function remove_qty(itemID,wishlistID) {
  showLoading();
  var url = domainPath + 'removeqty.php';
	var pars = 'id=' + itemID + '&wishlist=' + wishlistID;
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadThisSharedItem});
}

function add_from_tag(select_obj, item_id) {
  var wishlist_id = select_obj.options[select_obj.selectedIndex].value;
  
  if (wishlist_id != "none") {
    var item_name = escape($F('name' + item_id));
    var item_desc = escape($F('desc' + item_id));
    var item_link = escape($F('link' + item_id));
    var item_price = escape($F('price' + item_id));
    var item_tags = escape($F('tags' + item_id));
    var item_image = $F('image' + item_id);
    var item_image_large = $F('image_large' + item_id);
    var add_obj = $('add' + item_id);

    showLoading();
    var url = domainPath + "additem.php";
    var pars = "id=" + wishlist_id + "&form_item_name=" + item_name + "&form_item_desc=" + item_desc + "&form_item_price=" + item_price + "&form_item_rating=&form_item_link=" + item_link + "&form_item_type=item&form_item_tags=" + item_tags + "&form_item_hide_tag=no&form_item_image=" + item_image + "&form_item_image_large=" + item_image_large;
    var updateHTML = "<img src='http://wishfor.it/images/tick.gif' width='16' height='16' border='0' class='action' /> item added";
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete:function() { select_obj.selectedIndex = 0; Element.update('add' + item_id, updateHTML); Element.hide('addform' + item_id); Element.show('item_commands_links' + item_id); hideLoading(); reloadTagCloud(); }});
  }
}

function report_tag(select_obj, item_id) {
  var report_type = select_obj.options[select_obj.selectedIndex].value;
  
  if (report_type != "none") {
    var report_obj = $('report' + item_id);

    showLoading();
    var url = domainPath + "reportitem.php";
    var pars = "id=" + item_id + "&report_type=" + report_type;
    var updateHTML = "<img src='http://wishfor.it/images/tick.gif' width='16' height='16' border='0' class='action' /> reported";
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete:function() { select_obj.selectedIndex = 0; Element.update('report' + item_id, updateHTML); Element.hide('reportform' + item_id); hideLoading(); reloadTagCloud(); }});
  }
}

function find_friend() {
  //var friendEmailPrompt = prompt("Please enter the email address of the\r\ncontact that you would like to find:", "");
  //if (friendEmailPrompt != null) {
  //  if (!isBlank(friendEmailPrompt)) {
  //    if (!checkEmail(friendEmailPrompt)) {
  //      return false;
  //    }
  if ($F('find_contact_email') != null) {
    if (!isBlank($F('find_contact_email'))) {
      if (!checkEmail($F('find_contact_email'))) {
        return false;
      }
      showLoading();
      var url = domainPath + 'findfriend.php';
      //var pars = 'find_wishlist_email=' + friendEmailPrompt;
      var pars = 'find_wishlist_email=' + $F('find_contact_email');
      var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: find_friend_process});
    }
  }
  return false;
}

function find_friend_process(theResponse) {
  if (theResponse.responseText != null) {
    if (theResponse.responseText == "error") {
      alert("Sorry, we cannot find a user with that email address.");
    } else {
      window.location = "http://wishfor.it/users/" + theResponse.responseText;
    }
  }
  hideLoading();
}

function addFriend(userID) {
  showLoading();
  var url = domainPath + "addthisfriend.php";
  var pars = "user_id=" + userID;
  var myAjax = new Ajax.Updater('add_to_friends', url, {method: 'post', parameters: pars, onComplete: hideLoading });
  return false;
}

function addContact(userID) {
  showLoading();
  var url = domainPath + "addthisfriend.php";
  var pars = "user_id=" + userID;
  var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete: reloadFriends });
  return false;
}

function printWindow(){
   bV = parseInt(navigator.appVersion)
   if (bV >= 4) window.print()
}

function getRecentItems(wishlistID, theTags) {
  var thisTag = "";
  if (!isBlank(theTags)) {
    var theTagsArray = theTags.split(" ");
    thisTag = theTagsArray[Math.floor(Math.random()*theTagsArray.length)];
  }
  showLoading();
  var url = domainPath + "getrecentitems.php?wishlist_id=" + wishlistID + "&tag=" + thisTag;
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    var myAjax = new Ajax.Updater('recent_items_container', url, {method: 'get', onComplete:function() { hideLoading(); Effect.BlindDown('recent_container', {duration: .5}); initLightbox(); }});
  } else {
    var myAjax = new Ajax.Updater('recent_items_container', url, {method: 'get', onComplete:function() { hideLoading(); Element.show('recent_container'); initLightbox(); }});
  }
}

function hideRecentItems() {
  if (BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Explorer") {
    Effect.BlindUp('recent_container', {duration: .5})
  } else {
    Element.hide('recent_container');
  }
}

function add_recent_item(wishlist_id, item_id) {
  if (wishlist_id != "" && item_id != "") {
    var item_name = escape($F('name' + item_id));
    var item_desc = escape($F('desc' + item_id));
    var item_link = escape($F('link' + item_id));
    var item_price = escape($F('price' + item_id));
    var item_tags = escape($F('tags' + item_id));
    var item_image = $F('image' + item_id);
    var item_image_large = $F('image_large' + item_id);
    var add_obj = $('add' + item_id);

    showLoading();
    var url = domainPath + "additem.php";
    var updateHTML = "<img src='http://wishfor.it/images/tick.gif' width='16' height='16' border='0' class='action' /> item added";
    var pars = "id=" + wishlist_id + "&form_item_name=" + item_name + "&form_item_desc=" + item_desc + "&form_item_price=" + item_price + "&form_item_rating=&form_item_link=" + item_link + "&form_item_type=item&form_item_tags=" + item_tags + "&form_item_hide_tag=no&form_item_image=" + item_image + "&form_item_image_large=" + item_image_large;
    var myAjax = new Ajax.Request(url, {method: 'post', parameters: pars, onComplete:function() { Element.update('add' + item_id, updateHTML); reloadItems($F('id')); hideLoading(); reloadTagCloud(); initLightbox(); }});
  }
}

function widget_generate_code() {
    var show_title = "0";
    if (document.getElementById('widget_show_title').checked) {
        show_title = "1";
    }

    var show_images = "0";
    if (document.getElementById('widget_show_images').checked) {
        show_images = "1";
    }

        var show_desc = "0";
    if (document.getElementById('widget_show_desc').checked) {
        show_desc = "1";
    }

    var show_extra = "0";
    if (document.getElementById('widget_show_extra').checked) {
        show_extra = "1";
    }
    
    var show_footer = "0";
    if (document.getElementById('widget_show_footer').checked) {
        show_footer = "1";
    }
    var widget_width = document.getElementById('widget_width').value;

    var widget_code_start = "\u003cscript type=\"text/javascript\" src=\"http://wishfor.it/widget?";
    var widget_code_end = "\"\u003e\u003c/script\u003e";
    var widget_user = document.getElementById('widget_user').value;
    var widget_wishlist = document.getElementById('widget_wishlist').options[document.getElementById('widget_wishlist').selectedIndex].value;
    
    document.getElementById('widget_code').value = widget_code_start + "uid=" + widget_user + "&wid=" + widget_wishlist + "&t=" + show_title + "&i=" + show_images + "&d=" + show_desc + "&e=" + show_extra + "&f=" + show_footer + "&w=" + widget_width + widget_code_end;
    
    var iframe = document.getElementById('widget_preview');
    var iframeDoc;
    if (iframe.contentDocument) {
        iframeDoc = iframe.contentDocument;
    } else if (iframe.contentWindow) {
        iframeDoc = iframe.contentWindow.document;
    } else if (window.frames[iframe.name]) {
        iframeDoc = window.frames[iframe.name].document;
    }
    iframeDoc.location.href = "http://wishfor.it/js_widget_preview.php?uid=" + widget_user + "&wid=" + widget_wishlist + "&t=" + show_title + "&i=" + show_images + "&d=" + show_desc + "&e=" + show_extra + "&f=" + show_footer + "&w=" + widget_width;
    //iframeDoc.open();
    //iframeDoc.clear();
    //iframeDoc.write('<html><body>');
    //iframeDoc.write("<script type=\"text/javascript\" src=\"http://wishfor.it/widget?uid=39767539415460220041250&wid=44563018316092120060238&t=0&i=1&d=1&e=1&f=1&w=0\"></script>");
    //iframeDoc.write('</body></html>');
    //iframeDoc.close();
}