var chathandler;

function initMaster() {document.getElementById("")
  if (N$('password') && (N$('password').value == translate("Lösenord") || N$('password').value.length == 0))
    N$('password').type == "text";

  if (typeof AjaxPro != "undefined" && AjaxPro !== null) {
    AjaxPro.timeoutPeriod = 1000 * 10;
    AjaxPro.onTimeout = function(b, res) { ajaxTimeout(b, res); }
    AjaxPro.onLoading = function(b) { showBusy(b); }
    AjaxPro.onError = function(res) { ajaxError(res); }
  }

  $("#ContactInfo").ajaxtiny( { toolbarConfig: 'simple', css: '/css/base.css' });
  $("#Star").ajaxtiny( { width: 162, height: 204, toolbarConfig: 'empty', css: '/css/base.css,/css/star.css' });

  if (_loggedin) {
    var response = Master.GetUserInfo();
    N$("ta_status").value = response.value[1];
    N$('visbutt').className = (response.value[2] == "1" ? 'buttondivsel' : 'buttondiv');
    N$('invisbutt').className = (response.value[2] == "1" ? 'buttondiv' : 'buttondivsel');
    N$("suname").innerHTML = response.value[0];
    N$("sname").value = response.value[3];
    N$("semail").value = response.value[4];
    N$("sphone").value = response.value[5];
    var idx = -1;
    for (var i=0; i < N$("scompany").options.length && idx == -1; i++)
      if (N$("scompany").options[i].value == response.value[6])
        idx = i;
    N$("scompany").selectedIndex = idx;
    notifyServer();
    setInterval(notifyServer, 5000);
  }

  Master.GetStarPos(_pageId, gotStarPos);

  try { initPage(); }
  catch (e) { nfndebug(e.message); };

  chathandler = new ChatHandler();
  chathandler.initChats();
}

function gotStarPos(response) {
  if (response.value) {
    N$S('stardiv').left = response.value[0] + "px";
    N$S('stardiv').top = response.value[1] + "px";
    N$S('stardiv').display = "block";
  }
}

function showSubsrcibe(show) {
  N$S("sublink").display = (show ? "none" : "inline");
  N$S("sublab").display = (show ? "inline" : "none");
  N$S("unsublink").display = (show ? "inline" : "none");
  N$S("unsublab").display = (show ? "none" : "inline");
  N$S("subscribediv").display = (show ? "block" : "none");
  N$S("unsubscribediv").display = (show ? "none" : "block");
  $("#nlReg").css("height", (show ? "397" : "100"));
}

function setVisible(vis) {
  N$('visbutt').className = (vis ? 'buttondivsel' : 'buttondiv');
  N$('invisbutt').className = (vis ? 'buttondiv' : 'buttondivsel');
  Master.SetVisible(vis);
}

function notifyServer() {
  Master.NotifyServer(notifyServer2);
}
function notifyServer2(response) {
  var html = "";
  for (var i = 0; i < response.value[0].length; i++) {
    var vals = response.value[0][i].split('|');
    html += "<div class='friend'><a href='javascript:void(0)' onclick='chathandler.startChat(\"" + vals[0] + "\")' onfocus='this.blur()'>" + vals[1] + "<br />" + vals[2] + "</a><br />" + vals[3] + "</div>";
  }
  N$('friends').innerHTML = html;

  var sessions = new Array();
  for (var i = 0; i < response.value[1].length; i++) {
    if (response.value[1][i]) {
      var vals = response.value[1][i].split('|');
      var session = {sessionid:vals[0], senderid:vals[1], sendername:vals[2], message:vals[3]};
      sessions.push(session);
    }
  }
  if (chathandler) chathandler.updateChats(sessions);
}

function toggleLanguage() {
  Master.ToggleLanguage();
  document.location.reload();
}

function toggleLogin() {
  if ($("#loginarea").css("display") == "block") {
    N$('loginbtn').className = "buttondiv";
    $("#loginarea").slideUp("normal");
  }
  else {
    N$('loginbtn').className = "buttondivsel";
    $("#loginarea").slideDown("normal");
  }
}

function checkEnterLogin(e) {
  var keynum = 0;
  if (window.event) keynum = e.keyCode;
  else if (e.which) keynum = e.which;
  if (keynum == 13) login();
}

function login() {
  var response = Master.LoginCookie(N$('username').value, N$('password').value, N$('remember').checked);
  $("#loginarea").css("height", "auto");
  if (response.value) document.location.reload();
  else N$S('loginerr').display = "block";
}

function logout() {
  NFN.BaseMaster.Logout();
  document.location.href = _pageId + ".aspx?lo=y";
}

function focusText(inp, txt) {
  if (inp.value == txt) inp.value = "";
}
function blurText(inp, txt) {
  if (inp.value.length == 0) inp.value = txt;
}
function blurPw() {
  if (N$('password').value.length == 0) {
    N$S('pwt').display = "block";
    N$S('pw').display = "none";
  }
}
function focusPw() {
  N$S('pwt').display = "none";
  N$S('pw').display = "block";
  N$('password').focus();
}

function blurNPw() {
  if (N$('npassword').value.length == 0) {
    N$S('npwt').display = "block";
    N$S('npw').display = "none";
  }
}
function focusNPw() {
  N$S('npwt').display = "none";
  N$S('npw').display = "block";
  N$('npassword').focus();
}


function register() {
  var uname = N$('newusername').value;
  var pw = N$('npassword').value;
  var name = N$('newname').value;
  var email = N$('newemail').value;
  var phone = N$('newphone').value;
  var company = N$('newcompany').value;
  if (uname == translate("Önskat användarnamn")) { regerror(translate("Ange ett användarnamn")); return; }
  if (pw.length == 0) { regerror(translate("Ange ett lösenord")); return; }
  if (name == translate("Ditt namn")) { regerror(translate("Ange ditt namn")); return; }
  if (email == translate("Din e-postadress")) { regerror(translate("Ange din e-postadress")); return; }
  if (phone == translate("Ditt telefonnummer")) { regerror(translate("Ange ditt telefonnummer")); return; }
  if (company == "0") { regerror(translate("Ange ditt företag")); return; }
  if (!$.validateEmail(email)) { regerror(translate("Ange en giltig e-postadress")); return; }
  Master.Register(_url, uname, pw, name, email, phone, company, register2)
}

function register2(response) {
  if (response.error) {
    regerror(response.error.Message);
    return;
  }
  N$S('regform').display = "none";
  N$S('regthanks').display = "block";
  setTimeout(closeRegister, 5000);
}

function closeRegister() {
  $("#regarea").slideUp("normal");
  N$S('regform').display = "block";
  N$S('regthanks').display = "none";
}

function regerror(mess) {
  N$('regerr').innerHTML = mess;
  N$S('regerr').display = "block";
  setTimeout("N$S('regerr').display = 'none'", 2000);
}


function sendforgotten() {
  var uname = N$('f_username').value;
  var email = N$('f_email').value;
  if (uname == translate("Användarnamn") && (email == translate("E-postadress") || (!$.validateEmail(email)))) {
    forgoterror(translate("Ange ditt användarnamn eller din e-postadress"));
    return;
  }
  if (uname == translate("Användarnamn")) uname = "";
  if (email == translate("E-postadress")) email = "";

  NFN.BaseMaster.RequestPassword(_url, uname, email, sendforgotten2);
}

function sendforgotten2(response) {
  if (response.error) {
    forgoterror(response.error.Message);
    return;
  }
  else if (response.value.indexOf("OK") != 0) {
    forgoterror(response.value);
    return;
  }
  N$S('forgotform').display = "none";
  N$('forgotres').innerHTML = response.value.substring(2);
  N$S('forgotres').display = "block";
  setTimeout(closeForgotten, 5000);
}

function closeForgotten() {
  $("#forgotarea").slideUp();
  N$S('forgotres').display = "none";
  N$S('forgotform').display = "block";
  N$S('forgotthanks').display = "none";
}

function forgoterror(mess) {
  N$('forgoterr').innerHTML = mess;
  N$S('forgoterr').display = "block";
  setTimeout("N$S('forgoterr').display = 'none'", 3000);
}


function ajaxTimeout(b, res) {
  showBusy(false);
  nfndebug("Timeout i funktionen " + res.method);
}
function ajaxError(res) {
  showBusy(false);
  nfndebug(res.Message);
}
function showBusy(busy) {
  //N$S("ajaxbusy").display = (busy ? "block" : "none");
}
function hideAjaxErr() {
  N$S('ajaxerr').display = "none";
}

var searchTimer = null;
function doSearch(inp) {
  if (searchTimer) clearTimeout(searchTimer);
  if (inp.value.length < 3) {
    closeSearch();
    return;
  }
  searchTimer = setTimeout(function(txt) { Master.SearchSite(inp.value, doSearch2) }, 500);
}

function doSearch2(response) {
  N$('searchres_inner').innerHTML = response.value;
  N$S('searchres').display = (response.value.length > 0 ? "block" : "none");
}
function closeSearch() {
  N$S('searchres').display = "none";
}

var to_status;
function setStatus() {
  if (to_status) clearTimeout(to_status);
  to_status = setTimeout(setStatus2, 1000);
}
function setStatus2() {
  to_status = null;
  var status = N$("ta_status").value;
  Master.SetUserStatus(status);
}

function editinfo() {
  $("#infoarea").slideDown();
}

function makeStarMoveable() {
  $("#stardiv").draggable({ stop: function(event, ui) { starMoved(event, ui); }});
}
function starMoved(event, star) {
  Master.SetStarPos(_pageId, star.absolutePosition.left, star.absolutePosition.top);
}

function validateInfo() {
  var vals = new Array(6);
  var err = "";
  vals[0] = N$('sopassword').value;
  vals[1] = N$('spassword').value;
  vals[2] = N$('sname').value;
  if (vals[2].length == 0) err += translate("Ange ditt namn") + "<br />";
  vals[3] = N$('semail').value;
  if (!validateEmail(vals[3])) err += translate("Ange en giltig e-postadress") + "<br />";
  vals[4] = N$('sphone').value;
  if (vals[4].length == 0) err += translate("Ange ditt telefonnummer") + "<br />";
  vals[5] = N$('scompany').value;
  if (vals[5].length == 0) err += translate("Ange ditt företag");
  if (err.length > 0) {
    N$('infoerr').innerHTML = err;
    N$S('infoerr').display = "block";
    setTimeout("N$S('infoerr').display = 'none'", 2000);
    return null;
  }
  return vals;
}

function saveinfo() {
  var vals = validateInfo();
  if (vals)
    Master.SaveUserInfo(vals, saveinfo2);
}

function saveinfo2(response) {
  if (response.error) {
    N$('infoerr').innerHTML = response.error.Message;
    N$S('infoerr').display = "block";
    setTimeout("N$S('infoerr').display = 'none'", 2000);
  }
  else
    $("#infoarea").slideUp();
}

function MenuAnimator() {

  var animstep = 10;
  var menu = null;
  var animdir = 1;
  var currheight = 0;
  var endheight = 0;
  var atimer = null;
  this.running = false;

  this.animate = function(amenu, adir, amenuheight) {
    if (!this.running) {
      this.running = true;
      menu = amenu;
      animdir = adir;
      currheight = (adir == 1 ? 0 : amenuheight);
      endheight = (adir == 1 ? amenuheight : 0);
      amenu.style.height = currheight + "px";
      if (animdir == 1) {
        menu.style.display = 'block';
        menu.parentNode.className = "selmainitem";
      }
      var thisref = this;
      atimer = setInterval(function() { thisref.animateStep(); }, 20);
    }
  }

  this.animateStep = function() {
    if (Math.abs(currheight - endheight) <= animstep)
      this.finalizeAnim();
    else {
      currheight += animdir*animstep;
      menu.style.height = currheight + "px";
    }
  }

  this.finalizeAnim = function() {
    clearTimeout(atimer);
    menu.style.height = endheight + "px";
    if (animdir == -1) {
      menu.style.display = 'none';
      menu.parentNode.className = "mainitem";
    }
    this.running = false;
  }
}



var menuAnimator = new MenuAnimator();
var itemHeight = 28;

function openSubMenu(submenu) {
  var mheight = submenu.childNodes.length * itemHeight;
  menuAnimator.animate(submenu, 1, mheight);
}
function closeSubMenu(submenu) {
  var mheight = submenu.childNodes.length * itemHeight;
  menuAnimator.animate(submenu, -1, mheight);
}
function toggleSubMenu(submenu) {
  if (submenu.style.display == 'block') closeSubMenu(submenu);
  else openSubMenu(submenu);
}

$(document).ready(function(){
   initMaster();
});
