var clip = new ZeroClipboard.Client();
var opened = false;
var messages = {};
var link;

$.extend({
    getUrlVars: function(){
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    getUrlVar: function(name){
        return $.getUrlVars()[name];
    }
});

$(document).ready(function(){
    var query = decodeURI($.getUrlVar('q'));
    if (query !== 'undefined') {
        initRecipient();
        var name = decodeURI($.getUrlVar('n'));
        yandexIt(query, name);
    } else {
        initSender();
        displayHint('first');
    }
});

function initRecipient() {
    $('#sfield').val('');
    messages['first'] = 'Введи запрос.';
    messages['second'] = 'Нажми кнопку.';
    messages['third'] = 'Не так уж и сложно, правда? :)';
}

function initSender() {
    $('#nfield').val('');
    $('#sfield').val('');
    $('#additional').show();
    $('#button1').corner('5px');
    $('#button2').corner('5px');
    $('#button3').corner('5px');
    messages['first'] = 'Введи запрос, нажми кнопку.';
    messages['second'] = 'Поделись ссылкой.';
}

function additional() {
    if (opened) {
        $('#name_block').slideUp();
        opened = false;
        $('#add').attr('src', 'img/add_down.png');
    } else {
        $('#name_block').slideDown();
        opened = true;
        $('#add').attr('src', 'img/add_up.png');
    }
}

function sKeyPress(e) {
    var evtobj = window.event ? event : e
    if (evtobj.keyCode == 13) generateLink();
    return false;
}

function generateLink() {
    var name = encodeURI($('#nfield').val());
    var text = encodeURI($('#sfield').val());
    if (text != '') {
        saveText($('#sfield').val(), $('#nfield').val());
        link = 'http://yaforyou.ru/?q='+text;
        if (name != '') link+='&n='+name;
        clip.destroy();
        clip = new ZeroClipboard.Client();
        $('#link').val(link);
        $('#link').focus(function(){
            this.select();
        });
        $('#link_container').slideDown();
        displayHint('second')
        clip.setText(link);
        clip.glue('button1');

	$("#button3").click(function(){
	      $.getJSON("http://json-tinyurl.appspot.com/?callback=?&url=" + gentlyEncode(link), function(data) {
        	$('#link').val(data.tinyurl);
        	clip.setText(data.tinyurl);
	      });
	      return false;
	    });
    }
}

function saveText(text, name) {
    $.ajax({
        type: "POST",
        url: "/save.php",
        data: "text="+text+"&name="+name,
        success: function(){
        }
    });
    return false;
}

function go(){
    if (link != null)
        window.location = link;
}

function yandexIt(query, name) {
    var cursor = $('#cursor');
    var field = $('#sfield');
    if (name != 'undefined') {
        setName(name);
    }
    $('body').css('cursor', 'wait');
    displayHint('first');
    cursor.show();
    var toppx = $.browser.safari || $.browser.chrome ? 75 : 15;
    cursor.animate({
        top:  (field.position().top  + toppx).toString()+'px',
        left: (field.position().left + 10).toString()+'px'
    }, 1700, 'swing', function(){
        field.focus();
        cursor.animate({
            top: '+=15px',
            left: '+=10px'
        }, 'fast', function() {
            if ($.browser.safari) field.blur().focus();
        });
        doType(query, 0);

    });
}

function setName(name) {
    var firstLetter = name.substring(0, 1).toUpperCase();
    var truncateName = name.substring(1);
    $('#fletter').text(firstLetter);
    $('#tname').text(truncateName);
    $('#comma').show();
}

function doType(string, i){
    var val = string.substr(0, i + 1);
    $('#sfield').attr('value', val);
    if (i< string.length) {
        setTimeout(function(){
            doType(string, i + 1);
        }, Math.random() * 250);
    }
    else {
        clickButton();
    }
}

function clickButton(){
    var button = $('#search');
    displayHint('second');
    $('#cursor').animate({
        top:  (button.position().top  + 10).toString()+'px',
        left: (button.position().left + 30).toString()+'px'
    }, 2400, 'swing', function(){
        displayHint('third');
        button.focus();
        setTimeout(redirect, 2000);
    });
}

function displayHint(key){
    $('#hint').text(messages[key]);
}

function redirect(){
    url = 'http://yandex.ru/yandsearch?text=';
    window.location = url + $.getUrlVar('q');
}

function gentlyEncode(string) {
  return ( encodeURIComponent
           ? encodeURIComponent(string).replace(/%20(\D)?/g, "+$1").replace(/'/g, escape("'"))
           : escape(string).replace(/\+/g, "%2B").replace(/%20/g, "+") );
}

