/* ANSI, Windows-1251 */

var docsSet = new Array();

function DocsSet(container, limitsHeaders, limitsCSSClass, limitsContainerCSSClass, limitsDefault, limitsStrings) {
  var i, i1, i2, i3, l, l1, l2, l3, n1, n2, n3, divs, d, el1, el2, el3;
  /*
  var limitsHeaders = [
    "Тип обслуживания",
    "Категория инвестора",
    ""
  ]
  var limitsCSSClass = [
    "docsLimit docsLimit1",
    "docsLimit docsLimit2",
    "docsLimit docsLimit3"
  ]
  var limitsContainerCSSClass = "docsLimitContainer";
  var limitsDefault = "Укажите...";
  var limitsStrings = [
    [
      {"Б": "Брокерское"},
      {"Д": "Депозитарное"}
    ],
    [
      {"Ф": "Физическое лицо"},
      {"Ю": "Юридическое лицо"}
    ],
    [
      {"РФ": "резидент РФ"},
      {"НРФ": "нерезидент РФ"}
    ]
  ];
  */
  var limits = new Object();
  var limitsDimension = new Object();
  var limitsDimensionString = new Array();
  for (i1=0, l1=limitsStrings[0].length; i1<l1; i1++) {
    n1 = $H(limitsStrings[0][i1]).keys()[0];
    limits[n1] = new Object();
    if (!limitsDimension[n1]) limitsDimension[n1] = 1;
    for (i2=0, l2=limitsStrings[1].length; i2<l2; i2++) {
      n2 = $H(limitsStrings[1][i2]).keys()[0];
      limits[n1][n2] = new Object();
      if (!limitsDimension[n2]) limitsDimension[n2] = 2;
      for (i3=0, l3=limitsStrings[2].length; i3<l3; i3++) {
        n3 = $H(limitsStrings[2][i3]).keys()[0];
        limits[n1][n2][n3] = new Array();
        if (!limitsDimension[n3]) limitsDimension[n3] = 3;
      }
    }
  }
  for (i=0, l=limitsStrings[0].length; i<l; i++) {
    limitsDimensionString[0] += " "+ $H(limitsStrings[0][i]).keys()[0] +" ";
  }
  for (i=0, l=limitsStrings[1].length; i<l; i++) {
    limitsDimensionString[1] += " "+ $H(limitsStrings[1][i]).keys()[0] +" ";
  }
  for (i=0, l=limitsStrings[2].length; i<l; i++) {
    limitsDimensionString[2] += " "+ $H(limitsStrings[2][i]).keys()[0] +" ";
  }
  if (!container) container = document.getElementsByTagName("body")[0];
  divs = container.getElementsByTagName("div");
  docs = new Array();
  i = -1;
  while(divs[++i]) if (divs[i].className && divs[i].className.indexOf("docsItem")>-1) docs.push(Doc(divs[i]));
  if (docs.length==0) return false;
  this.docs = docs;
  this.limits = limits;
  var select = new Array();
  for (i=0, l=limitsStrings.length; i<l; i++) {
    select[i] = document.createElement("select");
    select[i].options[0] = new Option(limitsDefault, "*");
    select[i].onchange = applySort;
    for (i2=0, l2=limitsStrings[i].length; i2<l2; i2++) {
      select[i].options[select[i].options.length] = new Option( $H(limitsStrings[i][i2]).values()[0], $H(limitsStrings[i][i2]).keys()[0] );
    }
  }
  el1 = document.createElement("UL");
  el1.className = limitsContainerCSSClass;
  for (i=0, l=select.length; i<l; i++) {
    // container.insertBefore(select[i], container.childNodes[0]);
    el2 = document.createElement("LI");
    el2.className = limitsCSSClass[i];
    el3 = document.createElement("STRONG");
    el3.appendChild( document.createTextNode( limitsHeaders[i] ) );
    el2.appendChild(el3);
    el2.appendChild(select[i]);
    el1.appendChild(el2);
  }
  container.insertBefore(el1, container.childNodes[0]);
  
  function Doc(el) {
    var i, i1, i2, i3, l, l1, l2, l3, n1, n2, n3, n1a, n2a, n3a, c, c1, c2, c3, sort, sortDef, s, index, s2, index2, s3, index3;
    var sortA = new Array();
    sort = sortDef = el.getAttribute("docsort") && el.getAttribute("docsort")!="" ? el.getAttribute("docsort").toUpperCase() : "";
    while(sort.length>0) {
      sortA.push( ( sort.indexOf(",")>-1 ? sort.substring(0, sort.indexOf(",")) : sort ).replace(/^ /g, '').replace(/ $/g, '') );
      sort = sort.indexOf(",")>-1 ? sort.substring(sort.indexOf(",")+1) : "";
    }
    if (sortA.length==0) sortA[0] = "*";
    sortA.each(
      function(s, index) {
        for (i1=0, l1=limitsStrings[0].length; i1<l1; i1++) {
          c1 = false;
          n1 = $H(limitsStrings[0][i1]).keys()[0];
          // if (limitsDimension[s] && limitsDimension[s]==1 && n1!=s) continue;
          sortA.each( function(s2, index2) {
            if (limitsDimensionString[0].indexOf(" "+ s2 +" ")>-1 && s2!=n1) c1 = true;
          } );
          if (c1) continue;
          for (i2=0, l2=limitsStrings[1].length; i2<l2; i2++) {
            c2 = false;
            n2 = $H(limitsStrings[1][i2]).keys()[0];
            // if (limitsDimension[s] && limitsDimension[s]==2 && n2!=s) continue;
            sortA.each( function(s2, index2) {
              if (limitsDimensionString[1].indexOf(" "+ s2 +" ")>-1 && s2!=n2) c2 = true;
            } );
            if (c2) continue;
            for (i3=0, l3=limitsStrings[2].length; i3<l3; i3++) {
              c3 = false;
              n3 = $H(limitsStrings[2][i3]).keys()[0];
              // if (limitsDimension[s] && limitsDimension[s]==3 && n3!=s) continue;
              sortA.each( function(s2, index2) {
                if (limitsDimensionString[2].indexOf(" "+ s2 +" ")>-1 && s2!=n3) c3 = true;
              } );
              if (c3) continue;
              limits[n1][n2][n3].push(el);
            }
          }
        }
      }
    );
    return el;
  }
  
  function applySort() {
    var i, i1, i2, i3, i4, l, l1, l2, l3, i4, n1, n2, n3, vis;
    var els = new Array();
    for (i1=0, l1=limitsStrings[0].length; i1<l1; i1++) {
      n1 = $H(limitsStrings[0][i1]).keys()[0];
      if (select[0].value!="*" && select[0].value!=n1) continue;
      for (i2=0, l2=limitsStrings[1].length; i2<l2; i2++) {
        n2 = $H(limitsStrings[1][i2]).keys()[0];
        if (select[1].value!="*" && select[1].value!=n2) continue;
        for (i3=0, l3=limitsStrings[2].length; i3<l3; i3++) {
          n3 = $H(limitsStrings[2][i3]).keys()[0];
          if (select[2].value!="*" && select[2].value!=n3) continue;
          for (i=0, l=limits[n1][n2][n3].length; i<l; i++) {
            vis = true;
            for (i4=0, l4=els.length; i4<l4; i4++) {
              if ( els[i4] == limits[n1][n2][n3][i] ) {
                vis = false;
                break;
              }
            }
            if (vis) els.push(limits[n1][n2][n3][i]);
          }
        }
      }
    }
    // limits[select[0].value][select[1].value][select[2].value];
    for (i=0, l=docs.length; i<l; i++) {
      vis = false;
      for (i2=0, l2=els.length; i2<l2; i2++) {
        if (docs[i]==els[i2]) vis = true;
      }
      docs[i].style.display = vis ? "block" : "none";
    }
  }
  

  /* 
  function addLimitation(docItem) {
  }
  */
}

