var functionOnTimeout=null;
var functionImgOnTimeout=null;
var commonId;
var startTime=0;
var imgStartTime=0;
var timeoutFunction=null;
var idTimeout=null;
var pageSize=15;
var page=1;



function actionOnKeyUp(){

   window.clearTimeout(functionOnTimeout)
   page=1
   $("#pageNumber"+commonId).attr("value", page)

   getData(commonId)
   $("#qs"+commonId).css("display", "none")
   $("#qsSpan"+commonId).css("display", "block")

}

function showLoadImg()
{
    var il=$("#il"+commonId);
    il.css("display","block")
    $("#ilSpan"+commonId).css("display","none")
    imgStartTime=new Date().getTime()
    if(functionImgOnTimeout!=null) window.clearTimeout(functionImgOnTimeout)
    functionImgOnTimeout=window.setTimeout(checkImgWasHidden, 1000*20)

}

function hideLoadImg()
{
    $("#il"+commonId).css("display","none")
    $("#ilSpan"+commonId).css("display","block")
    if(functionImgOnTimeout!=null) window.clearTimeout(functionImgOnTimeout)
}

function checkImgWasHidden()
{
    hideLoadImg()
}

function linkClick(id, currentId)
{
    var input=$("#input"+id);
    if(input.hasClass("idleField")){
        input.removeClass("idleField")
    }
    input.addClass("focusField")

    var link=$("#"+currentId)

    link.addClass("focusedLink")

    input.val(link.text())

    var dictionaryText=$("#dictionaryText"+id)
    var dictionaryValue=$("#dictionaryValue"+id)
    dictionaryText.val(link.text())
    dictionaryValue.val(link.attr("name"))

    input.focus()
    input.select()
    hidePopup()
}

function scrollAction(elemId,event){

    var container = document.getElementById(elemId)

    if(container.scrollTop+container.clientHeight >= container.scrollHeight-1) {
      var id=elemId.replace('qs','')
      var pageNumberInput=$("#pageNumber"+id)
      page=parseInt(pageNumberInput.attr("value"))+1
      pageNumberInput.attr("value", page)
      getData(id)
      hideDiv=false;

    }

}

function getData(id)
{
    var searchValue = $.trim(document.getElementById('input' + id).value)

    var pos=searchValue.lastIndexOf("/")
    if(pos!=-1)
    {
        searchValue=searchValue.substr(pos+1)
    }

    if(searchValue.length>0 && searchValue.charAt(searchValue.length-1)=='.')
    {
       searchValue=searchValue.substr(0,searchValue.length-1)
    }

    var typeId = document.getElementById('idConnectedType' + id).value

    var linkArr=$("#qs"+id+" > a")

    if(linkArr.length==1)linkArr.remove()
    var il=$("#il"+commonId);

    if(il.hasClass("dictionaryAttribute"))
    {
        showLoadImg()
        $("#dictionaryValue"+commonId).val("")
        $("#dictionaryText"+commonId).val(searchValue)
        var searchType="attributeList";
	$.post('qsearch.do?objectType='+typeId+'&searchType=' +searchType+'&search='+ encodeURIComponent(searchValue)+'&language=1&id='+id+'&page='+page+'&pageSize='+pageSize, onAjaxSuccess,"xml")
    }
}



function getDataAfterSubmit(id)
{
    var searchValue = $.trim(document.getElementById('input' + id).value)

    var pos=searchValue.lastIndexOf("/")
    if(pos!=-1)
    {
        searchValue=searchValue.substr(pos+1)
    }

    if(searchValue.length>0 && searchValue.charAt(searchValue.length-1)=='.')
    {
       searchValue=searchValue.substr(0,searchValue.length-1)
    }

    var typeId = document.getElementById('idConnectedType' + id).value

    $("#dictionaryText"+commonId).val(searchValue)
    var searchType="attributeList";
    $.post('qsearch.do?objectType='+typeId+'&searchType=' +searchType+'&search='+ encodeURIComponent(searchValue)+'&language=1&id='+id+'&page='+page+'&pageSize='+pageSize, onAjaxAfterSubmitSuccess,"xml")

}

function openComboList(elementId,event)
{
   var divId= elementId.replace('button','qs')
   var divSpanId= elementId.replace('button','qsSpan')
   var inputId= elementId.replace('button','input')

   var div=$("#"+divId);

   //alert(div.css("height") + "   " + div.offset().top)

   if(div.css("display")=="block"){
      div.css("display","none")
      $("#"+divSpanId).css("display","block")
   }
   else
   {
	   hideDiv=false
	   var linkArr= $("#"+divId+" > a")
	   if(linkArr.length!=0)
	   {
	      $('div.ui-dialog').css("overflow","visible")
	      div.css("display","block")
              $("#"+divSpanId).css("display","none")


              $("#"+divSpanId).css("display","none")

	      var inputVal=$.trim($("#"+inputId).val())
	      if(inputVal!="")
	      {
		    linkArr.each(function(){
		          if($(this).hasClass("focusedLink")){

		             $(this).removeClass("focusedLink")
		          }
		          if($(this).text()==inputVal){

		             $(this).addClass("focusedLink")
		             //$(this).focus()
		             //$(this).select()
		          }
		    })
	      }
	  }
	  else
	  {

              window.clearTimeout(functionOnTimeout)
              commonId=elementId.replace('button','')

              page=1;
	      getData(commonId)
	  }
     }
}

function fetchAddData(id,currentId, event)
{
       commonId=id
       var currentLink=$("#"+currentId)

       if(event.keyCode == 40)
       {
          var nextLinkId= parseInt(currentId.replace("link"+id)) + 1 + "link" + id
          var nextLink=document.getElementById(nextLinkId)

          if(null!=nextLink)
          {
             if(currentLink.hasClass("focusedLink")) currentLink.removeClass("focusedLink")
             $(nextLink).addClass("focusedLink")

             $(nextLink).focus()
             $(nextLink).select()
          }
          else
          {
              currentLink.focus()
              currentLink.select()

          }
       }
       else if(event.keyCode == 38){

           var prevLinkId= parseInt(currentId.replace("link"+id)) - 1 + "link" + id
           var prevLink=document.getElementById(prevLinkId)

           if(null!=prevLink)
           {
               if(currentLink.hasClass("focusedLink")) currentLink.removeClass("focusedLink")
               $(prevLink).addClass("focusedLink")
               $(prevLink).select()
               $(prevLink).focus()
           }
       }
       return false;
}


function focusLink(id, currentId)
{
   if(currentId=="0link"+id)$("#"+currentId).focus()
}

function onAjaxSuccess(xml)
{
    var strUrl=this.url
    var id=jQuery.grep(strUrl.split("&"),function(a){
       if(a.indexOf("id=")==0)
       {
          return a;
       }
    })

    id=id.join(", ").replace("id=","")
    var menuitem = $('menuitem',xml)
    var menucontainer = $('#qs' + id)

    var linkArr= $("#qs"+id+" > a")
    var stPos= linkArr.length

    var i=0

    menuitem.each(function(){

        var pos=i+stPos

        $(document.createElement("a"))
		    .attr({ id: pos + 'link'+ id, href: "#",   name: $(this).attr("id"), title: $(this).attr("title") })
		    .appendTo(menucontainer)
		    .click(function(event){

			linkClick(id,$(this).attr("id"))
		    })
                    .focus(function(event){
                        //focusLink(id,pos + 'link'+ id)

		    })
            /*.keydown(function(event){
                fetchAddData(id,pos + 'link'+ id, event)
 		    }) */
            .text($(this).text())
        i++

    })
    if(menuitem.length!=0)
    {
       menucontainer.css("height",((25 * (i + 1+stPos) > 100)?100:(25 * (i + 1+stPos))).toString() + "px")
    }


    if((linkArr.length!=0|| i>0) && $("#qs"+id).css("display")=="none")
    {
        $('div.ui-dialog').css("overflow","visible")
        $("#qs"+id).css("display","block")
        $("#qsSpan"+commonId).css("display", "none")

    }

    hideLoadImg()
}


function onAjaxAfterSubmitSuccess(xml)
{
    var strUrl=this.url
    var id=jQuery.grep(strUrl.split("&"),function(a){
       if(a.indexOf("id=")==0)
       {
          return a;
       }
    })

    id=id.join(", ").replace("id=","")
    var menuitem = $('menuitem',xml)
    var menucontainer = $('#qs' + id)

    var linkArr= $("#qs"+id+" > a")
    var stPos= linkArr.length

    var i=0
    $("#dictionaryValue"+commonId).val("")

    if(menuitem.length!=1){

         $("#alertText").text("Уточните поисковое условие атрибута «" + $("#attributeLabel"+id).val()+"»")
         $("#alertBox").css("display", "block");
         $("#alertBox").dialog("open");

    }
    else
    {
         menuitem.each(function(){

             $("#dictionaryValue"+commonId).val($(this).attr("id"))

         })
         document.menuAtrrForm.submit();
    }

}

function ClearForm(formName)
{
    $("input.clear").val("")
    $("input.pageNumber").val("1")
    $("div.searchpopup > a").remove()

}

function enterKey(event,formName)
{
    if((event.keyCode == 0xA)||(event.keyCode == 0xD))
    {
       if($("#qs"+commonId).length!=0 && $("#qs"+commonId).css("display")=="block")
       {
          var linkArray=$("#qs"+commonId+" a.focusedLink")
          linkArray.removeClass("focusedLink").addClass("idledLink")
          var input=$("#input"+commonId)
          input.val(linkArray.text())
          input.focus()
          hidePopup()
       }
       else
       {
          submitAction(formName)
       }
    }
}

function stopEvent(e) {
	if(!e) var e = window.event;

	//e.cancelBubble is supported by IE - this will kill the bubbling process.
	e.cancelBubble = true;
	e.returnValue = false;

	//e.stopPropagation works only in Firefox.
	if (e.stopPropagation) {
		e.stopPropagation();
		e.preventDefault();
	}
	return false;
}

function submitAction(e)
{
   var dictionaryInputArr= $(".dictionaryInput")
   if(dictionaryInputArr.length!=0)
   {
          dictionaryInputArr.each(function(){

          var inputVal=$.trim($(this).val())
	  var inputId=$(this).attr("id")
	  var id=inputId.replace("input","")
          var dictionaryValue = $("#dictionaryValue"+id);

          if($.trim(inputVal)!='' &&  ($.trim(dictionaryValue.val())=='0' || $.trim(dictionaryValue.val())=='')) {

              commonId=id;
              stopEvent(e);
              getDataAfterSubmit(id);

          }
          else $("#dictionaryText"+id).val(inputVal)

       })
   }
}

//-----------------------------------Init functions------------------------------------------//
function initForm()
{
    var options = {
        beforeSubmit: showRequest,
        timeout: 3000
    };

    $('#oneFieldForm').submit(function() {
        $(this).ajaxSubmit(options);
        return false;
    });
}

function initDialog()
{
    var IE = document.all?true:false

    if(IE){

      var dhx_combo_box=$("div.dhx_combo_box")
      if(dhx_combo_box.length!=0){

           dhx_combo_box.css("height", "22px")
           $("input.dhx_combo_input").css("width","280px")
           $("div.searchpopup").css("width","300px")
       }
    }

    $('input.dhx_combo_input').focus(function()
    {
        //this.select();
    })

    $("input.simpleInput").css("width", "296px")

    $("input.dhx_combo_input").bind('keyup', function(event) {

        onComboKeyUp($(this).attr("id"),event)
    })


    $("img.dhx_combo_img").bind('click', function(event) {

           openComboList($(this).attr("id"),event)
    })

    $("div.searchpopup").bind('scroll', function(event) {

           scrollAction($(this).attr("id"),event)
    })
   /*
   $("select.selectAttribute").bind('change', function(event) {

       selectAttributeOnChange($(this).attr("id"),event);
   })

   $("select.selectCondition").bind('change', function(event) {

       selectConditionOnChange($(this).attr("id"),event);
   })*/

}


function onComboKeyUp(elemId,event)
{
       var input=$("#"+elemId)
       var id=input.attr("id").replace("input", "")

       if(event.keyCode == 40)
       {
           var linkArr= $("#qs"+id+" > a")

           if(linkArr.length!=0)
           {
              //$("#dialogForm input").click()
              $("#qs"+id).css("display","block")
              var linkArray=$("#qs"+id+" a.focusedLink")

              if(linkArray.length!=0)
              {
                 var inputVal=$.trim(input.val())
                 linkArr.each(function(){
                      if($(this).text()!=inputVal){
                         $(this).removeClass("focusedLink")
                      }
                      else{
                         $(this).focus()
                         $(this).select()
                      }
                 })
              }
              else
              {
                  /*var link=$("#0link"+id)
                  link.addClass("focusedLink")
                  link.focus()
                  link.select()*/
                  document.getElementById("qs"+id).scrollTop=0
              }

           }
       }
       else if(!((event.keyCode == 0xA)||(event.keyCode == 0xD)))
       {
           var linkArr=$("#qs"+id+" > a")
           if(linkArr.length!=0){
              linkArr.remove()
              document.getElementById("qs"+id).scrollTop=0
           }
           commonId=id
           if(functionOnTimeout!=null) window.clearTimeout(functionOnTimeout)
           functionOnTimeout=window.setTimeout(actionOnKeyUp, 250)
       }
}

$(function(){
        $("#dialogForm").dialog({
            autoOpen: false,
            position: ["center",200],
            minWidth: "550px",
            width: "600px",
            bgiframe: true,
            modal: true,
            resizable:false,
            dialogClass:"dialogClass",
            title: "Расширенный поиск"

          });
    $("#openD").click(function(){
                $("#dialogForm").css("display", "block");
                    $('.ui-widget-header').each(
                          function()
                          {
                             //$(this).css("background","#3D3DCF");
                             //$(this).css("border","#3D3DCF");

                    });

                    $('.ui-dialog').each(
                        function()
                        {
                          $(this).css("background","#eeefea");
                          $(this).css("padding","0");
                    });

                    $(".ui-dialog-titlebar").each(function(){

                          $(this).css("background","#665e56");
                          $(this).css("border","none");
                          $(this).css("height","21px");
                    });

                    $(".ui-dialog .ui-dialog-title").each(function(){

                          $(this).css("float","none");
                    });

                    $('.ui-dialog-content').each(function(){
                          $(this).css("padding","0");
                    });

                    $("#dialogForm").dialog("open");

                });

                $("#closeFormDialog").click(function(){
                   $("#dialogForm").dialog("close");
                });

                $("#clearFormDialog").click(function(){
                   ClearForm('menuAtrrForm')
                });

                $("#submitSearchFormDialog").each(function(){
                   $(this).css("border", "none")
                });
                /*
                $("#addSearchCondition").click(function(){
                   addSearchCondition();
                });*/


    });


$(function(){
        $("#alertBox").dialog({
            autoOpen: false,
            position: ["center",220],
            minWidth: "350px",
            width: "350px",
            bgiframe: true,
            modal: true,
            resizable:false,
            dialogClass:"alertClass",
            title: "Внимание",

            buttons: {
                "OK": function() {
                    $("#alertBox").dialog("close");

               }
            }
           });

          $("#alertButton").click(function(){
               $("#alertBox").dialog("close");
          });

    });



/*
function selectAttributeOnChange(elemId,event){

    var conditionNumber=elemId.substr(elemId.indexOf("_")+1);
    var attribute=$("#"+elemId);
    var attributeID=$("#"+elemId+" :selected").val();
    $("#attribute_"+conditionNumber).val(attributeID)

    var linkArr=$("#qs_"+conditionNumber+" > a")

    if(linkArr.length!=0)
    {
       linkArr.remove()
       document.getElementById("qs_"+conditionNumber).scrollTop=0
       $("#pageNumber_"+conditionNumber).val("1")
    }

    $("#input_"+conditionNumber).val("")
    getConditionData(attributeID, conditionNumber)
}

function selectConditionOnChange(elemId,event) {

    var conditionNumber=elemId.substr(elemId.indexOf("_")+1);
    var attribute=$("#"+elemId);
    var value=$("#"+elemId+" :selected").val();
    $("#condition_"+conditionNumber).val(value)
}


function getConditionData(attributeID,conditionNumber)
{
     var searchType="conditionList";
     $.post('qsearch.do?searchType=' +searchType+'&attributeID='+ attributeID + '&conditionNumber='+conditionNumber , onAjaxConditionsSuccess,"xml")
}

function onAjaxConditionsSuccess(xml)
{
    var strUrl=this.url

    var conditionNumber=jQuery.grep(strUrl.split("&"),function(a){
       if(a.indexOf("conditionNumber=")==0)
       {
          return a;
       }
    })
    conditionNumber=conditionNumber.join(", ").replace("conditionNumber=","")
    var selects = $('select',xml);
    var selectedOptionValue=selects.attr("selected");
    var isDictionaryAttribute=selects.attr("isDictionaryAttribute");

    var options = $('option',xml)
    var select=$("#selectCondition_"+conditionNumber);
    var button=$("#button_"+conditionNumber);
    var il=$("#il_"+conditionNumber);

    if(isDictionaryAttribute=="true")
    {
	  if(!button.hasClass("dictionaryAttribute"))button.addClass("dictionaryAttribute");
	  if(button.hasClass("notDictionaryAttribute"))button.removeClass("notDictionaryAttribute");

          if(!il.hasClass("dictionaryAttribute"))
          {
             il.addClass("dictionaryAttribute");
             il.css("display", "none");
          }
	  if(il.hasClass("notDictionaryAttribute"))il.removeClass("notDictionaryAttribute");
    }
    else
    {
	  if(button.hasClass("dictionaryAttribute"))button.removeClass("dictionaryAttribute");
	  if(!button.hasClass("notDictionaryAttribute"))button.addClass("notDictionaryAttribute");

	  if(!il.hasClass("notDictionaryAttribute"))il.addClass("notDictionaryAttribute");
          if(il.hasClass("dictionaryAttribute"))il.removeClass("dictionaryAttribute");
    }


    select.empty();
    options.each(function(){
    	var option=$(document.createElement("option"))
            .attr({value: $(this).attr("value")})
            .text($(this).attr("label"))
            .appendTo(select);
       if($(this).attr("value")==selectedOptionValue)
       {
          option.attr("selected", "true");
          $("#condition_"+conditionNumber).val($(this).attr("value"))
       }

    });
}


function addSearchCondition()
{
   var addSearchCondition=$('.addSearchCondition').clone();
   var trID=addSearchCondition.attr("id");
   addSearchCondition.removeClass("addSearchCondition");

   addSearchCondition.appendTo('.searchTable');

   var tr=$('.addSearchCondition')
   var searchConditionNumber=parseInt(trID)+1;

   tr.attr("id",searchConditionNumber)

   $('.addSearchCondition .attribute').attr("id", "attribute_" + searchConditionNumber)
   $('.addSearchCondition .condition').attr("id", "condition_" + searchConditionNumber)
   $('.addSearchCondition .pageNumber').attr("id", "pageNumber_" + searchConditionNumber)
   $('.addSearchCondition .dictionaryValue').attr("id", "dictionaryValue_" + searchConditionNumber)
   $('.addSearchCondition .textValue').attr("id", "textValue_" + searchConditionNumber)

   $('.addSearchCondition .selectAttribute').attr("id", "selectAttribute_" + searchConditionNumber)
   $('.addSearchCondition .selectCondition').attr("id", "selectCondition_" + searchConditionNumber)

   $('.addSearchCondition .dhx_combo_input').attr("id", "input_" + searchConditionNumber)
   $('.addSearchCondition .dhx_combo_img').attr("id", "button_" + searchConditionNumber)
   $('.addSearchCondition .imgLoadDiv').attr("id", "il_" + searchConditionNumber)
   $('.addSearchCondition .searchpopup').attr("id", "qs_" + searchConditionNumber)
   $('.addSearchCondition .qsSpan').attr("id", "qsSpan_" + searchConditionNumber)


   addSearchCondition=$('.addSearchCondition').clone();
   $('.addSearchCondition').remove();
   addSearchCondition.appendTo('.searchTable');


   var selectAttribute=$("#"+trID+" select.selectAttribute")

   $("#"+trID+" select.selectAttribute").change(function(event) {
       selectAttributeOnChange($(this).attr("id"),event);
   })

   $("#"+trID+" select.selectCondition").change(function(event) {
       selectConditionOnChange($(this).attr("id"),event);
   })


   $("#"+trID+" input.dhx_combo_input").keyup(function(event) {
       onComboKeyUp($(this).attr("id"),event)
   })

   $("#"+trID+" img.dhx_combo_img").click(function(event) {
       openComboList($(this).attr("id"),event)
   })

   $("#"+trID+" div.searchpopup").scroll(function(event) {
       scrollAction($(this).attr("id"),event)
   })


   var paramnum=$("#menuAtrrForm #paramnum")

   var paramnumValue=$("#menuAtrrForm #paramnum").val();

   paramnum.val(parseInt(paramnumValue)+1)
}

*/
