var skipNextAdRefresh = false;
function changeContent(content, keywords, track_path) {
	if (content == null) {content = "Default"}
	if (track_path == null) {track_path = "default"}
	$(window).scrollTop(0);
	$('#content_container').html(content);
	pageTracker._trackPageview(track_path);
	if (keywords != null) {
	  if (skipNextAdRefresh) {
	    skipNextAdRefresh = false;
	  } else {
			if (keywords.indexOf("<") != -1) {keywords = "";}
		  reloadAds(keywords);
	  }
	}
}

function openTab(tab_name, for_admin) {
  if (for_admin == null) {for_admin = false};
  if (for_admin) {
    path = "/tab/admin_content";
  } else {
    path = '/tab/content';
  }
  $.getJSON(path, {tab_name: tab_name}, function(data) {
    changeContent(data.content, data.keywords, "/tab/"+tab_name);
  });
}

function openTemplate(template_name) {
  $.getJSON("/tab/template", {template_name: template_name}, function(data) {
    changeContent(data.content, data.keywords, "/template/"+template_name);
  })
}

function showType(type_id, page, order, direction) {
  if (page == null) {page = 1}
  data = null;
  if (order != null && direction != null) {
    data = {type_id: type_id, page: page, order: order, direction: direction};
  } else {
    data = {type_id: type_id, page: page};
  }
  $.getJSON('/tab/show_type', data, function(data) {
    changeContent(data.content, data.keywords, "show_type/" + toyTypeHash[type_id].name);
  })
}

function sortType(type_id, page) {
  order = $('#sort_order option[selected]').val();
  direction = $('#sort_direction option[selected]').val();
  showType(type_id, page, order, direction);
}

function showCategory(type_id, cat_id, page, order, direction) {
  if (page == null) {page = 1}
  data = null;
  if (order != null && direction != null) {
    data = {type_id: type_id, cat_id: cat_id, page: page, order: order, direction: direction};
  } else {
    data = {type_id: type_id, cat_id: cat_id, page: page};
  }
  $.getJSON('/tab/show_category', data, function(data) {
		cat = categoryHash[cat_id];
    changeContent(data.content, data.keywords, "show_category/" + toyTypeHash[type_id].name + "/" + (cat.isSub ? cat.parentName : cat.name));
  })
}

function sortCategory(type_id, cat_id, page) {
  order = $('#sort_order option[selected]').val();
  direction = $('#sort_direction option[selected]').val();
  showCategory(type_id, cat_id, page, order, direction);
}

function showSubCategory(type_id, cat_id, subcat_id, page, order, direction) {
  if (page == null) {page = 1}
  data = null;
  if (order != null && direction != null) {
    data = {type_id: type_id, cat_id: cat_id, subcat_id: subcat_id, page: page, order: order, direction: direction};
  } else {
    data = {type_id: type_id, cat_id: cat_id, subcat_id: subcat_id, page: page};
  }
  $.getJSON('/tab/show_sub_category', data, function(data) {
		cat = categoryHash[cat_id];
		subcat = categoryHash[subcat_id];
    changeContent(data.content, data.keywords, "show_subcategory/" + toyTypeHash[type_id].name + "/" + (cat.isSub ? cat.parentName : cat.name) + "/" + subcat.name);
  })
}

function sortSubCategory(type_id, cat_id, subcat_id, page) {
  order = $('#sort_order option[selected]').val();
  direction = $('#sort_direction option[selected]').val();
  showSubCategory(type_id, cat_id, subcat_id, page, order, direction);
}

function showByIds(id_str, pseudo_cat, order, direction) {
	if (id_str == null) {return false;}
	if (pseudo_cat == null) {pseudo_cat = "Featured Layouts";}
	if (order == null) {order = "date"}
	if (direction == null) {direction = "desc"}
	id_str = id_str.replace(" ","");
	$.getJSON('/tab/show_by_ids', {id_str:id_str, cat: pseudo_cat, order: order, direction: direction}, function(data) {
		
		changeContent(data.content, data.keywords, "show_by_ids/" + pseudo_cat.toLowerCase().replace(" ", "_") + "/" + id_str);
	})
}

// Tab reordering
function toggleReorder(el) {
  if ($(el).attr('reorder') == "false") {
    $(el).text('Lock Tabs');
    $('#reorder_success').html('');
    $('#reorder_error').html('');
    $(el).attr('reorder', "true");
    $('#nav_top ul').sortable('enable');
  } else {
    $(el).text('Reorder Tabs');
    $(el).attr('reorder', "false");
    $('#nav_top ul').sortable('disable');
    saveTabOrder($('#nav_top ul'));
  }
}

function saveTabOrder(sortable) {
  order_arr = sortable.sortable('toArray');
  $.postJSON('/tab/save_order', {order: order_arr.toString()}, function(data) {
    if (data.success) {
      $('#reorder_success').html("Tab order saved! : [" + data.order + "]");
    } else {      
      $('#reorder_error').html(data.error);
    }
  })
}

// New tabs
function saveNewTab() {
  tab_name = $('#tab_name').val();
  tab_pretty_name = $('#tab_pretty_name').val();
  tab_css_class = $('#tab_css_class').val();
  if (tab_css_class == null) {tab_css_class = ""};
  tab_partial = $('#tab_partial').val();
	if (tab_name != "" &&
			tab_pretty_name != "" &&
			tab_partial != "") {
		data = { tab_name: tab_name,
						 tab_pretty_name: tab_pretty_name,
						 tab_css_class: tab_css_class,
						 tab_partial: tab_partial};
		$.postJSON("/tab/save_new_tab", data, function(data) {
			if (data.success) {
				$('#success').text('Tab saved!');
			} else {
				$('#error').text(formatErrors('Tab didn\'t save: ', data.error));
			}
		})
	} else {
		error_msg = "Tab didn't save: <br /><ul>";
		error_msg +=
			((tab_name == "") ? "<li>Name can't be blank</li>" : "") +
			((tab_pretty_name == "") ? "<li>Pretty Name can't be blank</li>" : "") +
			((tab_partial == "") ? "<li>Template to Render can't be blank</li>" : "");
		error_msg += "</ul>";
		$('#error').html(error_msg);
	}
}

// Edit tabs
function selectTabForEditing(tab_id) {
  $.getJSON('tab/select_tab_for_edit', {tab_id: tab_id}, function(data) {
    if (data.success) {
      tab = data.tab;
      $('#tab_edit_name').val(tab.name);
      $('#tab_edit_pretty_name').val(tab.pretty_name);
      $('#tab_edit_css_class').val(tab.css_class);
      $('#tab_edit_partial').val(tab.partial);
    } else {
      // TODO
    }
  });
}

function saveEditTab() {
  tab_name = $('#tab_edit_name').val();
  tab_id = $('#tab_name_select').val();
  tab_pretty_name = $('#tab_edit_pretty_name').val();
	tab_css_class = $('#tab_edit_css_class').val();
	tab_partial = $('#tab_edit_partial').val();
	if (tab_name != "" &&
			tab_id != "" &&
			tab_pretty_name != "" &&
      tab_partial != "") {
		data = { tab_name: tab_name,
						 tab_id: tab_id,
						 tab_pretty_name: tab_pretty_name,
						 tab_css_class: tab_css_class,
						 tab_partial: tab_partial };
		$.postJSON("/tab/update_tab", data, function(data) {
			if (data.success) {
				$('#edit_success').text('Tab saved!');
			} else {
				$('#edit_error').text(formatErrors('Tab didn\'t save: ', data.error));
			}
		})
	} else {
		error_msg = "Tab didn't save: <br /><ul>";
		error_msg +=
			((tab_name == "") ? "<li>Name can't be blank</li>" : "") +
			((tab_id == "") ? "<li>ID can't be blank, why are you even messing with it?</li>" : "") +
			((tab_pretty_name == "") ? "<li>Pretty Name can't be blank</li>" : "") +
			((tab_partial == "") ? "<li>Template to Render can't be blank</li>" : "");
		error_msg += "</ul>";
		$('#error').html(error_msg);
	}
}

function confirmDeleteTab() {
  tab_id = $('#tab_name_select').val();
  tab_name = $('#tab_option_'+tab_id).text();
  if (confirm("Really delete tab : '" + tab_name + "'?")) {
    deleteTab(tab_id);
  }
}

function deleteTab(tab_id) {
  $.postJSON('/tab/delete_tab', {tab_id: tab_id}, function(data) {
    if (data.success) {
      $('#edit_success').html(data.content);
      window.location.reload();
    }
  });
}