var $head;
var uioptions;
var uioptions_label;
var customstyle;
var csspresets_col;
var csspresets = new Array();
var ie6 = false;
var customstyle_ie;

var commentform;
var commentemail;
var commentgravatar;

var $page;
var $muestra;
var $customization;
var $customization_inner;
var $ui_bgc, $ui_bgi, $ui_bgr_x, $ui_bgr_y, $ui_bga_f, $ui_bga_s, $ui_bgp_x, $ui_bgp_y, $ui_r;
var colorpicker_on = false;
var colorpicker;
var $customization_link;
var $customization_input;

String.prototype.estaVacia = function() {return (this.replace(/\s|\t|\n|\r/g,'') == '');}

function initBlogrollShowHide(num) {
	var $ul = jQuery('ul.blogroll',jQuery('#list_bookmarks')).eq(0);
	if ($ul.length) {
		var $li = $ul.find('li');
		if ($li.length<=num) {return false;}
		var $hidden = new Array();
		$li.each(function(i,n) {if (i>num) {n.style.display='none'; $hidden.push(jQuery(n));}})
		$hidden = jQuery($hidden);
		jQuery('<li class="showhide"><a href="#">Ver '+($li.length-num)+' más</a></li>')
			.appendTo($ul)
			.click(function(e) {
				e.preventDefault();
				$li.show();
				jQuery(e.target).remove();
				/*//var $hidden = jQuery('#linkcat-6 ul.xoxo li').filter(function() { return this.style.display == 'none';});
				var hl = $hidden.length;

				function showOption(pos) {
				    if (pos>=hl) { return false; }
				    $hidden.eq(pos).fadeIn(250);
				    setTimeout(function() {showOption(pos+1)}, 250);
				}
				showOption(0);*/
				
				return false;
			    });
	}
}

function makePageBG() {
	return ({
		'background-color': $ui_bgc.val(),
		'background-image': ($ui_bgi.val().estaVacia() ? 'none' : 'url('+$ui_bgi.val()+')'),
		'background-repeat': ((!$ui_bgr_x[0].checked)&&(!$ui_bgr_y[0].checked)) ? 'no-repeat' :  ( (($ui_bgr_x[0].checked)&&($ui_bgr_y[0].checked)) ? 'repeat' : ($ui_bgr_x[0].checked ? 'repeat-x' : '') + ' ' + ($ui_bgr_y[0].checked ? 'repeat-y' : '') ),
		'background-attachment': $ui_bga_f[0].checked ? 'fixed' : 'scroll',
		'background-position': $ui_bgp_x.val() + ' ' + $ui_bgp_y.val()
	});
}

function makeCustomLink() {
	var loc = document.location;
	return loc.protocol+'//'+loc.hostname+loc.pathname+'?'+jQuery('#uioptions_form').serialize();	
}

function updatePageBG() {
	var pbg = makePageBG();
	$page.css(pbg);
	$muestra.css('background-color',pbg['background-color']);
	$customization_link.attr('href',makeCustomLink());
}

function saveCustomStyle() {
	customstyle = makePageBG();
	jQuery.cookie(
		'tdbcustom',
		"{"+
		"'background-color':'"+customstyle['background-color']+"',"+
		"'background-image':'"+customstyle['background-image']+"',"+
		"'background-repeat':'"+customstyle['background-repeat']+"',"+
		"'background-attachment':'"+customstyle['background-attachment']+"',"+
		"'background-position':'"+customstyle['background-position']+"'"+
		"}",
		{path:'/',expires:365}
	);
}

function initCustomOptions() {
	$customization = jQuery('#uioptions_customization');
	if ($customization.length) {
		$muestra = jQuery('#uioptions_customc');
		$customization.css('height',0);
		$customization_inner = jQuery('#uioptions_customization_inner');
		$ui_bgc = jQuery('#uioptions_background-color');
		$ui_bgi = jQuery('#uioptions_background-image');
		$ui_bgi.click(function() {this.select();})
		$ui_bgr_x = jQuery('#uioptions_background-repeat-x');
		$ui_bgr_y = jQuery('#uioptions_background-repeat-y');
		$ui_bga_f = jQuery('#uioptions_background-attachment-fixed');
		$ui_bga_s = jQuery('#uioptions_background-attachment-scroll');
		$ui_bgp_x = jQuery('#uioptions_background-position-x');;
		$ui_bgp_y = jQuery('#uioptions_background-position-y');
		$ui_r = jQuery('#uioptions_rememberlink');
		$customization_link = jQuery('#uioptions_customlink');
		$customization_input = jQuery('#uioptions_custominput');

		jQuery('#uioptions_showcolorpicker').click(function() {
			if (colorpicker_on) {return false;}
			jQuery('#colorpicker').animate({'height':195},250);
			return false;
		});

		colorpicker = jQuery.farbtastic('#colorpicker', function(color) {
			$muestra.add($page).css('background-color',color);
			$ui_bgc.val(color);
		});
		colorpicker.setColor($ui_bgc.val());

		$ui_bgc.keyup(function() {colorpicker.setColor(this.value);});

		$ui_bgc.add($ui_bgi).add($ui_bgp_x).add($ui_bgp_y).keyup(updatePageBG);
		$ui_bgr_x.add($ui_bgr_y).add($ui_bga_f).add($ui_bga_s).click(updatePageBG);
		updatePageBG();

		jQuery('#uioptions_rememberlink').click(function() {
			saveCustomStyle();
			$customization.animate({'height':0},250,'linear',function() {alert('Datos salvados');});
			return false;
		});

		var cvalues = jQuery.cookie('tdbcustom');
		if (cvalues) {
			cvalues = eval('('+cvalues+')');
			$ui_bgc.val(cvalues['background-color']);
			$muestra.css('background-color',cvalues['background-color']);
			colorpicker.setColor(cvalues['background-color']);
			if (cvalues['background-image']) {
				$ui_bgi.val(cvalues['background-image'].match(/^url\((.*)\)|none/).pop());
			}
			$ui_bgr_x[0].checked = ((cvalues['background-repeat']=='repeat')||(cvalues['background-repeat']=='repeat-x'));
			$ui_bgr_y[0].checked = ((cvalues['background-repeat']=='repeat')||(cvalues['background-repeat']=='repeat-y'));
			$ui_bga_f[0].checked = (cvalues['background-attachment']=='fixed');
			$ui_bga_s[0].checked = (cvalues['background-attachment']=='scroll');
			if (cvalues['background-position']) {
				var pos = cvalues['background-position'].replace(/\+/,' ').split(' ');
				$ui_bgp_x.val(pos[0]);
				$ui_bgp_y.val(pos[1]);
			}
		}
	}
}


function setStyles() {
	customstyle = ({});
	var presets = new Array();
	
	$page.attr('style',null);
	jQuery.each(csspresets_col,function(i,n) {n.disabled=true;});

	var inps = jQuery('input.uioption_input',jQuery('#uioptions_options'));
	jQuery.each(
		inps,
		function(i,n) {
			if (n.checked) {
				if (csspresets[n.title]) {
					csspresets[n.title].disabled=false;
				} else {
					updatePageBG();
				}
				presets.push(n.title);
			}
		}	
	);
	if (presets.length) {
		jQuery.cookie('tdbpresets',presets.join(','),{path:'/',expires:365});
	}
	return false;
}

function inputClick(input, eventObject) {
		if (eventObject.target.nodeName == 'TD') {
			input.checked = (input.type == 'radio') ? true : !input.checked;
		}
		jQuery(input).blur();
		if (input.title=='custom') {
			$customization.animate(
				{'height':$customization_inner.outerHeight()},
				250,
				'linear',
				function() {
					$customization.attr('style',null);
					setStyles();
				}
			);
		} else {
			setStyles();
			if ($customization.outerHeight()>0) {$customization.animate({'height':0},250);}
		}

}

function initUIoptions() {
	customstyle = jQuery('#customstyle');
	customstyle_ie = jQuery('#customstyle_ie');
	uioptions = jQuery('#uioptions');
	uioptions_label = jQuery('#uioptions_label');
	uioptions.css('display','block');
	csspresets_col = jQuery('.preset',jQuery('head'));
	jQuery.each( csspresets_col, function(i,n) {csspresets[n.title]=n;}	);
	jQuery('input.uioption_input',jQuery('#uioptions_options')).click(function(eo) {
		inputClick(this, eo);
	});
	var lines = jQuery('tr.uioption_line',jQuery('#uioptions_options'));
	jQuery.each(
		lines,
		function(i,n) {
			var $n = jQuery(n);
			$n.find('td').eq(0).click(function(eo) {
				var inp = $n.find('input.uioption_input');
				inputClick(inp[0], eo);
				return false;
			}
		);
	});
	jQuery('a.uioption',jQuery('#uioptions_options')).click(function() {
		jQuery(this).blur().parent().click();
		return false;
	});
	setStyles();
}

var template_url;

function initCommentGravatarUpdate() {
	commentform = jQuery('#commentform');
	if (commentform.length) {
		commentemail = jQuery('#email');
		commentgravatar = jQuery('#newcomment_gravatar');
		commentgravatar.css('display','block');
		commentemail.change(function() {
			commentgravatar.css('background-image', 'url('+template_url+'/images/icons/loading.gif)');
			var gurl = 'http://www.gravatar.com/avatar.php?gravatar_id='+hex_md5(commentemail.val())+'&size=40';
			var gimg = new Image();
			jQuery(gimg)
				.load(function (){ commentgravatar.css('background-image', 'url('+gurl+')'); })
				.error(function() {})
				.attr('src', gurl);
		});
		commentemail.change();
	}
}

var months_se;
var months_li;
var months_tb;
var current_month;

function initArchiveSelect() {
	months_se = jQuery('#archives_select');
	months_li = jQuery('#archives_dropdown_go');
	months_tb = jQuery('#archives_dropdown_tb')[0];
	var months_ul = jQuery('.linkcat ul',jQuery('#archives_monthly'));
	var months_a = months_ul.find('a');
	jQuery.each(
		months_a,
		function(i,n) {
			var $n = jQuery(n);
			var selected = document.location.href.replace($n.attr('href'), '');
			if (selected.length) {
				if (selected.substring(0,4)=='http') {selected = '';}
				else {selected = ' selected';}
			} else { selected = ' selected'; }
			months_se.append('<option value="'+$n.attr('href')+'"'+selected+'>'+$n.text()+'</option>');
		}
	);
	months_ul.remove();

	months_se.change(function() { months_li[0].href = months_se.val(); });
	months_se.change();
	
	months_li.click(function() {
		if (months_tb.checked) {window.open(this.href);}
		else {document.location.href = this.href;}
		return false;
	});

	jQuery('#archives_dropdown').css('display','block');
}



var cloaded = new Array();

function initAjaxComments() {

	var clinks = jQuery('.post_commentslink',jQuery('#main'));

	jQuery.each(
		clinks,
		function(i,n) {
			$n = jQuery(n);
			var pid = n.id.split('-').pop();
			$n.find('a').click(function() {
				if (cloaded[pid]) {
					jQuery(window).scrollTo(jQuery('#comments-'+pid),500);
					return false;
				}
				var url = this.href;
				var p = jQuery('#post-'+pid,jQuery('#main'));
				var l = jQuery('<div class="comments"><div class="comments_header"><p>&nbsp;</p></div><div class="comments_body">Cargando</div><div class="comments_footer"><p>&nbsp;</p></div></div>').css('opacity',0).insertAfter(p).animate({opacity:1},500);
				jQuery(window).scrollTo(l,500);
				jQuery.ajax({
					type: "GET",
					url: url,
					processData: false,
					async: false,
					success: function(html){
						var c = jQuery(html).find('#comments-'+pid);
						var h = c.css('display','none').insertAfter(p).height();
						l.fadeOut('fast', function() {
							c.height(0).css('display','block').animate({height:h},500);
							jQuery(window).scrollTo(c,500);
							initCommentGravatarUpdate();
							c.find('.scrollable').click(function(){
								var classname = this.href.split('#').pop();
								jQuery(window).scrollTo(jQuery('#anchor-'+classname+'-'+pid,c),500);
								return false;
							});
							cloaded[pid] = true;
						});
					},
					error: function (XMLHttpRequest, textStatus, errorThrown) {
						document.location.href = url;
					}
				});
				return false;
			});
		}
	);

}

function initReplyLinks() {

	var $reply_links = jQuery('#main .comment_add');
	var $comments_list = jQuery('#main ol.comments_list');
	var $newcomment_li = jQuery('#newcomment_li');
	var $comment_parent = jQuery('#comment_parent');
	var $comment = jQuery('#comment');
	$reply_links.click(function(e) {
		e.preventDefault();
		var qs = e.target.href.split('?');
		if (qs.length>1) {
			qs = qs[1].split('#')[0].split('&');
			var qsl = qs.length-1;
			var idc = 0;
			for (i=qsl;i>=0;i--) {
				idc = qs[i].split('replytocomment=');
				if (idc.length>1) { idc = idc[1]; break;}
			}
			$reply_links.removeClass('hidden');
			jQuery(e.target).addClass('hidden');
			var $replies = jQuery('#comment-'+idc+'-replies');
			$newcomment_li
				.remove()
				.removeClass($newcomment_li.hasClass('odd')?'odd':'even')
				.addClass(($replies.children().length%2)?'even':'odd')
				.appendTo($replies);
			$comment_parent.val(idc);
			jQuery('#cancel-reply')
				.click(function(e) {
					e.preventDefault();
					$reply_links.removeClass('hidden');
					jQuery(e.target).addClass('hidden');
					$newcomment_li
						.remove()
						.removeClass($newcomment_li.hasClass('odd')?'odd':'even')
						.addClass(($comments_list.children().length%2)?'even':'odd')
						.appendTo($comments_list);
					$comment_parent.val('0');
					$comment.val('');
					jQuery(window).scrollTo(jQuery('#newcomment_li'),250);
					return false;
				})
				.removeClass('hidden')
				[0].hash = 'comment-'+idc;
			$comment.val('En respuesta al comentario de '+jQuery('#comment-'+idc+' .comment_author a').eq(0).text()+': ');
			jQuery(window).scrollTo(jQuery('#newcomment_li'),250);
		}
		return false;
	});

}

function initLinksIcons() {

	var ref = new Array();
	ref['wikilink'] = new RegExp(/^http:\/\/(.+\.)?wikipedia\.org\//g);

	var links = jQuery('a',jQuery('#main'));

	jQuery.each(
		links,
		function(i,n) {
			jQuery.each(
				ref,
				function(classname,regexp) {
					var match = n.href.match(regexp);
					if(match) {jQuery(n).addClass(classname);}
				}
			)
		}
	);

}

var inc_cp = false;

function includeColourPicker() {
	if (inc_cp) {return false;}
	var url_css = template_url+'/ext/farbtastic/farbtastic.css';
	var url_js = template_url+'/ext/farbtastic/farbtastic.js';
	jQuery.get(
		url_css,
		null,
		function(data,textStatus) {
			$head.append('<link rel="stylesheet" type="text/css" title="farbtastic" id="farbtastic_css" href="'+url_css+'" />');
			jQuery.getScript(url_js, function() {inc_cp=true;});
		},
		'text'
	);
	inc_cp = true;
}

function initShareIcons() {
	var $shareicons = jQuery('#main').find('span.post_footer_icon>a[rel=external nofollow]');
	if ($shareicons.length) {
		$shareicons.click(function(e) {
			e.target.blur();
			var href = e.target.href;
			var $p = jQuery(e.target.parentNode);
			if ($p.hasClass('post_googlelink')) { 
				// href += '&snippet='+encodeURIComponent($p.parents('div.post').find('div.post_body').html().replace(/^\s*|\s*$/g,''));
			}
			window.open(
				href,
				e.target.parentNode.className,
				'personalbar=0,toolbar=0,status=0,height=440,width=630'
			); 
			return false;
		});
	}
}

jQuery(document).ready(function() {
	$head = jQuery('head');
	$page = jQuery('#page');
	ie6 = ((jQuery.browser.msie)&&(jQuery.browser.version=='6.0'));
	initBlogrollShowHide(10);
	initArchiveSelect();
	initCustomOptions();
	initUIoptions();
	initCommentGravatarUpdate();
	initReplyLinks();
	initShareIcons();
	jQuery('.comments_header, .comments_footer',jQuery('#main')).localScroll({'filter':'.scrollable','hash':true});
});
	
