d = document;


function sfv(field, event) {
  var value = field.title;

  switch (event) {
    case 'onblur':
      if (field.value == '') field.value = value;
      break;
    case 'onfocus':
      if (field.value == value) field.value = '';
      break;
  }
  return true;
}

function $(s) {
  var calljQuery = false;
  if (typeof s === "string") {
    var re = new RegExp("^[\\w-\\(\\)]+$", "");
    if (re.test(s)) {
      return document.getElementById(s);
    } else {
      calljQuery = true;
    }
  }
  if (calljQuery && typeof jQuery != "undefined") return jQuery(s);
  else {
    return (typeof(s) == "object") ? s : document.getElementById(s);
  }
}

/* Проверка корректности ввода данных в поля формы */
function validate(form, passwordError) {
  var i;
  var type, title, mandatory, value;
  if (cals && calendarConvert && cals.length > 0) {
    for (i = 0; i < cals.length; i++) {
      if (!calendarConvert(cals[i].name)) {
        showSaveButton();
        return false;
      }
    }
  }

  var selectTags = form.getElementsByTagName("select");
  if (selectTags) {
    for (i = 0; i < selectTags.length; i++) {
      type = null;
      title = null;
      type = selectTags[i].getAttribute("attrType");
      title = selectTags[i].getAttribute("attrTitle");
      mandatory = selectTags[i].getAttribute("isMandatory");
      value = selectTags[i].value;
      if (title) {
        title = "'" + title + "'";
      } else {
        title = "";
      }
      if (mandatory) {
        if (mandatory == "true" && (value == null || value == "" || trim(value) == "")) {
          alert((typeof(validateMessages) == "object") ? validateMessages.mandatoryFieldEmpty.replace(/\{1\}/, title) : 'Required field not filled: ' + title);
          return false;
        }
      }
    }
  }

  var textAreaTags = form.getElementsByTagName("textarea");
  if (textAreaTags) {
    for (i = 0; i < textAreaTags.length; i++) {
      type = null;
      title = null;
      type = textAreaTags[i].attrType;
      title = textAreaTags[i].attrTitle;
      mandatory = textAreaTags[i].isMandatory;
      value = textAreaTags[i].value;
      if (title) {
        title = "'" + title + "'";
      } else {
        title = "";
      }
      if (mandatory) {
        if (mandatory == "true" && (value == null || value == "" || trim(value) == "")) {
          alert((typeof(validateMessages) == "object") ? validateMessages.mandatoryFieldEmpty.replace(/\{1\}/, title) : 'Required field not filled: ' + title);
          return false;
        }
      }
    }
  }

  var inputTags = form.getElementsByTagName("input");
  var prevPass = null;
  if (inputTags) {
    for (i = 0; i < inputTags.length; i++) {

      var elementType = inputTags[i].type || inputTags[i].getAttribute('TYPE');
      if (elementType) elementType = elementType.toUpperCase();

      if (elementType == "PASSWORD") {
        if (prevPass) {
          if (prevPass.value != inputTags[i].value) {
            alert((passwordError) ? passwordError : ((typeof(validateMessages) == "object") ? validateMessages.confirmPsssword : "Повторите ввод пароля"));
            showSaveButton();
            return false;
          } else {
            prevPass = null;
          }
        } else {
          prevPass = inputTags[i];
        }
      } else if (inputTags[i].type == "file") {
        title = null;
        title = inputTags[i].getAttribute("attrTitle");
        mandatory = inputTags[i].getAttribute("isMandatory");
        value = inputTags[i].value;
        if (title) {
          title = "'" + title + "'";
        } else {
          title = "";
        }
        if (mandatory) {
          if (mandatory == "true" && (value == null || value == "" || value == "объект не выбран" || trim(value) == "")) {
            alert((typeof(validateMessages) == "object") ? validateMessages.mandatoryFieldEmpty.replace(/\{1\}/, title) : 'Required field not filled: ' + title);
            return false;
          }
        }
      } else if (inputTags[i].type == "text") {
        type = null;
        title = null;
        type = inputTags[i].getAttribute("attrType");
        title = inputTags[i].getAttribute("attrTitle");
        mandatory = inputTags[i].getAttribute("isMandatory");
        value = inputTags[i].value;
        if (title) {
          title = "'" + title + "'";
        } else {
          title = "";
        }
        /* проверяем наличие маски у поля */

        var maska = inputTags[i].getAttribute("mask");
        if (maska != null) {
          if (self.parseMask) maska = parseMask(maska);
          if (inputTags[i].value == maska)  inputTags[i].value = "";
        }

        if (mandatory) {
          if (mandatory == "true" && (value == null || value == "" || value == "объект не выбран" || trim(value) == "")) {
            alert((typeof(validateMessages) == "object") ? validateMessages.mandatoryFieldEmpty.replace(/\{1\}/, title) : 'Required field not filled: ' + title);
            return false;
          }
        }
        if (type && value) {
          if (type == "2") {
            // Integer
            if (!checkinteger(value)) {
              alert((typeof(validateMessages) == "object") ? validateMessages.onlyIntValues.replace(/\{1\}/, title) : "Поле " + title + " может содержать только целые числа");
              showSaveButton();
              return false;
            }
          } else if (type == "3") {
            // Float
            if (!checknumber(value)) {
              alert((typeof(validateMessages) == "object") ? validateMessages.onlyFloatValues.replace(/\{1\}/, title) : "Поле " + title + " может содержать только вещественные значения");
              showSaveButton();
              return false;
            }
          }
          if (self.validateField && maska && type != "5") {
            if (validateField(inputTags[i]) == 0) {
              showSaveButton();
              return false;
            }
          }
        }
      } else if (inputTags[i].type == "hidden") {
        type = null;
        title = null;
        type = inputTags[i].getAttribute("attrType");
        title = inputTags[i].getAttribute("attrTitle");
        mandatory = inputTags[i].getAttribute("isMandatory");
        value = inputTags[i].value;
        if (title) {
          title = "'" + title + "'";
        } else {
          title = "";
        }
        if (mandatory) {
          if (mandatory == "true" && (value == null || value == "" || value == "объект не выбран" || trim(value) == "")) {
            alert((typeof(validateMessages) == "object") ? validateMessages.mandatoryFieldEmpty.replace(/\{1\}/, title) : 'Required field not filled: ' + title);
            return false;
          }
        }
        if (type && value) {
          if (type == "2") {
            // Integer
            if (!checkinteger(value)) {
              alert((typeof(validateMessages) == "object") ? validateMessages.onlyIntValues.replace(/\{1\}/, title) : "Поле " + title + " может содержать только целые числа");
              showSaveButton();
              return false;
            }
          } else if (type == "3") {
            // Float
            if (!checknumber(value)) {
              alert((typeof(validateMessages) == "object") ? validateMessages.onlyFloatValues.replace(/\{1\}/, title) : "Поле " + title + " может содержать только вещественные значения");
              showSaveButton();
              return false;
            }
          }
        }
      }

    }
  }
  return true;
}

function setChanged(flag) {
  try {
    displayDialog = true;
    var field = document.getElementById("modified");
    if (field) {
      field.value = "true";
      if (!flag) {
        field.value = "false";
      }
    }
  } catch(e) {
  }
  return true;
}

function create(form) {
  form.cmd.value = "create";
  return true;
}

function switchOrgInfo(tag, gallery) {
  if (!tag) return;
  var aid = tag.getAttribute("aid");
  if (aid == null || aid == "") return;
  var divID = "#a" + aid.replace("@", "\\@");
  jQuery(tag.parentNode).find("a").removeClass();
  jQuery(tag).addClass("current");
  var div = jQuery(divID);
  div.parent().children().css("display", "none");
  div.css("display", "");
  var printparam = document.getElementById('printbutton').name;

  printparam = printparam + "&attrprint=" + aid;

  if (gallery == "false") {
    document.getElementById('photovideo').style.display = "none";
    printparam = printparam + "&gallery=false";
  } else {
    document.getElementById('photovideo').style.display = "";
  }
  document.getElementById('printbutton').href = printparam;
}


function switchTopOrgInfo(tag) {
  if (!tag) return;
  var aid = tag.getAttribute("aid");
  if (aid == null || aid == "") return;
  var divID = "#a" + aid.replace("@", "\\@");
  jQuery(tag.parentNode).find("a").removeClass();
  jQuery(tag).addClass("active");
  var div = jQuery(divID);
  div.parent().children().css("display", "none");
  div.css("display", "");
}

function switchVideo(videoId, pagenatorId) {
  var videoDiv = jQuery("#" + videoId);
  videoDiv.parent().children().animate({ opacity: "hide" }, "slow").css("display", "none");
  videoDiv.css("display", "");
  videoDiv.animate({ opacity: "show" }, "slow");
  var pagenator = jQuery("#" + pagenatorId);
  pagenator.animate({ opacity: "hide" }, "fast");
  pagenator.animate({ opacity: "show" }, "fast");
}

function switch3D(videoId, pagenatorId) {
  var videoDiv = jQuery("#" + videoId);
  videoDiv.parent().children().animate({ opacity: "hide" }, "slow").css("display", "none");
  videoDiv.css("display", "");
  videoDiv.animate({ opacity: "show" }, "slow");
  var pagenator = jQuery("#" + pagenatorId);
  pagenator.animate({ opacity: "hide" }, "fast");
  pagenator.animate({ opacity: "show" }, "fast");
}

function switchVideoPagenator(i) {
  var videoPage = jQuery("#videoPage_" + i);
  //videoPage.parent().children().children().css("background-image", "url(../../images/military/gallery/t.gif)");
  videoPage.parent().children().children().removeClass("videonava");
  //videoPage.children().css("background-image", "url(../../images/military/gallery/ta.gif)");
  videoPage.children().addClass("videonava");
}

function switch3DPagenator(i) {
  var videoPage = jQuery("#threeDPage_" + i);
  videoPage.parent().children().children().removeClass("videonava");
  videoPage.children().addClass("videonava");
}

function recaptcha(img) {
  var d = new Date();
  img.src = "/jcaptcha?" + d.getTime();
}

function onPageNavChange(shift, maxValue, elemId, sitePajeURL, objId, urlCommon, subSelector, loader) {
  var $pageNav = jQuery("#" + elemId);
  var page = parseInt($pageNav[0].value) + shift;
  if (page > maxValue) {
    page = maxValue;
  }
  getHTMLwithParams(sitePajeURL, "id=" + objId + "&page=" + page + urlCommon,
      subSelector, loader, subSelector);
  return getFalse();
}

/* subSelector- part of the response HTML; if null get all response HTML */
function getHTMLwithParams(page, params, holder, loader, subSelector, callBackMethod) {
  if (!holder) return;
  var suffix = (page.lastIndexOf(".htm") != -1 || page.lastIndexOf(".sx") != -1) ? "" : (page.indexOf("?") == -1) ? '.htm' : "";
  var _url_ = ((page.indexOf("http://") == -1) ? ((typeof(baseUrl) == "undefined") ? document.getElementsByTagName("base")[0].getAttribute("href") : baseUrl) : "") + page + suffix;
  if (typeof(params) != "object") {
    var paramStr = (typeof(params)!="undefined")?params:"";
    params = {"_":  new Date().getTime(), "inAjax": "true"};
    var ap = paramStr.split("&");
    for (var i = 0; i < ap.length; i++) {
      var p = ap[i].split("=");
      if (p[0]) params[p[0]] = (typeof(p[1]) != "undefined") ? p[1] : "";
    }
  } else {
    params["_"] = new Date().getTime();
  }
  var myLoader = (!loader) ? ".loading" : loader;
  var holderObj = jQuery(holder);
  var tmpHolderObj = holderObj[0];
  if (tmpHolderObj) {
    if (subSelector != null && subSelector != "") {
      holderObj.attr("subSelector", subSelector);
      if (("#" + tmpHolderObj.id) == subSelector || ("." + tmpHolderObj.className) == subSelector) {
        holderObj.attr("dublicate", true);
      }
    }
    holderObj.attr("loader", myLoader);
    loadProcess(myLoader, tmpHolderObj, true);
  }
  if (callBackMethod && typeof(callBackMethod) == "function") {
    holderObj.ajaxComplete(function(e, req, settings) {
      if (settings.context[0] == this) {
        callBackMethod(this);
      }
    });
  }
  jQuery.ajax({
    url:  _url_,
    dataType: "html",
    type: 'post',
    context:holderObj,
    data: params,
    complete: function(res, status) {
      if (status === "success" || status === "notmodified") {
        if (!this.attr("skipResponse")) {
          var subSelector = this[0].getAttribute("subSelector");
          var isDublicate = this[0].getAttribute("dublicate");
          if (subSelector) {
            var tmp = jQuery("<div />").append(res.responseText);
            var ss = tmp.find("form " + subSelector);
            /* alert(subSelector+"\n\n"+tmp.find(subSelector).size()) */
            if ((!ss || ss.size() == 0)) ss = tmp.find(subSelector);
            this.html((!ss || ss.size() == 0) ? "<div>" + (typeof(ajaxMessages) != "undefined" && typeof(ajaxMessages) == "object") ? ajaxMessages.getDataError : "Error when receiving data." + "</div>" : (isDublicate) ? ss.html() : ss);
            ss = null;
            tmp.html("&nbsp;");
          } else {
            this.html(res.responseText);
          }
        }
        loadProcess(this.attr("loader"), this[0], false);
      }
    }
  });
}

function loadProcess(loadDiv, ContainerDiv, mode) {
  try {
    var load = (typeof(loadDiv) == "string") ? jQuery(loadDiv)[0] : loadDiv;
    if (load) load.style.display = (mode) ? "" : "none";
    var container = (typeof(ContainerDiv) == "string") ? jQuery(ContainerDiv)[0] : ContainerDiv;
    if (container) container.style.display = (mode) ? "none" : "";
  } catch(e) {
  }
}

function newGrp(curTag, grp, field) {
  window.onunload = null;
  if (field == null || isNaN(field)) var field = "agrp";
  var form = getForm(curTag);
  form.cmd.value = "prepare";
  if (form[field] != null) {
    form[field].value = grp;
    var isFormValid = true;
    if (form.onsubmit != null) {
      isFormValid = form.onsubmit();
    }
    if (isFormValid) {
      form.submit();
    }
  }
  return true;
}

var lastGroup;
var lastParentID;
var lastSubGroupKeys = new Array();
var lastSubGroupValues = new Array();

function showNextGrp(curTag, grpID, defaultGrpID, parentID) {
	var grp=$(grpID);
	if (!grp) return;
	if (lastGroup == null) {
		lastGroup = defaultGrpID;
	}
	if (grpID == lastGroup) {
    try {
      $('formSubmit').style.display = '';
    } catch(e) {
    }
    return;
  }
	if (parentID != null) {
		lastParentID = parentID;
	}
	//alert("-- "+lastGroup+" ---"+grpID+"------"+parentID+"----------"+lastParentID);
	var lastGrp=$(lastGroup);
	if (lastGrp) {
		lastGrp.style.display = 'none';
		var tdToHide = $("td" + lastGroup);
        if (tdToHide) {
            if (tdToHide.className == "tabA") {
                 tdToHide.className = "tabP";
            }
        }
	}

	grp.style.display = '';
	if (curTag.className == 'tabP') {
		curTag.className = 'tabA';
	}

		var agrp = document.getElementById("agrpChld");
		if (agrp) {
			agrp.value = grpID;
		}
	lastGroup = grpID;
}

function loadDocumentParts(page, params, holder, loader, callback) {
  var contentArea = jQuery(holder);
  var cAtag = (contentArea[0]) ? contentArea[0] : null;
  if (!cAtag) return;
  var isShow = cAtag.getAttribute("loaddoc");
  if (!isShow) {
    var cb = function(){
      if (jQuery.isFunction(callback)) {
        callback();
      }
      scrolltoChapter();
    };
    getHTMLwithParams(page, params, holder, loader, null, cb);
    contentArea.attr("loaddoc", "true");
  } else {
    if (cAtag.style.display == "none") {
      contentArea.css("display", "");
    } else {
      contentArea.css("display", "none");
    }
  }
}

function scrolltoChapter() {
  window.location.hash = "txt";
}

var currentGame = null;
function startGame(skipShadow) {
  if (currentGame) {
    loadGame(currentGame, skipShadow);
  }
}
function loadGame(id, skipShadow) {
  var gameDiv = jQuery(id);
  if (gameDiv && gameDiv[0]) {
    gameDiv.css("display", "");
    var ie = jQuery.browser.msie;
    if (!skipShadow || ie) {
      if (window.showShadow) showShadow();
      jQuery(".closeGame").css("display", "");
    }
    currentGame = gameDiv[0];
    if (ie) {
      var block = jQuery(".game");
      if (!block[0]) {
        block = jQuery("#gameHolder");
        block.addClass("game");
      }
      block.closest("#center").css("position", "static");
      var h = jQuery(window).height();
      var gh = gameDiv.height();
      var delta = h - gh;
      var t = 0;
      var offset = 50;
      if (delta <= offset) {
        h = gh + offset;
        t = 10;
        window.resizeBy(0, ((delta <= 0) ? delta * (-1) : 0) + offset);
      } else {
        t = Math.round(delta / 3);
      }
      block.css("top", t + "px");

      var area = jQuery(".area1");
      area.css("overflow", "hidden");
      area.attr("oldHeight", area.height());
      jQuery(".area1").add("#overlay").height(h);
    }
  }
}

function closeGame(skipHide) {
  if (currentGame && !skipHide) {
    currentGame.style.display = "none";
  }
  jQuery(".closeGame").css("display", "none");
  hideShadow();
  if (jQuery.browser.msie) {
    var area = jQuery(".area1");
    area.css("overflow", "visible");
    area.height(area.attr("oldHeight"));
    jQuery("#startGame").css("display", "");
  }
}

function armyTypePic(obj, mode) {
  var pic = jQuery(obj);
  if (!pic) return;
  var src = pic.css("background-image");
  if (mode) {
    pic.attr("oldsrc", src);
    pic.css("background-image", src.replace(".gif", "a.gif"));
  } else {
    pic.css("background-image", pic.attr("oldsrc"));
  }
}

function set_style(o) {
  var p = d.getElementById('page'),
      style = (p.className.length) ? p.className.split(' ') : Array(3);
  style[0] = o.theme || (style[0] || 'theme1');
  style[1] = o.font || (style[1] || 'font1');
  style[2] = o.kern || (style[2] || 'kern1');

  p.className = style.join(' ');

  createCookie('thlPortalStyle', p.className, 0);

  return (false);
}

/**
 * Рейтингирует объект и возвращает результат голосования
 * @param oForm форма с данными голосования
 * @param containerId контейнер для результатов голосования
 */
function rateObject(oForm, containerId, callback) {
  if (oForm && containerId) {
    try {
      var params = new Object();
      var el;
      for (var i=0; i < oForm.elements.length; i++) {
        el = oForm.elements[i];
        if (!el) continue;
        if (el && el.type && el.name) {
          if (el.name == '[object Attr]') {
          } else {
            if (el.type.toUpperCase() == 'RADIO' && !el.checked) {
              // пропускаем не выбранные элементы
            } else {
              params['params(' + el.name + ')'] = el.value;
            }
          }
        }
      }
      params['pageCode'] = params['params(_pageId)'];
      params['pubType'] = 'cmsPoRatingResult';
      params['zone'] = 'ajax';
      params['num'] = 10;
      loadDocumentParts("util/pubblock.sx",params,'#' +containerId,'.loading', callback);
    } catch(e) {
      alert(e);
    }
  }
  return false;
}

jQuery(d).ready(function() {jQuery('span.ftr_block').hide();});
