var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;
var timer = null;
var suggestionsShown = false;
function switchSearchType(e)
{
    documentSearch = document.getElementById("docSearchSwitch");
    imageSearch = document.getElementById("imageSearchSwitch");
    //audioSearch = document.getElementById("audioSearchSwitch");
    docTypeSwitch = document.getElementById("searchTypeSwitch");
    target = e.target || e.srcElement;
    if(target == documentSearch)
    {
        removeClass(imageSearch,"selected");
        //removeClass(audioSearch,"selected");
        addClass(documentSearch,"selected");
        docTypeSwitch.setAttribute("value", "document");
    }
    else if(target == imageSearch)
    {
        removeClass(documentSearch,"selected");
        //removeClass(audioSearch,"selected");
        addClass(imageSearch,"selected");
        docTypeSwitch.setAttribute("value", "images");
    }
    /*else if(target == audioSearch)
    {
        removeClass(documentSearch,"selected");
        removeClass(imageSearch,"selected");
        addClass(audioSearch,"selected");
        docTypeSwitch.setAttribute("value", "audio");
    }*/
    q = document.getElementById("q");
    if(q.getAttribute("value") != '')
        q.form.submit();

    return false;
}

function showImage(imageUrl,thumbUrl,pageUrl,refSite,resolution,size)
{

    submitForm = document.getElementById("resultForm");
   
    imageUrlHidden = document.getElementById("imageUrlHidden");
    thumbUrlHidden = document.getElementById("thumbUrlHidden");
    pageUrlHidden = document.getElementById("pageUrlHidden");
    refSiteHidden = document.getElementById("refSiteHidden");
    resolutionHidden = document.getElementById("resolutionHidden");
    sizeHidden = document.getElementById("sizeHidden");

    imageUrlHidden.setAttribute("value",imageUrl);
    thumbUrlHidden.setAttribute("value",thumbUrl);
    pageUrlHidden.setAttribute("value",pageUrl);
    refSiteHidden.setAttribute("value",refSite);
    resolutionHidden.setAttribute("value",resolution);
    sizeHidden.setAttribute("value",size);
    
    submitForm.submit();
}

//helpers
function hasClass(ele,cls)
{
  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls)
{
  if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls)
{
  if (hasClass(ele,cls))
  {
     var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
     ele.className=ele.className.replace(reg,' ');
  }
}

function toggleResultSize(element)
{
    result = element.parentNode;
    if($(".MoreText",result).toggleClass("active").hasClass("active"))
        $.post("modules/log.php",{act: 'moreTextClick'});
    currentText = $(".ResultText",result).html();
    $(".ResultText",result).html($(".bigText",result).html());
    $(".bigText",result).html(currentText);
}
function keyDown(event)
{
    if(suggestionsShown)
    {
        switch(event.keyCode)
        {
            case 27: //escape
                cancelSuggestions();
                return;
            case 40: //arrow down
                traverseSuggestions("down");
                return;
            case 38: //arrow up
                traverseSuggestions("up");
                return;
        }
    }    
    if(timer != null)
        clearTimeout(timer);
    timer = setTimeout("suggest();",200);
}

function traverseSuggestions(direction)
{
    $suggestions = $(".suggestions td");
    activeSuggestion = $("td.highlight").removeClass("highlight");
    if(activeSuggestion.length)
    {
        if(direction == "up")
        {
            prevRow = activeSuggestion.parent().prev();
            if(prevRow.length)
                suggestion = prevRow.children();
            else
                suggestion = $(".suggestions td:last");
        }
        else
        {
            nextRow = activeSuggestion.parent().next();
            if(nextRow.length)
                suggestion = nextRow.children();
            else
                suggestion = $(".suggestions td:first");
        }
    }
    else
    {
        if(direction == "up")
            suggestion = $(".suggestions td:last");
        else
            suggestion = $(".suggestions td:first");
    }
    suggestion.addClass("highlight");
    $("#q").val(suggestion.text()).focus();
}

function suggest()
{
    query = $("#q").val();
    if(query != "")
        $.post("/modules/suggestions.php",{q: query},doSuggest,"json");
}
function doSuggest(data,status)
{
    if(status != "success")
        return;
    suggestionData = data.data;
    suggestionsTable = $(".suggestions");
    suggestionsTable.html("");
    for (i in suggestionData)
        suggestionsTable.append('<tr><td>'+suggestionData[i][0]+'</td></tr>');
    $(".suggestions td")
    .mouseover(highlightSuggestion)
    .mouseout(unHighlightSuggestion)
    .click(fillSuggestion);
    $(document).click(cancelSuggestions);
    $(".suggestions").show();
    suggestionsShown = true;
}

function highlightSuggestion(event)
{
    $(event.target).addClass("highlight");
}

function unHighlightSuggestion(event)
{
    $(event.target).removeClass("highlight");
}

function fillSuggestion(event)
{
    $("#q").val($(event.target).text());
    $("#searchForm").submit();
}

function cancelSuggestions()
{
    if(timer)
        clearTimeout(timer);
    $(".suggestions").hide();
    suggestionsShown = false;
}


$(document).ready(function(){
    query = $("#q");
    query.bind("keydown",keyDown);
    offset = query.offset();
    $(".suggestions").css("left", offset.left+1).css("top", offset.top + query.height()+3);
});