﻿var busy = 0;
var actions = [];
var maxGetResultsTimeLap = 15;
function seachResults() {
//    document.getElementById("DivNoResults").style["display"] = "none";
//    document.getElementById("DivNoResultsForProvider").innerHTML = "";
//    
    document.getElementById("DivLoading").style["display"] = "";
    document.getElementById("DivResults").innerHTML = "";
    setQueryFeedback();
    if (Web()) {
        getResults(1, 'Web', 'Bing');
        getResults(2, 'Web', 'Boss');
        //getResults(3, 'Web', 'Collecta'); //Paging problem, thumbnail problem, bad results
        getResults(4, 'Web', 'Gigablast');
    }
    if (Images()) {
        //getResults(5, 'Images', 'hq23');
        getResults(6, 'Images', 'Bing');
        getResults(7, 'Images', 'Boss');
        //getResults(8, 'Images', 'Collecta'); //Paging problem, thumbnail problem
        getResults(9, 'Images', 'Flickr');
        getResults(10, 'Images', 'Picasa');
    }
    if (Videos()) {
        getResults(11, 'Videos', 'Bing');
        //getResults(12, 'Videos', 'BlipTV'); //Results not up to the search
        //getResults(13, 'Videos', 'Boss');
        //getResults(14, 'Videos', 'Clipta'); //Still needs manual paging
        //getResults(15, 'Videos', 'Collecta'); //Paging problem, thumbnail problem
        getResults(16, 'Videos', 'LiveVideo');
        getResults(17, 'Videos', 'TruVeo');
        //getResults(18, 'Videos', 'VideoSurf'); //JSON
        getResults(19, 'Videos', 'Vimeo');
        getResults(20, 'Videos', 'VodPod');
        getResults(21, 'Videos', 'Youtube');
        if (document.getElementById("CheckBox18Plus").checked)
        {
            getResults(22, 'Videos', 'ImpersonateVideosProvider', 'youjizz.com', 'YouJizz');
            getResults(23, 'Videos', 'ImpersonateVideosProvider', 'youporn.com', 'YouPorn');
            getResults(24, 'Videos', 'ImpersonateVideosProvider', 'hardsextube.com', 'HardSexTube');
            getResults(25, 'Videos', 'ImpersonateVideosProvider', 'redtube.com', 'RedTube');
            getResults(26, 'Videos', 'ImpersonateVideosProvider', 'x3xtube.com', 'x3xTube');
        }
    }
    if (News()) {
        getResults(27, 'News', 'Bing');
        getResults(28, 'News', 'Boss');
        //getResults(29, 'News', 'Collecta'); //Paging problem, thumbnail problem
        getResults(30, 'News', 'Digg');
        getResults(31, 'News', 'Twitter');
    }
    if (Rss()) {
        getResults(32, 'Rss', 'Bing');
    }
    setTimeout( "checkProgress();", 100);
}

function checkProgress() {
    var sumActions = 0;
    var valuedActions = 0;
    for (var i=0; i < actions.length; i++) {
        if (typeof(actions[i]) !== "undefined") {
            sumActions += actions[i];
            valuedActions ++;
        }
    }
    if((sumActions/valuedActions) > 1) { setTimeout( "checkProgress();", 1000); }
    //else { reloadSnapShots(); }
}
function reloadSnapShots() {
    var head = document.getElementsByTagName("head")[0];
    var snapShotsScript = document.getElementById("snapshots_script");
    //document.body.removeChild(snapShotsScript);
    head.removeChild(snapShotsScript);
    
    var script = document.createElement("script");
    script.id = "snapshots_script";
    script.type = "text/javascript";
    script.src = "http://shots.snap.com/ss/cbf86571e3882ee57dc283706a1da41a/snap_shots.js";
    //document.body.appendChild(script);
    head.appendChild(script);
//    snapShotsScript.src = "";
//    snapShotsScript.src = "http://shots.snap.com/ss/cbf86571e3882ee57dc283706a1da41a/snap_shots.js";
////    var head = document.getElementsByTagName("head")[0];
//    var script = $("snapshotScript");
//    if (script) { head.removeChild(script); }
//    script = document.createElement("script");
//    script.id = "snapshotScript";
//    script.type = "text/javascript";
//    script.src = "http://shots.snap.com/ss/cbf86571e3882ee57dc283706a1da41a/snap_shots.js";
//    head.appendChild(script)
}











function navigatePrevious() {
    var counter = getCounter();
    if (counter > 1) {
        addToCounter(-1);
        scrollToTop();
        search();
    }
}
function navigateNext() {
    var counter = getCounter();
    if (counter > 0) {
        addToCounter(1);
        scrollToTop();
        search();
    }
}
function clearPartial(focusTo) {
    document.getElementById("DivNoResults").style["display"] = "none";
    document.getElementById("DivResults").innerHTML = "";
    document.getElementById("DivFeedback").style["display"] = "none";
    document.getElementById("DivNavBottom").style["display"] = "none";
    document.getElementById("DivReclame").style["display"] = "none";
    resetCounter();
    scrollToTop();
    if (focusTo == "" || focusTo == "search") { document.getElementById("TextBoxSearch").focus(); }
    else { document.getElementById("CheckBoxWeb").focus(); }
}
function doSearch() {
    setCookies();
    setCounter(1);
    search();
}
function search() {
    document.getElementById("DivReclame").style["display"] = "none";
    document.getElementById("DivNoResults").style["display"] = "none";
    document.getElementById("DivNoResultsForProvider").innerHTML = "";

    var counter = getCounter();
    if (counter > 0) {
        var query = trim(document.getElementById("TextBoxSearch").value);
        document.getElementById("DivFeedback").style["display"] = "none";
        document.getElementById("DivNavBottom").style["display"] = "none";
        document.getElementById("DivResults").innerHTML = "";
        if (query != null && query != "") {
            if (contentTypeSelected()) { seachResults(); }
            else {
                document.getElementById("DivResults").innerHTML = "No query was executed. Reason: No content type was selected to query upon!";
                setTimeout( "clearPartial('check');", 2000); 
            }
        }
        else {
            document.getElementById("DivResults").innerHTML = "No query was executed. Reason: No search expression was given to query for!";
            setTimeout( "clearPartial('search');", 2000); 
        }
    }
}

function Web() { return document.getElementById("CheckBoxWeb").checked; }
function Images() { return document.getElementById("CheckBoxImages").checked; }
function Videos() { return document.getElementById("CheckBoxVideos").checked; }
function News() { return document.getElementById("CheckBoxNews").checked; }
function Rss() { return document.getElementById("CheckBoxRss").checked; }

function getResults(actionSequence, type, provider, site, impersonateProvider) {
    actions[actionSequence] = 2; //1: ready, 2: busy
    var lang = getBrowserLanguage();
    var query = trim(document.getElementById("TextBoxSearch").value);
    var andOrFixed = document.getElementById("SelectAndOr").value;
    var plus18 = document.getElementById("CheckBox18Plus").checked;
    var pageCounter = parseInt(document.getElementById("SpanPageCounter").innerHTML);
    var perPage = parseInt(document.getElementById("SelectPerPage").value);
    startService(actionSequence, type, provider, query, andOrFixed, plus18, pageCounter, perPage, lang, site, impersonateProvider);
}
function setQueryFeedback() {
    var query = trim(document.getElementById("TextBoxSearch").value);
    if (query != "") {
        var xmlHttp = getXmlHttp();
        var andOrFixed = document.getElementById("SelectAndOr").value;
        var service = "../Services/setQuery.ashx?q=" + query + "&aof=" + andOrFixed;
        xmlHttp.open("GET", service, true);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    var rawResult = trim(xmlHttp.responseText);
                    if (rawResult != "") {
                        document.getElementById("SpanQueryFeedback").innerHTML = rawResult;
                    }
                }
            }
            if (xmlHttp.readyState != 4) { 
                //Do the feedback thing
                document.getElementById("SpanQueryFeedback").innerHTML = "...";
            }
        }
        xmlHttp.send(null);
    }
}

function startService(actionSequence, type, provider, query, andOrFixed, plus18, pageCounter, perPage, lang, site, impersonateProvider) {
    var xmlHttp = getXmlHttp();
    var results = document.getElementById("DivResults");
    var openService = "../Services/" + provider + ".ashx?q=" + query + "&t=" + type + "&p=" + pageCounter + "&c=" + perPage + "&aof=" + andOrFixed + "&p18=" + plus18 + "&l=" + lang + "&s=" + site + "&i=" + impersonateProvider;
    xmlHttp.open("GET", openService, true);
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            actions[actionSequence] = 1;
            if (xmlHttp.status == 200) {
                var rawResult = xmlHttp.responseText;
                document.getElementById("DivLoading").style["display"] = "none";
                if (rawResult != "") {
                    document.getElementById("DivFeedback").style["display"] = "";
                    document.getElementById("DivNavBottom").style["display"] = "";
                }
                else {
                    document.getElementById("DivNoResults").style["display"] = "";
                    document.getElementById("DivNoResultsForProvider").innerHTML += type + "/" + provider + " ";
                }
                if (busy==0) {   
                    busy=1;             
                    results.innerHTML += rawResult;
                    busy=0;
                }
            }
        }
        if (xmlHttp.readyState != 4) { } //Do the feedback thing
    }
    xmlHttp.send(null);
}

function contentTypeSelected()
{
    if (document.getElementById("CheckBoxWeb").checked) { return true; }
    if (document.getElementById("CheckBoxImages").checked) { return true; }
    if (document.getElementById("CheckBoxVideos").checked) { return true; }
    if (document.getElementById("CheckBoxNews").checked) { return true; }
    if (document.getElementById("CheckBoxRss").checked) { return true; }
//    if (document.getElementById("CheckBoxEBooks").checked) { return true; }
//    if (document.getElementById("CheckBoxPeople").checked) { return true; }
    return false;
}
function checkAll()
{
    var checkBoxAll = document.getElementById("CheckBoxAll");
    document.getElementById("CheckBoxWeb").checked = checkBoxAll.checked;
    document.getElementById("CheckBoxImages").checked = checkBoxAll.checked;
    document.getElementById("CheckBoxVideos").checked = checkBoxAll.checked;
    document.getElementById("CheckBoxNews").checked = checkBoxAll.checked;
    document.getElementById("CheckBoxRss").checked = checkBoxAll.checked;
//    document.getElementById("CheckBoxEBooks").checked = checkBoxAll.checked;
//    document.getElementById("CheckBoxPeople").checked = checkBoxAll.checked;
}
function switchDisplay(elementID) {
    var element = document.getElementById(elementID);
    if (element.style["display"] == "") { element.style["display"] = "none"; }
    else { element.style["display"] = ""; }
}
function switchImagePlusMinus(elementID) {
    var img = document.getElementById(elementID);
    var e = img.src;
    var d = e.lastIndexOf('.');
    var f = e.substring(e.lastIndexOf('/') + 1, d < 0 ? e.length : d);
    if (f == 'plus') { img.src = "Images/minus.png"; } 
    else { img.src = "Images/plus.png"; }
}
function switchDisplayPlusMinus(elementIDDisplay, elementIDPlusMinus) {
    switchDisplay(elementIDDisplay);
    switchImagePlusMinus(elementIDPlusMinus);
}
