﻿/// <reference path="~/Scripts/External/jquery-1.3.2.js"/>


// first, declare the two namespaces if they do not already exist
if (Adlib == null || typeof (Adlib) != "object") { var Adlib = new Object(); }
if (Adlib.Page == null || typeof (Adlib.Page) != "object") { Adlib.Page = new Object(); }


/****************************************************************************/
/***** Page Search ************************************************************/
/****************************************************************************/
Adlib.Page.Search = function () {

  //first run
  var first_run = true;

  /****************************/
  /***** Method Set Handlers *****/
  /****************************/
  var setEventHandlers = function () {

    //Set event handlers can only run one time
    if (first_run) { first_run = false; } else { return; }

    /** Enter button **/
    $j("body").keydown(function (e) {

      if ((e.which == 13)) //Enter
      {

        if ($j('#divSimpleSearchBox').length ||
            $j('#divTermNumberSearchBox').length ||
            $j('#divExtendedSearchBox').length) {
          Adlib.Page.Search.Search(1, true);
          e.preventDefault();
        }
      }
    });

    $j("#btSearch").live("click", function () {
      Adlib.Page.Search.Search(1, true);
    }
  ); //$j("#btSearch")

    $j("#divSimpleSearchBox #btClear").live("click", function () {
      Adlib.Page.Search.Init();
    }
  ); //$j("#divSimpleSearchBox #btClear")

    $j("#divExtendedSearchBox #btClear").live("click", function () {


      $j("#divContentLeftTop, #divResultsList, #divContentRight").html("");
      $j("#divLinksResultList").hide();

      Adlib.Page.Search.LoadExtendedSearchBox();

    }
  ); //$j("#divSimpleSearchBox #btClear")

    $j("#divTermNumberSearchBox #btClear").live("click", function () {


      $j("#divContentLeftTop, #divResultsList, #divContentRight").html("");
      $j("#divLinksResultList").hide();

      Adlib.Page.Search.LoadTermNumberSearchBox();

    }
  ); //$j("#divTermNumberSearchBox #btClear")

    $j("#btExtendedSearch").live("click", function (e) {

      Adlib.Page.Search.LoadExtendedSearchBox();
    }
    ); //$j("#btExtendedSearch")

    $j("#btSimpleSearch").live("click", function (e) {
      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/getsimplesearchbox",
        data: "language=" + Adlib.Base.Data.Get("language"),
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        //async: false,

        success: function (data) {
          var searchTerm = $j("#txtSearchTerm").val();
          $j("#divContentLeftTop").html(data);

          $j("#txtSearchTerm").val(searchTerm);
          $j("#divSimpleSearchBox").show();

          $j("#txtSearchTerm").focus();

        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });
    }
    ); //$j("#btSimpleSearch")

    $j("#btTermNumberSearch").live("click", function () {
      Adlib.Page.Search.LoadTermNumberSearchBox();
    }
    ); //$j("#btTermNumberSearch")

    $j("#btHierarchySearch").live("click", function () {
      Adlib.Page.Search.LoadHiercSearchBox(true);

    }
    ); //$j("#btHierarchySearch")

    $j(".openDetail, .openDetailAnotherLang, #btLangEnglish, #btLangDutch, #btShowRecordDetail").live("click", function (e) {

      if ($j(this).hasClass("openDetail")) {
        var text_language = ($j('#divExtendedSearchBox').length) ? $j("#selSearchLanguage").val() : Adlib.Base.Data.Get("text_language");
      }
      else {
        var text_language = $j(this).children("#new_lang").val();
      }

      Adlib.Page.Search.OpenDetail($j(this).attr("rel"), text_language, true);

      e.preventDefault();
    }); //$j(".openDetail")

    $j(".listOpenCloseTree").live("click", function (e) {


      var text_language = ($j('#divExtendedSearchBox').length) ? $j("#selSearchLanguage").val() : Adlib.Base.Data.Get("language");

      var currNode = $j(this);

      if ($j(currNode).hasClass("treeOpen")) {
        $j(currNode).parent().children("ul").hide();
        $j(currNode).removeClass("treeOpen");
        $j(currNode).text("+");
      }
      else {
        $j(currNode).addClass("treeOpen");
        $j(currNode).text("-");


        if ($j(currNode).parent().children("ul").length) {
          $j(currNode).parent().children("ul").show();
        }
        else {
          $j.ajax({
            url: $j("#hdBaseUrl").val() + "search/getlistsubnodes",
            contentType: "application/x-www-form-urlencoded",
            dataType: "html",
            //async: false,
            data: "language=" + Adlib.Base.Data.Get("language") + "&" +
                  "text_language=" + text_language + "&" +
                  "parent_priref=" + $j(this).parent().children("a.openDetail").attr("rel") + "",

            success: function (data) {
              $j(currNode).parent().append(data);

              $j(currNode).parent().children("ul").show();

            },
            error: function (xhr) {
              Adlib.Base.Message.Error(xhr);
            }
          });
        }
      }
      e.preventDefault();
    }); //$j(".listOpenCloseTree")

    $j("#btShowPublicComments").live("click", function (e) {
      Adlib.Page.Search.OpenPublicComments($j(this).attr("rel"));
    }); //$j("#btEdit")

    $j(".getAllNotTranslatedConcepts").live("click", function (e) {
      $j.ajaxSetup({ async: false });
      Adlib.Page.Search.LoadExtendedSearchBox();
      $j("#txtSearchTerm").val("*");
      $j("#divExtendedSearchBox").find("input:checked").removeAttr('checked');
      $j("#chkBoxNotTranslatedConcepts").attr("checked", "checked");
      $j("#selSearchLanguage").val("en-US");
      $j("#btSearch").click();
      $j("#btSimpleSearch").click();
      //$j("#selSearchLanguage").val("nl-NL");
      $j.ajaxSetup({ async: true });
    });

    $j("#btEdit").live("click", function (e) {
      //Adlib.Base.Navigation.OpenNewPage("user");

      var params = new Object();
      params.priref = $j(this).attr("rel");
      params.action = 'edit';
      Adlib.Base.Navigation.OpenNewPage("term", params);
    }); //$j("#btEdit")

    // find the node in hierarchy

    $j("#btFindInHierarchy").live("click", function (event) {
      //event.preventDefault();

      var params = new Object();
      params.priref = $j(this).attr("rel");

      var url = $j("#hdBaseUrl").val() + "search/findinhierarchy";
      var data = "language=" + Adlib.Base.Data.Get("language")
          + "&priref=" + params.priref;

      $j.blockUI({ css: {
        border: 'none',
        padding: '15px',
        backgroundColor: '#000',
        '-webkit-border-radius': '10px',
        '-moz-border-radius': '10px',
        opacity: .5,
        color: '#fff'
      }

      });

      $j.ajax({
        url: url,
        data: data,
        contentType: "application/x-www-form-urlencoded",

        success: function (data) {
          var hierarchy = data.nodeshierarchy;

          $j.ajaxSetup({ async: false });

          if (hierarchy != null) {

            //expose hierarchy tree
            //$j("#btHierarchySearch").click();

            Adlib.Page.Search.LoadHiercSearchBox(false);

            //unfold nodes, but exclude first (root) and last (lead, shouldn't be unfolded) nodes
            for (i = 0; i < hierarchy.length - 1; i++) {
              var priref2unfold = hierarchy[i];

              if ($j("a[rel=\"" + priref2unfold + "\"]").prev().text() == "+")
              { $j("a[rel=\"" + priref2unfold + "\"]").prev().click(); }

            }

            //mark the leaf node
            $j("#divContentLeftTop a[rel=\"" + hierarchy[hierarchy.length - 1] + "\"]").addClass("marked").focus();

          }
          else {
            Adlib.Base.Message.Warning("Geen broader term aanwezig.");
          } // if (hierarchy = null)

          $j.ajaxSetup({ async: true });
          //          $el = $el.prev();
          //          $el.click();

          $j.unblockUI();
        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
          $j.ajaxSetup({ async: true });

          $j.unblockUI();
        }
      });

    }); // $j("#btFindInHierarchy")

    $j("#btNewTerm").live("click", function (e) {
      //Adlib.Base.Navigation.OpenNewPage("user");
      var params = new Object();
      params.priref = $j(this).attr("rel");
      params.action = 'new';
      Adlib.Base.Navigation.OpenNewPage("term", params);
    }); //$j("#btEdit")

    $j("#divResultsDetail a.sourceDetails").live("click", function (e) {

      var sourcePriref = $j(this).siblings("input.sourcePriref").val();
      Adlib.Page.Search.OpenSourceDetails(sourcePriref);

    }); //$j("#divResultsDetail a.sourceDetails")

  }; //setEventHandlers

  var loadData = function (data) {

    //alert(data);
    $j("#divContentLeftTop").html(data);
    $j("#divSimpleSearchBox").show();
    $j("#txtSearchTerm").focus();
  }

  return {

    GetParams: function () {

      return params;
    },

    SetParams: function (paramsIn) {

      params = paramsIn;

    },

    CallBackPagination: function (page_index, jq) {
      Adlib.Page.Search.Search(page_index + 1, false);
      return false;
    },

    LoadExtendedSearchBox: function () {

      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/getextendedsearchbox",
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        //async: false,
        data: "language=" + Adlib.Base.Data.Get("language") + "&" +
              "search_term=" + Adlib.Base.Functions.Encode($j("#txtSearchTerm").val()),

        success: function (data) {

          var searchTerm = $j("#txtSearchTerm").val();
          $j("#divContentLeftTop").html(data);
          $j("#txtSearchTerm").val(searchTerm);
          $j("#divExtendedSearchBox").show();
          $j("#txtSearchTerm").focus();
        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });

    },

    LoadHiercSearchBox: function (hideResultsList) {

      $j("#divHiercSearchBox").remove();

      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/gethiercsearchBox",
        data: "language=" + Adlib.Base.Data.Get("language"),
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        //async: false,

        success: function (data) {
          $j("#divSimpleSearchBox, #divExtendedSearchBox").before(data);
          $j("#divHiercSearchBox").show();
          $j("#btHierarchySearch").hide();

          $j("#divLatestComments").hide();
          $j("#divNotTranslatedConcepts").hide();

          if (hideResultsList == true) {
            $j("#divResultsList").hide();
            $j("#divLinksResultList").hide();
          }
        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });


    },

    LoadTermNumberSearchBox: function () {
      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/gettermnumbersearchbox",
        //async: false,
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        data: "language=" + Adlib.Base.Data.Get("language"),

        success: function (data) {
          $j("#divContentLeftTop").html(data);
          $j("#divTermNumberSearchBox").show();


          $j("#txtTermNumber").focus();
        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });

    },
    Search: function (page_number, initPagination) {

      $j("#iframeSearch").attr("src", "ga_search.htm?search=" + $j("#txtSearchTerm").val());

      $j("#btHierarchySearch").show();
      //$j("#divHiercSearchBox").remove();

      //restore text language to default
      Adlib.Base.Data.Set("text_language", Adlib.Base.Data.Get("language"));

      if ($j('#divSimpleSearchBox').length) {

        var url = "search/searchsimple";
        var data = "language=" + Adlib.Base.Data.Get("language") + "&" +
                    "search_term=" + Adlib.Base.Functions.Encode($j("#txtSearchTerm").val()) + "&" +
                    "page_number=" + page_number + "";
      }
      else {
        if ($j('#divTermNumberSearchBox').length) {

          var url = "search/searchtermnumber";
          var data = "language=" + Adlib.Base.Data.Get("language") + "&" +
                    "term_number=" + Adlib.Base.Functions.Encode($j("#txtTermNumber").val());
        }
        else {
          if ($j('#divExtendedSearchBox').length) {

            //set specific language
            Adlib.Base.Data.Set("text_language", $j("#selSearchLanguage").val());

            var url = "search/searchextended";
            var data = "language=" + Adlib.Base.Data.Get("language") + "&" +
                      "page_number=" + page_number + "&" +
                      "search_term=" + Adlib.Base.Functions.Encode($j("#txtSearchTerm").val()) + "&" +
                      "search_language=" + Adlib.Base.Data.Get("text_language") + "&" +
                      "search_cardinal=" + $j("#selSearchCardinal").val() + "&" +
                      "search_field=" + $j("#selSearchField").val() + "&" +
                      "search_associated_concepts=" + $j("#chkBoxAssociatedConcepts").attr("checked") + "&" +
                      "search_activities=" + $j("#chkBoxActivities").attr("checked") + "&" +
                      "search_agents=" + $j("#chkBoxAgents").attr("checked") + "&" +
                      "search_physical_attributes=" + $j("#chkBoxPhysicalAttributes").attr("checked") + "&" +
                      "search_materials=" + $j("#chkBoxMaterials").attr("checked") + "&" +
                      "search_objects=" + $j("#chkBoxObjects").attr("checked") + "&" +
                      "search_styles_periodes=" + $j("#chkBoxStylesPeriodes").attr("checked") + "&" +
                      "search_accepted_terms=" + $j("#chkBoxAcceptedTerms").attr("checked") + "&" +
                      "search_candidate_terms=" + $j("#chkBoxCandidatesTerms").attr("checked") + "&" +
                      "search_not_translated_concepts=" + $j("#chkBoxNotTranslatedConcepts").attr("checked");

          }
        }
      }
      //}

      $j.ajax({
        url: $j("#hdBaseUrl").val() + url,
        data: data,
        success: function (data) {

          //check return
          $j("#divResultsList").html(data.html);
          $j("#divResultsList").show();
          $j("#divLinksResultList").show();

          $j("#divLatestComments").hide();
          $j("#divNotTranslatedConcepts").hide();

          //necessary for the reload in case the user goes to another page and returns to this one
          Adlib.Base.Data.Set("currentResultsPageNumber", page_number);


          if (initPagination) {
            //pagination
            var paramsIn = new Object();

            paramsIn.num_entries = data.hits;
            paramsIn.pageselectCallback = Adlib.Page.Search.CallBackPagination;
            paramsIn.prev_text = "[vorige]"; //TODO: Load in the proper language
            paramsIn.next_text = "[volgende]"; //TODO: Load in the proper language
            paramsIn.current_page = page_number;
            Adlib.Base.Pagination.Init(paramsIn);
          }


          if (data.hits == 1) {
            Adlib.Page.Search.OpenDetail($j("#divResultsList a.openDetail:first").attr("rel"), Adlib.Base.Data.Get("text_language"), true);
          }


        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });

    } //Search
    ,

    OpenPublicComments: function (priref) {

      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/getpubliccommentsbox",
        //async: false,
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        data: "language=" + Adlib.Base.Data.Get("language") + "&" +
              "priref=" + priref,

        success: function (data) {
          $j("#divContentRight").html(data);
          $j("#divResultsDetail").show();

          $j("#divLatestComments").hide();
          $j("#divNotTranslatedConcepts").hide();

        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });
    },

    OpenDetail: function (priref, text_language, updateGridWalker) {

      var success = false;

      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/getdetail",
        async: false,
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        data: "language=" + Adlib.Base.Data.Get("language") + "&" +
               "text_language=" + text_language + "&" +
              "priref=" + priref,

        success: function (data) {

          $j("#divContentRight").html(data);
          $j("#divResultsDetail").show();

          success = true;

          $j("#divLatestComments").hide();
          $j("#divNotTranslatedConcepts").hide();

          if (text_language == 'nl-NL') {
            $j("#btLangDutch").parent().hide();
            $j("#btLangEnglish").parent().show();
          }
          else {
            $j("#btLangDutch").parent().show();
            $j("#btLangEnglish").parent().hide();
          }

          Adlib.Base.Data.Set("text_language", text_language);


        },
        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }
      });

      if (success & updateGridWalker) {

        if ($j("#AAT_thesaurus").length == 0) {
          Adlib.Page.Master.SetGridWalker("http://test2.adlibsoft.com/rkd-aat-frontend/flash/external/GridWalker_AAT_RKD_Modified_Security.swf?term=" + priref);
          $j("#divGridWalker").show();
        }
        else {
          Adlib.Page.Master.UpdateGridWalker(priref);
        }
      }

    },

    OpenLatestComments: function (language) {

      $j("#divLatestComments").show();

      $j.ajax({

        url: $j("#hdBaseUrl").val() + "search/getlatestcomments",
        data: "language=" + language,
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        success: function (data) {
          $j("#divLatestComments").html(data);
        },
        error: function (xhr) {
          $j("#divLatestComments").hide();
          Adlib.Base.Message.Error(xhr);
        }

      });

    },

    OpenConceptsWithoutTranslation: function (language) {

      $j("#divNotTranslatedConcepts").show();

      $j.ajax({

        url: $j("#hdBaseUrl").val() + "search/getrandomconceptswithouttranslation",
        data: "language=" + language,
        contentType: "application/x-www-form-urlencoded",
        dataType: "json",
        success: function (data) {
          $j("#divNotTranslatedConcepts").html(data.htmlBox);
        },
        error: function (xhr) {
          $j("#divNotTranslatedConcepts").hide();
          Adlib.Base.Message.Error(xhr);
        }

      });


    },

    OpenSourceDetails: function (sourcePriref) {

      if ($j("#divResultsDetail tr > td:has(input[type='hidden'][value='" + sourcePriref + "']) > a.sourceDetails").siblings(".sourceDetailsContent").html() == "") {

        $j.ajax({

          url: $j("#hdBaseUrl").val() + "search/getsourcedetails",
          data: "priref=" + sourcePriref,
          contentType: "application/x-www-form-urlencoded",
          dataType: "html",
          success: function (data) {

            //$j("#divResultsDetail tr > td > a.sourceDetails").siblings(".sourceDetailsContent").html(data);
            $j("#divResultsDetail tr > td:has(input[type='hidden'][value='" + sourcePriref + "']) > a.sourceDetails").siblings(".sourceDetailsContent").html(data);
            $j("#divResultsDetail tr > td:has(input[type='hidden'][value='" + sourcePriref + "'])").siblings("td:not(:has(input[type='hidden']))").text("bron volledig");

          },
          error: function (xhr) {
            Adlib.Base.Message.Error(xhr);
          }
        });
      }
      else {
        $j("#divResultsDetail tr > td:has(input[type='hidden'][value='" + sourcePriref + "']) > a.sourceDetails").siblings(".sourceDetailsContent").html("");
        $j("#divResultsDetail tr > td:has(input[type='hidden'][value='" + sourcePriref + "'])").siblings("td:not(:has(input[type='hidden']))").text("bron");
      }

    },




    /****************************/
    /***** Method Page Init *****/
    /****************************/
    Init: function (params) {

      $j.ajax({
        url: $j("#hdBaseUrl").val() + "search/init",
        data: "language=" + Adlib.Base.Data.Get("language"),
        contentType: "application/x-www-form-urlencoded",
        dataType: "html",
        success: function (data) {

          Adlib.Page.Search.OpenLatestComments(Adlib.Base.Data.Get("language"));
          //Adlib.Page.Search.OpenConceptsWithoutTranslation(Adlib.Base.Data.Get("language"));
          Adlib.Page.Search.OpenConceptsWithoutTranslation("en-US");

          $j("#divResultsList, #divContentRight").html("");
          $j("#divLinksResultList").hide();
          loadData(data);


          if ((params != undefined) && (params.search != undefined) && params.search != '') {
            $j("#txtSearchTerm").val(params.search);
            Adlib.Page.Search.Search(1, true);
          }

        },

        error: function (xhr) {
          Adlib.Base.Message.Error(xhr);
        }

      });

      setEventHandlers();

      $j(".selectAll").live("click", function (event) {
        event.preventDefault();

        var refNode = $j("#tblTermDetail")[0];
        Adlib.Base.Functions.SelectText(refNode);

      }); // selectAll

    }, //Init

    /****************************/
    /***** Method Page Dispose *****/
    /****************************/
    Dispose: function () {
      //Saves the page to be reloaded in the edit and new term page
      Adlib.Base.Data.SavePage("search");
    }, //Dispose

    /****************************/
    /***** Method Page Reload *****/
    /*
    This method is necessary to run when the user returns to this page through the back button. 
    Because de previous HTML is reinserted again in the DOM, the pagination instance has to be recreated.
    */
    /****************************/

    Reload: function () {

      if ($j("#txtSearchTerm").val() != '') {
        Adlib.Page.Search.Search(Adlib.Base.Data.Get("currentResultsPageNumber"), true);
      }
    } //Reload



  };
} ();







