/**
 * Equal Heights Plugin
 * Equalize the heights of elements. Great for columns or any elements
 * that need to be the same size (floats, etc).
 * 
 * Version 1.0
 * Updated 12/10/2008
 *
 * Copyright (c) 2008 Rob Glazebrook (cssnewbie.com) 
 *
 * Usage: $(object).equalHeights([minHeight], [maxHeight]);
 * 
 * Example 1: $(".cols").equalHeights(); Sets all columns to the same height.
 * Example 2: $(".cols").equalHeights(400); Sets all cols to at least 400px tall.
 * Example 3: $(".cols").equalHeights(100,300); Cols are at least 100 but no more
 * than 300 pixels tall. Elements with too much content will gain a scrollbar.
 * 
 */

(function($) {
	$.fn.equalHeights = function(overflow,minHeight, maxHeight) {
		tallest = (minHeight) ? minHeight : 0;
		this.each(function() {
			if($(this).height() > tallest) {
				tallest = $(this).height();
			}
		});
		if((maxHeight) && tallest > maxHeight) tallest = maxHeight;
		return this.each(function() {
			$(this).height(tallest).css("overflow",overflow);
		});
	}
})(jQuery);

// App

$(function(){
	
	$("#column1,#column2,#column3").click(function(){
		link =$(this).find("a").attr("href");
		window.location = link;
	});
	
	$("#column1,#column2,#column3").css('cursor','pointer');
		
	
	var column = $(".column");
	if(column.length)
	{
		$(".column").equalHeights("hidden");
	}
	
	var base_url = 'http://lnw.me/s/short.php?'
		
	$('#submit-button').click(function(){
		link = $("#link-shorten-text").val();
		message = $("#message");
		if(!CheckValidUrl(link))
		{
			alert('Your link is not valid');
			return false;
		}
		post_url = base_url+'url='+rawurlencode(link)+'&callback=?';
		
		
		jQuery.get(post_url,function(data){
    		message.fadeOut(function(){
    			$("#shortenurl").val(data);
    			$("#shortenurl-stats").attr("href",data.replace("http://lnw.me","http://lnw.me/stats"));
    		}).fadeIn();
    		$("#shortenurl").select();
    	});

		
		return false;
	});
	
	$("form:not(#view-link-stats)").submit(function(){
		//		alert("submit!!!");
		url = $(this).attr("action");
		message = $("#message");
		
		submit_button = $('#post-button', this);
		
		if(!submit_button.attr('disabled'))
		{	
			submit_button.attr('disabled', 'disabled');
			
			jQuery.post(url,$(this).serialize(),function(data){
				message.fadeOut(function(){
					url = "http://lnw.me/"+data.hash;
	    			$("#shortenurl").val(url);
	    			$("#shortenurl-stats").attr("href",url.replace("http://lnw.me","http://lnw.me/stats"));
	    		}).fadeIn();
	    		$("#shortenurl").select();
	    		
	    		setTimeout("removeDisabled('#post-button')",1000);
			},'json');
		}
		
		return false;
	});
});

function removeDisabled(element)
{
	$(element).removeAttr('disabled');
}

function CheckValidUrl(strUrl)
{
        var RegexUrl = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        return RegexUrl.test(strUrl);
}

function rawurlencode (str) {
    // URL-encodes string  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/rawurlencode
    // +   original by: Brett Zamir (http://brett-zamir.me)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Michael Grier
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Joris
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // %        note 2: Please be aware that this function expects to encode into UTF-8 encoded strings, as found on
    // %        note 2: pages served as UTF-8
    // *     example 1: rawurlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin%20van%20Zonneveld%21'
    // *     example 2: rawurlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: rawurlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    str = (str+'').toString();
 
    // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
    // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
                                                                    replace(/\)/g, '%29').replace(/\*/g, '%2A');
}

