jQuery.noConflict();

function setSelectionRangeX(input, selectionStart, selectionEnd) { 
    // IE
    if (input.createTextRange) { 
        var range = input.createTextRange(); 
        range.collapse(true); 
        range.moveEnd('character', selectionEnd); 
        range.moveStart('character', selectionStart); 
        range.select(); 
    // Other browsers
    } else if (input.setSelectionRange) { 
        input.focus(); 
        input.setSelectionRange(selectionStart, selectionEnd); 
    };
} 

function set_text_from_cookie(input) {
    var cookies = document.cookie.split(";");
    var found = false;
    for (var i = 0; i < cookies.length; i++) {
        cookie_name = cookies[i].split("=")[0];
        if (cookie_name == 'entrecard_search') {
            input.attr('value', cookies[i].split("=")[1]);
            found = true;
        };
    };
    if (!found || (input.val()==='')) {
        input.attr('value', 'http://');
    };
}

function blink_page_url() {
    jQuery("#page_url").fadeOut(10).fadeIn(500);
}

function show_error(message) {
    jQuery("#search_error").html(message);
    jQuery("#search_error").fadeIn(500);
    jQuery("#search_error_img").fadeIn(500);
}

function hide_error() {
    jQuery("#search_error").fadeOut(150);
    jQuery("#search_error_img").fadeOut(150);
}

function set_cookie() {
    document.cookie = "entrecard_search=" + jQuery("#search_text").val() + "; path=/; domain=.entrecard.com";
}

function search_init() {
    jQuery("#search_button").attr("onClick", "search()");
    jQuery("#search_widget_form").submit(function() { search(); return false;});
    set_text_from_cookie(jQuery("#search_text"));
    char_count = jQuery("#search_text").val().length;
    setSelectionRangeX(jQuery("#search_text")[0], char_count, char_count);
}

function search(){
    /* Redirects user browser to another page
    URL will be obtained from server.
    In case of any error, we'll receive error message from server and show to user
    */
    hide_error();
    set_cookie();
    query = jQuery("#search_text").val();
    if (query === '') { show_error("Please enter an URL"); }
    else {
        search_url = "/search_redirect?q=" + encodeURIComponent(query);
        jQuery.post(search_url, function (data) {
            try {
                if ("redirect_url" in data) {
                    // don't reload page when not needed really
                    if (window.location != data.redirect_url) {
                        window.location=data.redirect_url;
                    } else {
                        blink_page_url();
                    };
                } else if ("error" in data) {
                    show_error(data.error);
                };
            } catch (err) {
                show_error("Error happened. Please refresh the page.");
            };
        },"json");
    };
    return false;
}
