jQuery(document).ready(
	function(){

/*
jQuery('form').submit(function() {
jQuery.get(this.action, jQuery(this).find('input').serialize(),
function(data)
{
alert(data);
});
return false;
});
*/
		//jQuery('div.module-titlebar h2').live('click', toggleDropDown);
    //jQuery("ul.rss-accordion").accordion({event:'mouseover'});

		jQuery('div.bottom_left_col, div.bottom_center_col, div.bottom_right_col').equalizeCols();
		//jQuery('div.site-sidebar, div.site-main').equalizeCols();
		jQuery('a[rel="external"]').live('click', externalLink);
		jQuery('a#toggle-mode').live('click', toggleMode);
		jQuery('div.minmax').live('click', toggleContent);
		jQuery('div.collapse a').live('click', toggleBox);
		jQuery('a.nav-toggle').live('click', toggleActions);
		jQuery('div.edit-options a').live('click', toggleEditOptions);

		//jQuery('form.site-form').live('submit', pageReload);
		jQuery('a.make-readable').live('click', toggleReadable);
		jQuery('a.switch-columns').live('click', toggleColumns);
		jQuery('img.toggle').live('click', eventDelegation);
		jQuery('select#nav-lookup').live('change', navLookup);
		jQuery('input.swap-focus').bind('blur', checkBlur);
		jQuery('input.swap-focus').bind('focus', checkFocus);
		jQuery('input.toggle-select-column').live('click', togglePermissionColumns);
		jQuery('input.toggle-select-row').live('click', togglePermissionRows);
		if (jQuery('input.datepicker').length) {
		  jQuery.datepicker.setDefaults({changeMonth: true, changeYear: true, showOn: 'both', buttonImageOnly: true, buttonImage: '/wp-content/plugins/wp-apps/includes/images/icons/calendar.png', buttonText: 'Calendar'});
    }
		if (jQuery('div#map_canvas').length) {
      map = new GMap2(document.getElementById("map_canvas"));
      map.setUIToDefault();
    }
		jQuery('div.site-main a.close-window').live('click', closeWindow);

		jQuery('input#people_new_first_name').live('keyup', getDisplayName);
		jQuery('input#people_new_middle_name').live('keyup', getDisplayName);
		jQuery('input#people_new_maiden_name').live('keyup', getDisplayName);
		jQuery('input#people_new_last_name').live('keyup', getDisplayName);

		jQuery('a.swatch').live('click', colorSwatch);
		jQuery('a.close-window').live('click', closeWindow);
		jQuery('a.open-form').live('click', openForm);
		jQuery('a.close-form').live('click', closeForm);
		jQuery('form.site-form').live('submit', saveForm);
		//jQuery('button.reload').live('click', reloadSection);
		jQuery('a.reloadup').live('click', reloadup);
		
    jQuery("li.page_item a,li.cat-item a").each(function(){
    	if(jQuery(this).next('ul').length){
    		jQuery(this).before('<a class="toggle_list expandable" href="#">&nbsp;&nbsp;&nbsp;</a>');
    	}
    });
    jQuery("li.page_item > ul,li.cat-item > ul").addClass('hidden');
		jQuery('a.toggle_list').live('click', toogleList);
	}
);

var toogleList = function(e) {
	var targetContent = jQuery('ul:first', this.parentNode);

	if (targetContent.css('display') == 'none') {
    jQuery(this).addClass('collapse');
		targetContent.slideDown();
	} else {
    jQuery(this).removeClass('collapse');
		targetContent.slideUp();
	}

  this.blur();
	e.preventDefault();
  return false;
}

var pageReload = function(e) {
	var formObject = jQuery(this);
	var formAction = formObject.attr('action');

	if (formObject.hasClass("add-in-place")) {
		var wrapper = "div#" + jQuery(this).attr('rel');
    jQuery.post(formAction,jQuery(formObject).serialize(),function(responseText){jQuery(wrapper).html(responseText);});
		tb_remove();
	} else if (jQuery(this).parents().hasClass("module-wrapper")) {
		var wrapper = "div#" + jQuery(this).attr('rel') + "-wrapper";
    jQuery.post(formAction,jQuery(formObject).serialize(),function(responseText){jQuery(wrapper).html(responseText);});
	} else {
		jQuery.post(formAction,jQuery(formObject).serialize());
		window.location.reload();
	}

	e.preventDefault();
	return false;
}

var reloadup = function(e) {
  $("add_media").href = "/wp-admin/media-upload.php";
  /*$("add_media").location.reload();*/
  $("add_media").src = "/wp-admin/media-upload.php";
  window.frames["add_media"].window.location.reload(true);
	return false;
}

var togglePermissionColumns = function(e) {
	var checked_status = this.checked;
	var checked_class = 'input.'+this.id;
	jQuery(checked_class).each(function(){
		this.checked = checked_status;
	});
}

var togglePermissionRows = function(e) {
	var checked_status = this.checked;
	var checked_class = 'input.'+this.id;
	jQuery(checked_class).each(function(){
		this.checked = checked_status;
	});
}

var externalLink = function(e) {
	window.open( jQuery(this).attr('href') );
  return false;
}

var openForm = function(e) {
  // edit-module
  // data-people-view
	var wrapper = jQuery('div#' + this.rel);
	wrapper.load(this.href).slideDown('slow');
  return false;
}

var closeForm = function(e) {
	var wrapper = jQuery('div#' + this.rel);
	wrapper.html('').slideUp('slow');
  return false;
}

var saveForm = function(e) {
	var wrapper = jQuery('div#' + this.rel);
	var formObject = jQuery(this).parents('form:first');
	var formAction = formObject.attr('action');
  jQuery.post(formAction,jQuery(formObject).serialize(),function(responseText){wrapper.html(responseText);});
	event.preventDefault();
	return false;
}

var toggleMode = function(e) {
	jQuery('div.show-edit').slideToggle(1000, equalizeMe);
	jQuery('div.hide-edit').slideToggle();
	
	if(jQuery(this).html()=="Edit Mode"){
		jQuery(this).html("Preview Mode");
	} else {
		jQuery(this).html("Edit Mode");
	}

	jQuery(this).blur();
	return false;
}

var equalizeMe = function(e) {
	jQuery('div.bottom_left_col, div.bottom_center_col, div.bottom_right_col').equalizeCols();
}

var toggleDropDown = function(e) {
	jQuery(this).parent().append('<select><option>select something</option></select>').end().hide();
}

var navLookup = function(e) {
	window.location.href = this[this.selectedIndex].value;
	//var wrapper = jQuery('div#' + jQuery(this).attr('rel') + '-wrapper');
	//wrapper.load(this[this.selectedIndex].value + jQuery('div#selected-date').html());
}

var toggleReadable = function(e) {
	jQuery(this).blur();
  var currentGrid = 0;
	var gridObject = jQuery(this).parents('div.site-main');
	var gridClass = gridObject.attr('class').split(' ');
	var gridArray = ["grid-1","grid-2","grid-3","grid-4","grid-5","grid-6","grid-7","grid-8","grid-9","grid-10","grid-12","grid-13","grid-14","grid-15","grid-16"];
	jQuery.each(gridClass, function(index, item){
    if(gridIndex = jQuery.inArray(item, gridArray)){
      if(gridIndex >= 0){
        currentGrid = gridIndex;
      }
    }
  });

	if(jQuery("div.site-sidebar").css("display") == "none") {
	  jQuery("div.site-sidebar").css("display", "block");
	  jQuery("img.wp-post-image").css("display", "block");
	  jQuery("div.readable-area p").css("font-size", "1.0em");
	  jQuery(this).text("Zoom In");
	  if(currentGrid) {
		  gridObject.addClass(gridArray[(currentGrid-2)]).removeClass(gridArray[currentGrid]);
    }
	} else {
	  jQuery("div.site-sidebar").css("display", "none");
	  jQuery("img.wp-post-image").css("display", "none");
	  jQuery("div.readable-area p").css("font-size", "1.3em");
	  jQuery(this).text("Zoom Out");
	  if(currentGrid) {
		  gridObject.addClass(gridArray[(currentGrid+2)]).removeClass(gridArray[currentGrid]);
    }
	}
	return false;
}

var toggleColumns = function(e) {
	if(jQuery("div.site-main").css("float") == "left")
	{
	  jQuery("div.site-main").css("float", "right");
	  jQuery("div.site-sidebar").css("float", "left");
	  jQuery("a.switch-columns").html("&gt;");
	}
	else
	{
	  jQuery("div.site-main").css("float", "left");
	  jQuery("div.site-sidebar").css("float", "right");
	  jQuery("a.switch-columns").html("&lt;");
	}
}

var toggleActions = function(e) {
	jQuery(this).blur();
	var containerX = jQuery(this.parentNode);
	var targetContent = jQuery('ul', this.parentNode);
	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(300, updateKickColumns);
		containerX.addClass('close').removeClass('open');
	} else {
		targetContent.slideUp(300);
		containerX.addClass('open').removeClass('close');
	}
	
	return false;
};

var addInPlace = function(e) {
		var wrapper = jQuery('div#' + this.rel);
		wrapper.load(this.href);
		if (wrapper.css('display') == 'none') {
			wrapper.show('slow', updateKickColumns);
		}

		var formObject = jQuery(this).parents('form:first');
		var formAction = formObject.attr('action');

		if (jQuery(this).parents().hasClass("module-wrapper")) {
			var wrapper = "div#" + jQuery(this).parents('form:first').attr('rel') + "-wrapper";
      jQuery.post(formAction,jQuery(formObject).serialize(),function(responseText){jQuery(wrapper).html(responseText);});
			tb_remove();
		} else {
			jQuery.post(formAction,jQuery(formObject).serialize());
			window.location.reload();
		}

		event.preventDefault();
		return false;
}

var updateKickColumns = function(e) {
	//jQuery('div.site-sidebar, div.site-main').equalizeCols();
}

var toggleContent = function(e) {
	// jQuery('div').parents('div#content').append('I have a div inside me!');
	var targetContent = jQuery('div.module-wrapper', this.parentNode.parentNode);
	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(300, updateKickColumns);
		jQuery(this).addClass('minmax-opened').removeClass('minmax-closed');
		setCookie('state_'+jQuery(this).attr('title'),'opened',365);
	} else {
		targetContent.slideUp(300);
		jQuery(this).addClass('minmax-closed').removeClass('minmax-opened');
		setCookie('state_'+jQuery(this).attr('title'),'closed',365);
	}
	
	
	jQuery(this).toggle(function(){
	  jQuery(this).addClass("selected");
	},function(){
	  jQuery(this).removeClass("selected");
	});

	return false;
};

var toggleBox = function(e)
{
	var parentContainer = this.parentNode.parentNode.parentNode;
	var targetContent = jQuery('div.module-wrapper', this.parentNode.parentNode.parentNode);

	if (targetContent.css('display') == 'none') {
		targetContent.slideDown(300);
		jQuery(parentContainer).removeClass('box_collapsed');
		setCookie('state_'+jQuery(this).attr('title'),'opened',365);
	} else {
		targetContent.slideUp(300);
		jQuery(parentContainer).addClass('box_collapsed');
		setCookie('state_'+jQuery(this).attr('title'),'closed',365);
	}
	this.blur();
	return false;
};

var toggleEditOptions = function(e)
{
	var targetContent = jQuery('div.edit-module', this.parentNode.parentNode.parentNode);
  targetContent.slideToggle('slow');
	return false;
};

var eventDelegation = function(e) {
	var hijaxElement = jQuery(e.target);

	if (hijaxElement.is("img.toggle"))
	{
	  var targetSlideout = jQuery('div.toggle-slideout', this.parentNode.parentNode.parentNode);
	  targetSlideout.slideToggle('slow');
		return false;
	}
};

var getDisplayName = function(e) {
	var firstName = jQuery('input#people_new_first_name').val() + ' ';
	var middleInitial = (jQuery("input#people_new_middle_name").length > 0 && jQuery("input#people_new_middle_name").val()!='')?jQuery('input#people_new_middle_name').val().slice(0,1) + '. ':'';
	var lastName = jQuery('input#people_new_last_name').val();
	var maidenName = (jQuery("input#people_new_maiden_name").length > 0 && jQuery("input#people_new_maiden_name").val()!='')?(' (' + jQuery("input#people_new_maiden_name").val() + ')'):'';
	jQuery('input#people_new_post_title').val(firstName + middleInitial + lastName + maidenName);
};

// Creates a marker whose info window displays the letter corresponding
// to the given index.
var createMarker = function(latitude, longitude, index, message) {
  point = new GLatLng(latitude, longitude);

  // Add the point to the bounds array for calculating the
  // zoom and center when all addresses have been added.
  bounds.extend(point);

  // Create a lettered icon for this point using our icon class
  var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var letteredIcon = new GIcon(baseIcon);
  letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";

  // Set up our GMarkerOptions object
  markerOptions = { icon:letteredIcon };
  var marker = new GMarker(point, markerOptions);

  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(message);
  });
  //point.marker
	jQuery('a.map-label-'+letter).live('click', function(){GEvent.trigger(marker,'click');});

  return marker;
};

var colorSwatch = function(e) {
  if(this.rel) {
		newBackground = 'transparent url(/images/bg' + jQuery(this).text() + '.jpg) repeat 50% 0';
  } else {
  	newBackground = jQuery(this).attr('title');
	}
	jQuery('div.tier-1').css('background-color', newBackground);
	jQuery('div.color-swatchs input').val(newBackground);
	this.blur();
	return false;
};

var showSection = function(e){
	if(this.rel) {
		var wrapper = jQuery('div#' + this.rel);
		wrapper.load(this.href);
		if (wrapper.css('display') == 'none') {
			wrapper.show('slow', updateKickColumns);
		}
		e.preventDefault();
	}
};

var closeWindow = function(e){
	tb_remove();
	e.preventDefault();
	return false;
};

var reloadSection = function(e){
	var formObject = jQuery(this).parents('form:first');
	var formAction = formObject.attr('action');

	if (jQuery(this).parents().hasClass("module-wrapper")) {
		var wrapper = "div#" + jQuery(this).parents('form:first').attr('rel') + "-wrapper";
		alert(wrapper);
    jQuery.post(formAction,jQuery(formObject).serialize(),function(responseText){jQuery(wrapper).html(responseText);});
		tb_remove();
	} else {
		jQuery.post(formAction,jQuery(formObject).serialize());
		window.location.reload();
	}

	e.preventDefault();
	return false;
};

jQuery.fn.equalizeCols = function(){
  var height = 300;
  return this.css("height","auto").each(function(){
    height = Math.max( height, this.offsetHeight );
  }).css("height", height);
};

jQuery.fn.createSortable = function(options) {
	this.sortable({
		items: options.items,
		handle: options.handle,
		cursor: 'move',
		//cursorAt: { top: 2, left: 2 },
		//opacity: 0.8,
		//helper: 'clone',
		appendTo: 'body',
		//placeholder: 'clone',
		//placeholder: 'placeholder',
		connectWith: this,
		start: sortableStart,
		change: sortableChange,
		update: options.callback
	});
};

jQuery.fn.log = function(msg) {
	if( console ) {
		console.log("%s: %o", msg, this);
		return this;
	}
	else
	{
		alert(msg);
	}
};

// sample use
// jQuery(root).find('li.source > input:checkbox').log("sources to uncheck").removeAttr("checked");

var checkBlur = function(e) {
	if(jQuery(this).val()=="" || jQuery(this).val()==null) {
		if(jQuery(this).attr('id')=='pass') {
		  jQuery('input#pass').css('display','none');
		  jQuery('input#fake-pass').css('display','');
		} else {
			jQuery(this).val(jQuery(this).attr('title'));
		}
	}
}

var checkFocus = function(e) {
	if(jQuery(this).val()==jQuery(this).attr('title')) {
		if(jQuery(this).attr('id')=='fake-pass') {
		  jQuery('input#fake-pass').css('display','none');
		  jQuery('input#pass').css('display','').focus();
		} else {
			jQuery(this).val('');
		}
	}
}

var getTwitter = function(data){
  jQuery('#layout').append('<table><tr><th scope="col">Name</th><th scope="col">Project</th><th scope="col">Completed</th></tr></table><p>Updates from: <strong></strong></p>');
  jQuery.each(data, function(index, item){
      if (item.text.match(/^\~\d?\d% of /)) {
        jQuery('#layout table').append('<tr><th scope="col"><img src="'+ item.user.profile_image_url + '" alt="" >' + item.user.name + '</th><td>' + item.text.substring(8, item.text.lastIndexOf('done'))+ "</td><td>"+ item.text.substr(1, 2) +"%</td></tr>");
        jQuery('#layout p strong').append(item.user.name+', ');
      }
    });
}

var showJSON = function(json){
	jQuery('#layout').append('<table style="margin:1px;background-color:#000;padding:5px;"><tr><th style="background-color:#ccc;padding:5px;">First Name</th><th style="background-color:#ccc;padding:5px;">Last Name</th><th style="background-color:#ccc;padding:5px;">Display Name</th></tr></table>');
  jQuery.each(json, function(index, item){
        jQuery('#layout table').append('<tr><td style="background-color:#fff;padding:5px;">' + item.first_name + '</td><td style="background-color:#fff;padding:5px;">' + item.last_name + '</td><td style="background-color:#fff;padding:5px;">' + item.post_title + '</td></tr>');
    });
}

var getRSS = function(feed_url, feed_column){
  jQuery.getFeed({
    url: feed_url,
    success: function(feed) {
      jQuery('#cell-'+feed_column).append('<h2>'
        + '<a href="'
        + feed.link
        + '">'
        + feed.title
        + '</a>'
        + '</h2>');

      var html = '';

      for(var i = 0; i < feed.items.length && i < 5; i++) {
        var item = feed.items[i];

        html += '<h3>'
          + '<a href="'
          + item.link
          + '">'
          + item.title
          + '</a>'
          + '</h3>';

        html += '<div class="updated">'
          + item.updated
          + '</div>';

        html += '<div>'
          + item.description
          + '</div>';
      }
      jQuery('#cell-'+feed_column).append(html);
    }
  });
};

var sortableStart = function(e, ui){
	ui.helper.css("width", ui.item.width());
};

var sortableChange = function(e, ui){
	if(ui.sender){
		var w = ui.element.width();
		ui.placeholder.width(w);
		ui.helper.css("width",ui.element.children().width());
	}
};

var sortableUpdate = function(e, ui){
	console.log(jQuery(this).sortable('serialize'));
};

var setCookie = function(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString());
}

/*
var setCookie = function(name,value,days) {
  var expires = "";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
};
*/

var getCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
};

var deleteCookie = function(name) {
	setCookie(name,"",-1);
};