/*--------------мега код создающий менюхи--------------*/

function createGalNavigator() {
    var gal=jQuery(".galMenu");
    if (gal.attr("buildAlready")) return;
    gal.buildMenu(
    {
        menuWidth:170,
        openOnRight:false,
        menuSelector: ".galMenuContainer",
        hasImages:false,
        fadeInTime:100,
        fadeOutTime:300,

        opacity:1,
        shadow:true,
        openOnClick:true,
        closeOnMouseOut:true,
        closeAfter:500,
        minZindex:"auto",

        adjustLeft:2,
        adjustTop:10,
        menuTop: jQuery.browser.msie ? 0 : 5,
        menuLeft:-8
    });
    gal.attr("buildAlready",true);
}
jQuery(document).ready(function($) {
    $(".myMenu").buildMenu(
    {
        menuWidth:150,
        menuWidthCorrection:-20,
        stretchMenu: true,
        useBullet:"<span>&nbsp;</span>",
        openOnRight:false,
        //	containment:"wrapper",
        hasImages:false,
        fadeInTime:100,
        fadeOutTime:300,

        opacity:.99,
        shadow:true,
        openOnClick:false,
        closeOnMouseOut:true,
        closeAfter:500,
        minZindex:"auto",

        adjustLeft:2,
        adjustTop:10
    });

    $(".ddMenu").buildMenu(
    {
        menuWidth:170,
        /*menuHolder:".cityes",*/
        openOnRight:false,
        menuSelector: ".ddMenuContainer",
        hasImages:false,
        fadeInTime:100,
        fadeOutTime:300,

        opacity:1,
        shadow:true,
        openOnClick:true,
        closeOnMouseOut:true,
        closeAfter:1000,
        /*minZindex:"auto",*/

        /*      adjustLeft:2,
         adjustTop:10, */
        menuLeft:($.browser.msie) ? -30 : -12,
        menuTop: -15,
        minZindex:140,
        noPos:true
    });

    if(self.startPlaySwf) startPlaySwf();
    createGalNavigator();
    if(self.showTranslator) showTranslator();
    if(self.showWeather) showWeather();
});

/*-----------------------------------------*/
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") ? id : document.getElementById(s);
    }
}


var baseUrl = document.getElementsByTagName("base")[0].href;
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;

function getFrame(win, target) {
    for (var i = 0; i < win.frames.length; i++) {
      try{
        if (win.frames[i].name == target) {
            return win.frames[i];
        }
      } catch(err) {

      }
    }
    return null;
}

function getIframeWindow(iframeTag) {
    return (!iframeTag) ? null : (iframeTag.contentDocument) ? iframeTag.contentDocument : iframeTag.contentWindow;
}

function url(newUrl, target, flag) {
    newUrl = baseUrl + newUrl;
    var targetFrame = null;
    var f = null;
    if (!target || target == "_self") {
        targetFrame = self;
    } else if (target == "_blank") {
        return window.open(newUrl, "_blank", "");
    } else {
        f = getFrame(self, target);
        if (!f) {
            f = getFrame(self.parent, target);
            if (!f) {
                f = getFrame(top, target);
            }
        }
        if (f) {
            targetFrame = (f.length > 0) ? f[0] : f;
        }
        else {
            return window.open(newUrl, "_blank", "");
        }
    }

    if (targetFrame) {
        var iframeWin = (targetFrame.location) ? targetFrame : getIframeWindow(targetFrame);
        if (flag != null && flag) iframeWin.location.replace(newUrl);
        else iframeWin.location.href = newUrl;
    }
    else {
        alert("Frame " + target + " does not exists.");
    }
    return targetFrame;
}
function prepareShowForm() {
    if (root.addEventListener) root.addEventListener("load", doShowForm, false);
    else if (root.attachEvent) root.attachEvent("onload", doShowForm);
}
function doShowForm() {
    show_form('loginform');
}
/*  display login form */
function show_form(div) {
    var place = (typeof(div) == typeof("")) ? $(div) : div;
    if (place == null) return;
    place.className = "editForm_active";
    place.style.display = "block";
    var _body = window.document.body;
    var x_offset = Math.round(( _body.clientWidth - place.offsetWidth) * 4 / 9);
    var x = (isIE ? _body.scrollLeft : window.scrollX) + x_offset;

    var y_offset = 300;
    var h = _body.clientHeight;
    /*пляски с бубном  по причине того что (clientHeight=1 на любых Ѕраузерах или clientHeight = ScrollHeight под IE) при попытке эмуляции min-width для IE6 (хак на дивах)*/
    if ((h <= 1 && window.innerHeight) || (h > 1 && !isIE) || (h < screen.availHeight)) {
        y_offset = Math.round(( ((window.innerHeight) ? window.innerHeight : h) - place.offsetHeight) * 4 / 9);
    }
    var y = (isIE ? _body.scrollTop : window.scrollY) + y_offset;

    if (isIE) {
        place.style.pixelLeft = x;
        place.style.pixelTop = y;
    }
    else {
        place.style.left = x + "px";
        place.style.top = y + "px";
    }
    place.oncontextmenu = new Function("return false");
    if (isIE) {//очередные проблемы IE6 возникшие из-за эмуляции min-width для IE6 -вытаскиваем форму логина наверх.
        var form = jQuery('.auth');
        if (form[0]) {
            form.prependTo(".body");
        }
    }
    //	place.style.display="block";
    place.style.visibility = "visible";
    var loginField = $("login");
    if (loginField) loginField.focus();
    addShadow();
    showShadow();
}

/* hide login form */
function hide_Form(div) {
    var place = (typeof(div) == typeof("")) ? document.getElementById(div) : div;
    if (place == null) return;
    place.style.display = "none";
//    jQuery("#techErr").css("display",none);
    hideShadow();
}

function sendAuthRequest(form, selector, subSelector) {
  if(!form) return false;
  var paramStr=jQuery(form).serialize();
  var params={"_":  new Date().getTime()};
  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[0]=="referer")?form.action:p[1]:"";
      }
  }
  var holderObj=jQuery(selector);
  if (holderObj[0]) {
     if(subSelector!=null && subSelector!="") holderObj.attr("subSelector",subSelector);
  }
  holderObj.attr("loginForm",form.id);
  jQuery.ajax({
      url: form.action,
      dataType: "html",
      type: 'post',
      context:holderObj,
      data: params,
      complete: function( res, status ) {
        if ( status === "success" || status === "notmodified" ) {
            var ss=jQuery("<div />").append(res.responseText).find("#menutop");
            if (!ss || ss.size()==0) {jQuery("#techErr").html("ќшибка авторизации! ѕопробуйте авторизоваться позже.").css("display","");}
            else {
                var formId=this.attr("loginForm");
                if(formId && formId!="") {
                    jQuery("#"+formId).remove();
                }
                this.html(ss.html());
                if(self.hideShadow) self.hideShadow();
            }
        } else {
            jQuery("#techErr").html("ќшибка авторизации! ѕопробуйте авторизоваться позже.").css("display","");
        }
      }
    });
    return false;
}

var autoLoadingFirst = false;
function autoLoadFirst(url) {
    autoLoadingFirst = true;
    /*   if (root.addEventListener) root.addEventListener("load", function() {getGalleryHtml(url); autoLoadingFirst=false;}, false);
     else if (root.attachEvent) root.attachEvent("onload", function() {getGalleryHtml(url); autoLoadingFirst=false;});
     */
    getGalleryHtml(url);
    //  autoLoadingFirst=false;
}

//old getGalleryHtml
/*
function getHtml(link) {
    if (!link || link == "") return;
    jQuery("#promoGals").load(link + "/ajax.htm #blueZone", function() {
        createGalNavigator();
        createPromoGallery();
    });
}    */

function getGalleryHtml(link) {
    if (!link || link == "") return;
    jQuery.ajax({
      url: link + "/ajax.htm",
      dataType: "html",
      complete: function( res, status ) {
        if ( status === "success" || status === "notmodified" ) {
            var tag=jQuery('#promoGals');
            tag.html(res.responseText);
            if(self.startPlaySwf) startPlaySwf();
            createGalNavigator();
            var bz=tag.find("#blueZone");
            if(bz && bz[0]){
                createPromoGallery();
            }
        }
      }
    });
}

function showCityTitle(name) {
    if (!name || name == "") return;
    jQuery(".ddMenu .right").text(name);
}
function showBluZone() {
    jQuery(".line")[0].className = "bluezone"
}

function sendPollAnswer(form,tag,subSelector) {
    if (!form || !form.tagName || form.tagName.toLowerCase()!="form") return false;
    var formParams="";
    try {
        formParams=jQuery(form).serialize();
        formParams=formParams.replace(/%40/g,"@");
        formParams=formParams.replace(/%2C/g,",");
    } catch(e) {
        return false;
    }
    if(p=form.getAttribute("params")) {
       formParams=formParams+(p!="")?"&"+p:""; 
    }
    getHTMLwithParams(form.action,formParams,tag, null, subSelector);
    return false;
}

function showPollRes(link, votes, tag, a) {
  var obj=(typeof(tag)=="object")?tag:document.getElementById(tag);
  if(!obj) return;
  var a_Tag=(typeof(a)=="object")?a:document.getElementById(a);
  if(obj.style.display=="none") {
     getHTMLwithParams(link, votes, obj, null, null);
     //obj.style.display="";
     if (a_Tag) a_Tag.innerHTML="Скрыть результаты";
  } else {
     obj.style.display="none";
     if (a_Tag) a_Tag.innerHTML="Результаты";

  }
}

function switchNews(tab,page,params,holder,loader,subSelector) {
  if(tab && typeof(tab)=="object") {
      var div=tab.parentNode;
      var siblingDiv=jQuery(div.parentNode).find("."+((div.className=="bookmark")?"bookmarkPassive":"bookmark"));
      if (siblingDiv[0])  siblingDiv[0].className = (siblingDiv[0].className=="bookmark")?"bookmarkPassive":"bookmark";
      div.className = (div.className=="bookmark")?"bookmarkPassive":"bookmark";
  }
  getHTMLwithParams(page,params,holder,loader,subSelector);
}

//subSelector- part of the response HTML; if null get all response HTML
function getHTMLwithParams(page,params,holder,loader,subSelector, callBackMethod) {
  if(!holder) return;
  var _url_ = ((page.indexOf("http://")==-1)?baseUrl:"") +page+'.htm';
  if (typeof(params)!="object") {
      var paramStr = params;
      params={"_":  new Date().getTime()};
      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);
  if (holderObj[0]) {
     if(subSelector!=null && subSelector!="") holderObj.attr("subSelector",subSelector);
     holderObj.attr("loader",myLoader);
     loadProcess(myLoader,holderObj[0],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.attr("subSelector");
               if (subSelector) {
                    var ss=jQuery("<div />").append(res.responseText).find("form "+subSelector);
                    this.html((!ss || ss.size()==0)?"<div>Ошибки при получении данных.</div>":ss);
               } 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 push() {
  var key=0,val;    
  while(key<arguments.length) {
    val=arguments[key];
    if(typeof(val)!="undefined") {
        this[this.length] = val;
    }
    key++;
  }
  return this.length;
}
//Array.prototype.push = push;

function recaptcha(img) {
  var d = new Date();
  img.src = "/jcaptcha?" + d.getTime();
}

function switchGrp(tag,name) {
 if(!tag || typeof(tag)!="object" || !tag.tagName) return;
   var p=tag.parentNode;
   var links=p.getElementsByTagName("a");
   var i,link,div;
   for (i = 0; i < links.length; i++) {
      link=links[i];
      link.className = "orgbookm";
      div = document.getElementById(link.getAttribute("container"));
      if (div) div.style.display = "none";
   }
   tag.className = "orgbookma";
   tag.setAttribute("justpressed",true);
   div = document.getElementById(tag.getAttribute("container"));
   if (div) div.style.display = "";
   window.location.hash=name;
}

function prepareRate(selector,field) {
 var inp=jQuery(field.replace("@","\\@"));
 jQuery(selector).each(function(i,field){
      jQuery(this).mouseover(function(e) {
         if(!jQuery(this).attr("choosen")) {
            jQuery(this).removeClass().addClass("mark"+jQuery(this).attr("value")+"-over");
         }
      }).mouseout(function(e){
          if(!jQuery(this).attr("choosen")) {
            jQuery(this).removeClass().addClass("mark"+jQuery(this).attr("value"));
          }
      }).click(function(e){
          var _this=jQuery(this);
          var isChoosen=_this.attr("choosen");
          jQuery(this.parentNode).find("span").each(function(){
            jQuery(this).removeClass().addClass("mark"+jQuery(this).attr("value"));
            jQuery(this).removeAttr("choosen");
          });
          if(!isChoosen) {
             _this.removeClass().addClass("mark"+_this.attr("value")+"-choosen");
             _this.attr("choosen","true");
              inp.attr("value",_this.attr("value"));
              inp.attr("checked",true);
          } else {
              _this.removeAttr("choosen");
              inp.attr("value","");
              inp.attr("checked",false);
          }
      });
 });
}
function shrateform(mode,selector, flag) {
    if(!flag) jQuery(".showrateform").css("display",(mode)?"none":"");
    jQuery(".hiderateform").css("display",(mode)?"":"none");
    jQuery(selector.replace("@","\\@")).css("display",(mode)?"":"none");
}
function sendRateAnswer(form) {
    //проверка ввода обязательных полей
    /*var isCheck = true;
    var isContainMark = false;
    var errorMsg = "";

    var inputSelector = "#" + jQuery(form).attr("id") + " input,textarea";
    inputSelector = $(inputSelector).serializeArray();
    for( index in inputSelector) {
      if(inputSelector[index].name == "name" && inputSelector[index].value == "") {
        errorMsg = errorMsg + "Введите \"Имя\".\n";
        isCheck = false;
      } else if(inputSelector[index].name == "comment" && inputSelector[index].value == "") {
        errorMsg = errorMsg + "Введите \"Комментарий\".\n";
        isCheck = false;
      } else if(inputSelector[index].name == "antiflood" && inputSelector[index].value == "") {
        errorMsg = errorMsg + "Введите код защиты от спама.\n";
        isCheck = false;
      } else if(inputSelector[index].name.indexOf("mark") != -1) {
        isContainMark = true;
      }
    }
    if(!isContainMark) {
      errorMsg = errorMsg + "Установите оценку.\n";
      isCheck = false;
    }
    if(!isCheck) {
      alert(errorMsg);
      return false;
    }*/

    //формирование параметров для ajax запроса
    if (!form || !form.tagName || form.tagName.toLowerCase()!="form") return false;
    var formParams="";
    try {
      formParams=wrapFormValues(jQuery(form));
    } catch(e) {
        return false;
    }
    if(p=form.getAttribute("params")) {
       formParams=formParams+(p!="")?"&"+p:"";
    }
    shrateform(0,"#"+form.parentNode.id,true);
    var _url_ = ((form.action.indexOf("http://")==-1)?baseUrl:"") +form.action+'.htm';
    loadProcess(".rateloading",jQuery(form),true);
    jQuery.ajax({
      url:  _url_,
      dataType: "html",
      type: 'post',
      data: formParams,
      context:jQuery(form),
      complete: function( res, status ) {
        var div = this.parent();
        if(jQuery.trim(res.responseText) == "ok") {
          jQuery(div).html("Спасибо!<br /> Ваш комментарий и оценка успешно отправлены!<br /> После проверки модератором они будут отображены на сайте!");
        } else {
          document.getElementById("rateResultDiv").innerHTML = res.responseText;
          document.getElementById("btnReloadCaptcha").onclick();
          jQuery("#antiflood").val("");
        }
        loadProcess(".rateloading",this[0],false);
        shrateform(1,"#"+div.attr('id'),false);
      }
    });
    return false;
}
function wrapFormValues(form) {
  form = "#" + form.attr("id") + " input,textarea";
  form = $(form).serializeArray();
  var dataArray = "";

  for( index in form) {
    if(form[index].value)   {
      dataArray = dataArray + form[index].name + "=" + form[index].value + "&";
    }
  }

  return dataArray;
}

function showReteAnswerResult(form) {
    if (!form) return;
    var div = form.parentNode;
    if (div){
       div.innerHTML="Спасибо!<br /> Ваш комментарий и оценка успешно отправлены!<br /> После проверки модератором они будут отображены на сайте!";
       shrateform(1,"#"+div.id,true);
    }      
}
var  oldOrgGalleryTr=null;
function showOrgGallery(tdId,page, skipTitle){
    var td=jQuery("#"+tdId);
    if(!td) return;
    if(!td.attr("isLoaded")) {
        var divs=td.find("div");
        var resdiv = (divs[1] && divs[1].tagName)?"."+ divs[1].className:null;
        var loader = (divs[0] && divs[0].tagName)?"#"+ divs[0].id:null;
        var p=td.attr("objId");
        if(!p) p="";
        if(skipTitle) p=p+"&skipName=1";
        getHTMLwithParams(page, p, resdiv, loader);
        td.attr("isLoaded","true");
    }
    if(oldOrgGalleryTr)oldOrgGalleryTr.style.display="none";
    td.css("display","");
    oldOrgGalleryTr=td[0];
}

function handleGoBack() {
    var hash=window.location.hash;
    if(typeof(hash)=="undefined") return;
    var id="";
    switch(hash) {
        case "#general": id="abookm1"; break;
        case "#events": id="abookm2"; break;
        case "#services": id="abookm7"; break;
        case "#foto": id="abookm3"; break;
        case "#rooms": id="abookm5"; break;
        case "#feedback": id="abookm4"; break;
        default: id="abookm1";
    }
    if(id!="") {
        var obj = jQuery("#"+id).first();
        if(obj && obj[0]) {
            if(obj.attr("justpressed")) {
              obj.removeAttr("justpressed");
              return;
            }
          //  obj.css("border","1px solid red");
            obj.click();
        }
    }
}

function showGrp(divId) {
    var div=jQuery("#"+divId);
    div.css("display",((div.css("display")=="none")?"":"none"));
}
