/********************************/
/****                        ****/
/****    POSITIONIZER.COM    ****/
/****                        ****/
/****   by Korbinian Schmid  ****/
/****      www.omsn.de       ****/
/****                        ****/
/********************************/

/**
 * positionizer.js
 *
 * jQuery magic - thanks to John Resig (www.jquery.com)
 *
 */

$(document).ready(function() {
		
	/*** suggest magic ***/
	$("#url").typeWatch({ captureLength: 5, callback: suggest });
	$("#country").change( suggest );

	/*** form focus ***/
	$("form input, form select, form textarea").focus(function() {
		$(this).css("background-color", "#fff");													   
	});
	$("form input, form select, form textarea").blur(function() {
		$(this).css("background-color", "#fcf8bc");													   
	});
	
	/*** elastic queries field ***/
	$("#queries").elastic();
	
	/*** form button hover effect ***/
	$("#form button img").hover(function() {
		$(this).attr("href", "img/button-hover.png");
	}, function() {
		$(this).attr("href", "img/button.png");	
	});
	
	/*** form submit ***/
	$("#form").submit(function() {
		$("#url, #queries").css("border-color", "#000");
		$("#top, #form, #logo, #footer").fadeTo("normal", 0.33);
		var x = (window.screen.width - 15) / 2;
		$("#loader").css("left", x).show();
		
		var valid = true;
		
		var regex = /(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
		var url = $("#url").val();
		if(!regex.test(url)) {
			$("#url").css("border-color", "red");
			alert('please type a valid URL');
			valid = false;
		}
		var request = $("#queries").val();
		if(request.length < 1) {
			$("#queries").css("border-color", "red");
			alert('please type at least one query');
			valid = false;
		}
		if(!valid) {
			$("#top, #form, #logo, #footer").fadeTo("normal", 1);
			$("#loader").hide();
			return false;
		}
		if(request.length > 1800) {
			$("#form").attr("method", "post");
		}
		return true;
	});
});

function suggest() {	
	$("#loading").hide();
	var url = $.trim( $("#url").val() );	
	var regex = /(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
	if(!regex.test(url)) {
		return;
	}		
	$("#loading").show();
	$("#suggestContainer").slideUp('fast');
	$("#suggest").html('');	
	
	var country = $("#country").val();	
	$.getJSON("suggest.php", { url:"http://" + url, country:country }, function(json) {	
		if(json.psError !== undefined) {
			if(json.psError === "error loading page") {
				// TODO: highlight invalid url 
			}
			$("#loading").hide();
			return;
		}
		$.each(json, function(i, item) {
			var size = 0.8 + Math.random();
			var margin = Math.random() * 10;
			var style = 'margin:' + margin + 'px;font-size:' + size + 'em;';
			$("<a>").text(item).attr('style', style).attr('href', '#').click(add).appendTo("#suggest");		
			if((i + 1) % 4 === 0) {
				$("#suggest").append( $("<br/>") );
			}
		});
		$("#suggestContainer").slideDown('slow');
		$("#loading").hide();
	});
}

function add() {
	var sofar = $("#queries").val();
	var query = $(this).text();
	$("#queries").val( sofar.length === 0 ? query : sofar + ", " + query ); 
	return false;
}

