﻿var _kMsgWait = 2;
var _kMsgNoPhotos = 5;
var _savedData;
var _savedQuery;
var _actionForClickOnImage;

function debug(text) {
    var txt = $("#__debug").text();
    txt = "> " + text + "\n" + txt;
    $("#__debug").text(txt);
}

//show the results on the web page
function showImagesGoogle(data, query) {
    if (data.responseData.results.length == 0) {
	ShowGoogleStatusMessage(_kMsgNoPhotos);
    }
    else {
	$("#YISSearchResults").html("");
    
	var strHtml = "<table width=\"430\" border=\"0\" cellpadding=\"3\" cellspacing=\"0\">";
    
	if (data.responseData.results.length > 0 && data.responseData.cursor.pages.length > 0 && data.responseData.cursor.currentPageIndex > 0) {
	    strHtml += "<tr><td colspan=\"5\" align=\"center\" style=\"font-size:18px;border-bottom:thin solid #E5E5E5;padding-bottom:5px; padding-top:5px;\"><a class=\"prevPage\">" + lblFBSelector_Previous + "</a></td></tr>";
	}

	for (var i = 0; i < data.responseData.results.length; i++) {
	    if (i % 4 == 0)
		strHtml += "<tr>";
	    strHtml += "<td align=\"center\"><a class=\"lnkSearchPhoto\" pid=\"" + data.responseData.results[i].imageId + "\" source=\"" + data.responseData.results[i].unescapedUrl + "\"><img style=\"width:100px; max-height:140px\" src=\"" + data.responseData.results[i].tbUrl + "\"/></a><br/><span style=\"font-size:10px\">" + data.responseData.results[i].width + "x" + data.responseData.results[i].height + "</span></td>";
	    if (i % 4 == 3 || i == data.responseData.results.length - 1)
		strHtml += "</tr>";
	}

	if (data.responseData.results.length > 0 && data.responseData.cursor.pages.length > 0 && data.responseData.cursor.currentPageIndex + 1 < data.responseData.cursor.pages.length) {
	    strHtml += "<tr><td colspan=\"5\" align=\"center\" style=\"font-size:18px;border-bottom:thin solid #E5E5E5;padding-bottom:5px; padding-top:5px;\"><a class=\"nextPage\">" + lblFBSelector_Next + "</a></td></tr>";
	}
    
	strHtml += "</table>";
    
	$("#YISSearchResults").html(strHtml);
    
	$("a.lnkSearchPhoto").css("cursor", "pointer").click(function() {
	    SetPhotoImageSearch($(this).attr("source"));
	});
	$(".prevPage").css("cursor", "pointer").click(function() {
	    debug("PREVIOUS: " + data.responseData.cursor.pages[data.responseData.cursor.currentPageIndex - 1].start);
	    doSearchGoogle(query, data.responseData.cursor.pages[data.responseData.cursor.currentPageIndex - 1].start);
	});
	$(".nextPage").css("cursor", "pointer").click(function() {
	    debug("NEXT: " + data.responseData.cursor.pages[data.responseData.cursor.currentPageIndex + 1].start);
	    doSearchGoogle(query, data.responseData.cursor.pages[data.responseData.cursor.currentPageIndex + 1].start);
	});
    }

}

//searchs for images
function doSearchGoogle(query, start) {
    debug("QUERY: " + query);
    debug("START: " + start);

    if (!start || isNaN(start))
        start = 0;

    if (query.length > 0) {

        _savedQuery = query;

        var url = "http://ajax.googleapis.com/ajax/services/search/images";
        debug(url);

        $.get(url,
	    {
		"v": "1.0",
		"q": query,
		"rsz": 8,
		"start": start,
		"imgsz": "large|xlarge|xxlarge"
	    },
	    function(data, textStatus, XMLHttpRequest) {
		debug(data.responseDetails);
		debug(data.responseStatus);

		_savedData = data;
		showImagesGoogle(data, query);
	    },
	    "jsonp"
	);
    }
}

//shows the image search control
function OpenImageSearch() {
    ShowGoogleStatusMessage(0);
    $("#YISPlaceholder").show();
    //$("#YISSearchText").focus();
}

//closes the image search control
function CloseImageSearch() {
    debug("CloseImageSearch");
    $("#YISPlaceholder").hide();
}

//action executed when user clicks an image
function SetPhotoImageSearch(url) {
    ShowGoogleStatusMessage(_kMsgWait);

    debug("SetPhotoImageSearch: " + url);
    debug("serverName: " + serverName);

    if (serverName != "") {
        lServerName = "http://" + serverName + ".faceinhole.com/"
    }
    else {
        lServerName = "http://devpc.com/";
    }

    $.get(lServerName + "WebImageDownloader.php", { url: url, server: lServerName, doResize: doImageResize, fihAccountType: fihAccountType, widthResizeLimit: widthResizeLimit },
        function(data) {
        }, "jsonp"
    );
}

//jsonp callback executed after downloading file
function SetPhotoByUrl(data) {
    debug("SetPhotoByUrl: New filename: " + data);
    if (data != "NOT_OK") {
	if (_actionForClickOnImage != undefined) {
	    debug("Will execute _actionForClickOnImage");
	    _actionForClickOnImage(data);
	} else {
	    alert("No defined action");
            CloseImageSearch();
            ShowFlash();
	}
    }
    else {
        //showImages(_savedData);
        showImagesGoogle(_savedData, _savedQuery);
        alert("Unable to get original image, please try another.");
    }
}

//shows status messages
function ShowGoogleStatusMessage(messageId) {
    switch (messageId) {
        case _kMsgWait:
            $("#YISSearchResults").html("<div align=\"center\"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><table cellpadding=\"6\" cellspacing=\"0\" class=\"normaltext\"><tr id=\"trStatusMessage\"><td><strong>" + lblFBSelector_Wait + "</strong></td></tr></table></div>");
            break;
        case _kMsgNoPhotos:
            $("#YISSearchResults").html("<div align=\"center\"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><table cellpadding=\"6\" cellspacing=\"0\" class=\"normaltext\"><tr id=\"trStatusMessage\"><td><strong>" + lblFBSelector_NoPhotos + "</strong></td></tr></table></div>");
            break;
        default:
            $("#YISSearchResults").html("<table width=\"100%\" height=\"100%\"><tr><td align=\"center\"><font size=\"1\">powered by</font><br /><img src=\"/images/google-small-logo.png\" /></td></tr></table>");
    }
}

//set action for close button
function SetActionForCloseButton(callback) {
    $(".FBCloseButton").click(callback);
}

//set action for clicking on image search result
function SetActionForClickOnImage(callback) {
    _actionForClickOnImage = callback;
}
//function to show flash object
function ShowFlash() {
    if (jQuery.support.cssFloat) {
	$("#CreateFlashLarge").css("visibility", "");
	$("#CreateFlash").css("visibility", "");
    }
    else {
	$("#create").css("position", "relative");
	$("#create").css("top", "0");
	$("#create").css("left", "0");

	$("#createLarge").css("position", "relative");
	$("#createLarge").css("top", "0");
	$("#createLarge").css("left", "0");
    }
    $("#Favorites").css("visibility", "");
    $("#FavoritesLarge").css("visibility", "");    
}
//function to hide flash object
//param:idPlaceholder - identificador do placeholder (caixa de pesquisa) que se deve posicionar
function HideFlash(idPlaceholder) {
    var left = "-1000px", top = "-1000px";
    if ($("#CreateFlashLarge").length > 0) {
	left = $("#CreateFlashLarge").offset().left, top = $("#CreateFlashLarge").offset().top;
    }
    else {
	if ($("#CreateFlash").length > 0) {
	    left = $("#CreateFlash").offset().left, top = $("#CreateFlash").offset().top;
	}
    }

    if (jQuery.support.cssFloat) {
	$("#CreateFlashLarge").css("visibility", "hidden");
	$("#CreateFlash").css("visibility", "hidden");
	$("#" + idPlaceholder).css("position", "absolute");
	$("#" + idPlaceholder).css("left", left);
	$("#" + idPlaceholder).css("top", top);
    }
    else {
	if ($("#CreateFlashLarge").length > 0) {
	    $("#createLarge").css("position", "absolute");
	    $("#createLarge").css("top", "-10000px");
	    $("#createLarge").css("left", "-10000px");

	    $("#CreateFlashLarge").prepend($("#YISPlaceholder").css("position", "relative").css("top", 0).css("left", 0));
	}
	else {
	    $("#create").css("position", "absolute");
	    $("#create").css("top", "-10000px");
	    $("#create").css("left", "-10000px");

	    $("#CreateFlash").prepend($("#YISPlaceholder").css("position", "relative"));
	}
    }
    $("#Favorites").css("visibility", "hidden");
    $("#FavoritesLarge").css("visibility", "hidden");  
}
//send the downloaded image to the flash object
function SetOptionsOnFlash(options) {
    if (!options)
	options = "";
    debug("SetOptionsOnFlash");
    if ($("#create").length > 0)
	thisMovie("create").sendTextToFlash(options);
    if ($("#createLarge").length > 0)
	thisMovie("createLarge").sendTextToFlash(options);
}
//execute on page load
$(document).ready(function() {
    SetActionForCloseButton(ActionForCloseButton);
    SetActionForClickOnImage(ActionForClickOnImage)
    $(".YISButton").css("cursor", "pointer").click(function() {
        if ($("#YISSearchText").val()) {
            ShowGoogleStatusMessage(_kMsgWait);
            var searchText = $("#YISSearchText").val();
            doSearchGoogle(searchText);
        }
    });

    $("#YISSearchText").keyup(function(event) {
        if (event.keyCode == '13') {
            ShowGoogleStatusMessage(_kMsgWait);
            var searchText = $("#YISSearchText").val();
            doSearchGoogle(searchText);
            event.preventDefault();
        }
    });
});




