﻿function Watermark(id, text) {
  $(document).ready(function(){
    SetWatermark(id, text);
  });
  $("#" + id).blur(function() {
    $(this).filter(function() {
      return $(this).val() == ""
    }).val(text);
  });
}

function SetWatermark(id, text) {
    $("#" + id).val(text);
    $("#" + id).focus(function() {
      $(this).filter(function() {
        return $(this).val() == "" || $(this).val() == text
      }).val("");
    });
    $("#" + id).blur(function() {
      $(this).filter(function() {
        return $(this).val() == ""
      }).val(text);
    });
}

(function($) {
  $.fn.titleWaterMark = function() {
    var mainCSS = 'watermark';
    return this.each(function() {
      var $obj = $(this), title = this.title, css = $.metadata && $obj.metadata().watermark ? $obj.metadata().watermark : mainCSS;
      if ($obj.val() == '' && title && title != '')
        $obj.addClass(css).val(title);
      $obj.focus(function() {
        if ($obj.hasClass(css))
          $obj.removeClass(css).val('');
      }).blur(function() {
        if ($obj.val() == '' && title && title != '')
          $obj.addClass(css).val(title);
      }).parents('form').eq(0).submit(function() {
        if ($obj.hasClass(css))
          $obj.val('');
      });
      $(window).unload(function() {
        if ($obj.hasClass(css))
          $obj.removeClass(css).val('');
      });
    });
  };
})(jQuery);

function HtmlEncode(text) {
  if (!text)
    return '';

  text = text.replace(/&/g, '&amp;');
  text = text.replace(/</g, '&lt;');
  text = text.replace(/>/g, '&gt;');

  return text;
}

function SubmitForm(id) {
  alert($("#loginForm_password").val());
  var form = $("#" + id);
  if (form) {
    form.submit();
  }
}

function ValidateAndSubmitForm(id, validate) {
  var form = $("#" + id);
  if (form && validate) {
    var errorMsg = validate()
    if (errorMsg == "") {
      form.submit();
    }
    else {
      alert(errorMsg);
    }
  }
}

function ValidateAndSubmitFormWithAjax(id, validate, ajaxCallback) {
  var form = $("#" + id);
  if (form) {
    var errorMsg = "";
    if (validate) {
      errorMsg = validate();
    }
    if (errorMsg == "") {
      var action = form.attr("action");
      var serializedForm = form.serialize();
      $.post(action,
      serializedForm,
      ajaxCallback);
    }
    else {
      alert(errorMsg);
    }
  }
}
 
function OpenGalleryPopUp(index, settingsPageId, widthVal, heightVal) {
    var settingsPage = '<%= Model.SettingsPageId %>';
    $.get("/GalleryPopUp/Index.aspx?index=" + index + "&settingsPageId=" + settingsPageId, function(result) {
        var box = $("#galleryPopUp");
        if (box) {
            box.html(result);
        }
    });
    $('#galleryPopUp').modal({
                                overlayClose: true,
                                containerCss:
                                {
                                    width: widthVal,
                                    height: heightVal
                                }
                            });
}
function CloseGalleryPopUp() {
    $.modal.close();
}

function GetFlipGridPage(gridId, settingsPageId) {
        $.get("/FlipGridBox/Index?grid=" + gridId + "&settingsPageId=" + settingsPageId, function(result) 
        {
            var box = $("#flipgrid_box" + settingsPageId);
            if (box) {
                box.html(result);
            }
        });
}

function RegisterSubmitButton(buttonId, formId, validate) {
  var button = $("#" + buttonId);
  if (button && formId && validate) {
    $(document).ready(function() {
      button.click(function(ev) {
        ev.preventDefault();
        var errorMsg = validate()

        if (errorMsg == "") {
          $("#" + formId).submit();
        }
        else {
          alert(errorMsg);
        }
      });
    });
  }
}

//FCK Editor
function InsertSmiley(url, editorId) {
  var oEditor = FCKeditorAPI.GetInstance(editorId);
  var html = '<img alt="" src="' + url + '" />';
  oEditor.InsertHtml(html);
}

function InvokeCommand(command, editorId) {
  var oEditor = FCKeditorAPI.GetInstance(editorId);
  oEditor.Commands.GetCommand(command).Execute();
  var cssClass = oEditor.Commands.GetCommand(command).GetState() == -1 ? "" : "hover_act";
  var a = $("#" + command);
  if (a && cssClass != "" && !a.hasClass(cssClass)) {
    a.addClass(cssClass);
  }
  if (a && cssClass == "" && a.hasClass(cssClass)) {
    a.removeClass("hover_act");
  }
}
//End FCK Editor

function MM_swapImgRestore() { //v3.0
  var i, x, a = document.MM_sr; for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d = document; if (d.images) {
    if (!d.MM_p) d.MM_p = new Array();
    var i, j = d.MM_p.length, a = MM_preloadImages.arguments; for (i = 0; i < a.length; i++)
      if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; } 
  }
}

function MM_findObj(n, d) { //v4.01
  var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
    d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
  }
  if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
  for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
  if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i, j = 0, x, a = MM_swapImage.arguments; document.MM_sr = new Array; for (i = 0; i < (a.length - 2); i += 3)
    if ((x = MM_findObj(a[i])) != null) { document.MM_sr[j++] = x; if (!x.oSrc) x.oSrc = x.src; x.src = a[i + 2]; }
}


function OpenCreateUserPopup() {
    Boxy.load("/Account/CreateUserPopup", {
        fixed: true,
        modal: true,
        unloadOnHide: true,
        title: null,
        beforeUnload: function() {
            ShowBanners();
        },
        afterShow: function() {
            SetWatermark("registerUser_email", "Indtast e-mail");
            SetWatermark("registerUser_userName", "Ønsket brugernavn");
            SetWatermark("registerUser_password", "Adgangskode");

            $("link").hide();
            HideBanners();
        }
    });
}

function OpenLoginPopup() {
    Boxy.load("/Account/LoginPopup", {
        fixed: true,
        modal: true,
        unloadOnHide: true,
        title: null,
        beforeUnload: function() {
            ShowBanners();
        },
        afterShow: function() {
            SetWatermark("loginPopup_email", "Indtast e-mail");
            SetWatermark("loginPopup_password", "Adgangskode");
            HideBanners();
        }
    });  
}

function OpenWelcomePopup() {
    Boxy.load("/Account/Welcome", {
        fixed: true,
        modal: true,
        unloadOnHide: true,
        beforeUnload: function() {
            ShowBanners();
            window.location.reload();
        },
        title: null,
        afterShow: function() {
            $("link").hide();
            HideBanners();
        }
    });
}

function OpenRetrievePasswordPopup() {
    Boxy.load("/Account/RetrievePassword", {
        fixed: true,
        modal: true,
        unloadOnHide: true,
        title: null,
        beforeUnload: function() {
            ShowBanners();
        },
        afterShow: function() {
            SetWatermark("retrievePassword_email", "Indtast din e-mail");
            HideBanners();
        }
    });
}

function OpenRequireRegistrationPopup() {
    Boxy.load("/Account/RequireRegistrationPopup", {
        fixed: true,
        modal: true,
        unloadOnHide: true,
        title: null,
        beforeUnload: function() {
            ShowBanners();
        },
        afterShow: function() {
            SetWatermark("registerUser_email", "Indtast e-mail");
            SetWatermark("registerUser_userName", "Ønsket brugernavn");
            SetWatermark("registerUser_password", "Adgangskode");
            SetWatermark("loginPopup_email", "Indtast e-mail");
            SetWatermark("loginPopup_userName", "Adgangskode");

            $("link").hide();

            var editorId = document.getElementById('hiddenEditorId').value;
            var oEditor = FCKeditorAPI.GetInstance(editorId);
            if (oEditor && oEditor.GetHTML() != "") {
                $("#requireRegistration_text").html(oEditor.GetHTML());
            }
            HideBanners();
        }
    });
}

//LoginPopup
function AjaxLogIn(id, validate, ajaxCallback) {
  var form = $("#" + id);
  if (form) {
    var errorMsg = "";
    if (validate) {
      errorMsg = validate();
    }
    if (errorMsg == "") {
      var action = "/Account/JsonLogOnByEmail";
      var serializedForm = form.serialize();
      $.post(action,
      serializedForm,
      ajaxCallback);
    }
  }
}

function ValidateLoginPopup() {
  var error = $("#loginPopup_error");
  error.hide();
  var errorMsg = "";
  var email = $("#loginPopup_email").val();
  if (email == "" || email == "Indtast e-mail") {
    errorMsg += "- Email skal udfylds!\r\n"
  }
  else {
    var re = RegExp("^\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    if (!re.test(email)) {
      errorMsg += "- Forkert email!\r\n"
    }
  }
  var password = $("#loginPopup_password").val();
  if (password == "" || password == "Adgangskode") {
    errorMsg += "- Password skal udfylds!\r\n"
  }
  if (errorMsg != "") {
    error.show();
  }
  
  return errorMsg;
}

function LoginPopupResult(result) {
  var userData = eval("(" + result + ")");

  if (userData.IsValid == true) {
    window.location.reload();
  }
  else {
    $("#loginPopup_error").show();
  }
}

function LoginPopupForumResult(result) {
  var userData = eval("(" + result + ")");

  if (userData.IsValid == true) {
    $("#Comment_AuthorEmail").val(userData.Email);
    $("#Comment_AuthorName").val(userData.Username);
    //Comment form
    $("#comment").submit();
    //Create forum thread
    $("#threadcreateform").submit();
    //Create forum post
    $("#createpostform").submit();
    
    $("#requireRegistration_close").click();
  }
  else {
    $("#loginPopup_error").show();
  }
}

//LogInBox.ascx

function ValidateLoginBox() {
  var errorMsg = "";
  var email = $("#logInBox_email").val();
  if (email == "" || email == "Indtast e-mail") {
    errorMsg += "- Email skal udfylds!\r\n"
  }
  else {
    var re = RegExp("^\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    if (!re.test(email)) {
      errorMsg += "- Forkert email!\r\n"
    }
  }
  if ($("#logInBox_password").val() == "" ||
      $("#logInBox_password").val() == "Adgangskode") {
    errorMsg += "- Password skal udfylds!\r\n"
  }

  return errorMsg;
}
//CreateUserPopup
$(document).ready(function() {
  $("#topBar_LogIn").click(function() {
    OpenLoginPopup();
  });
  $("#topBar_CreateUser").click(function() {
    OpenCreateUserPopup();
  });
  $("#topBar_Welcome").click(function() {
    OpenWelcomePopup();
  });
});

function SubmitCreateUser(id, validate, ajaxCallback) {
  var form = $("#" + id);
  if (form) {
    var isValid = true;
    if (validate) {
      isValid = validate();
    }
    if (isValid) {
      var action = "/Account/RegisterJson";
      var serializedForm = form.serialize();
      $.post(action,
      serializedForm,
      ajaxCallback);
    }
  }
}

function ClearCreateUserPopupMessages() {
  $(".correct").hide();
  $(".error").hide();
  $("#registerUser_errorMsg").hide();
  $("#registerUser_sendingMsg").fadeOut(500);
}

function ClearRequireRegistrationPopup() {
  $(".error").hide();
  $("#registerUser_errorMsg").hide();
  $("#registerUser_validationError").hide();
  $("#registerUser_passwordError").hide();
  $("#registerUser_userNameError").hide();
  $("#registerUser_errorMsg").hide();
  $("#registerUser_sendingMsg").fadeOut(500);
}

function IsEmailValid(email) {
  var isValid = false;
  var re = RegExp("^\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
  if (email != "" && email != "Indtast e-mail" && re.test(email)) {
    isValid = true;
  }
  return isValid;
}

function ValidateCreateUserPopup() {
  var isValid = true;
  ClearCreateUserPopupMessages();
  var email = $("#registerUser_email").val();
  var userName = $("#registerUser_userName").val();
  var password = $("#registerUser_password").val();
  var accept = $("#registerUser_acceptConditions");

  isValid = IsEmailValid(email);
  if (isValid) {
    $("#registerUser_emailCorrect").show();
  }
  else {
    $("#registerUser_emailError").show();
  }

  var regexName = RegExp("^[a-zA-Z0-9_-]{2,255}$");
  if (userName != "" && userName != "Ønsket brugernavn" && regexName.test(userName)) {
      $("#registerUser_userNameCorrect").show();
  }
  else {
      $("#registerUser_userNameError").show();
      isValid = false;
  }
  if (password == "" || password == "Adgangskode" || password.length < 5) {
    $("#registerUser_passwordError").show();
    isValid = false;
  }
  else {
    $("#registerUser_passwordCorrect").show();
  }
  if (!$("#registerUser_Female").is(":checked") &&
      !$("#registerUser_Male").is(":checked")) {
    $("#registerUser_genderError").show();
    isValid = false;
  }
  else {
    //$("#registerUser_genderCorrect").show();
  }
  if (!accept.is(":checked")) {
    $("#registerUser_acceptError").show();
    isValid = false;
  }
  else {
    $("#registerUser_acceptCorrect").show();
  }
  if (isValid) {
    $("#registerUser_sendingMsg").show();
  }
  return isValid;
}

function ValidateRequireRegistrationPopup() {
  var isValid = true;
  ClearRequireRegistrationPopup();
  var email = $("#registerUser_email").val();
  var userName = $("#registerUser_userName").val();
  var password = $("#registerUser_password").val();
  var accept = $("#registerUser_acceptConditions");
  var errorMsg = '';
  isValid = IsEmailValid(email);
  if (!isValid) {
    errorMsg += "E-mail er ikke korrekt.\r\n";
  }

  var regexName = RegExp("^[a-zA-Z0-9_-]{2,255}$");
  if (userName == "" || userName == "Ønsket brugernavn" || !regexName.test(userName) || userName.length < 2) {
    errorMsg += "Brugernavn er ikke korrekt.\r\n";
    isValid = false;
  }

  if (password == "" || password == "Adgangskode" || password.length < 5) {
    errorMsg += "Adgangskode er ikke korrekt.\r\n";
    isValid = false;
  }

  if (!accept.is(":checked")) {
    errorMsg += "Please, accept the terms.\r\n";
    isValid = false;
  }

  if (isValid) {
    $("#registerUser_sendingMsg").show();
  }
  else {
    $("#registerUser_validationError").show();
    $("#registerUser_message").text(errorMsg);
  }
  return isValid;
}

function CreateUserResult(result) {
  ClearCreateUserPopupMessages();
  var userData = eval("(" + result + ")");
  switch (eval(userData.CreateStatus)) {
    case 0: //Successful registration
      {
        $("#registerUser_cancel").click();
        OpenWelcomePopup();
        break;
      }
    case 1: //Invalid UserName
      $("#registerUser_userNameError").show();    
      break;
    case 2: //Invalid Password
      $("#registerUser_passwordError").show();  
      break;
    case 5: //Invalid email
      $("#registerUser_emailError").show();  
      break;
    case 6: //Dublicate User Name
      $("#registerUser_userNameError").show();
      break;
    case 7: //Dublicate Email
      $("#registerUser_EmailDuplicateError").show();
      break;
    case 12: //Accept conditions first
      $("#registerUser_acceptError").show();
      break;
    case 13: //Choose Gender
      $("#registerUser_genderError").show();
      break;
    default:
      //Server error
      $("#registerUser_errorMsg").show();
      break;
  }
}

function RequireRegistrationNewUserResult(result) {
  ClearCreateUserPopupMessages();
  var userData = eval("(" + result + ")");
  switch (eval(userData.CreateStatus)) {
    case 0: //Successful registration
      {
        $("#Comment_AuthorEmail").val(userData.Email);
        $("#Comment_AuthorName").val(userData.Username);
        //Comment form
        $("#comment").submit();
        //Create forum thread
        $("#threadcreateform").submit();
        //Create forum post
        $("#createpostform").submit();
        
        $("#requireRegistration_close").click();
        break;
      }
    case 1: //Invalid UserName
      $("#registerUser_userNameError").show();
      break;
    case 2: //Invalid Password
      $("#registerUser_passwordError").show();
      break;
    case 5: //Invalid email
      $("#registerUser_emailError").show();
      break;
    case 6: //Dublicate User Name
      $("#registerUser_userNameError").show();
      break;
    case 7: //Dublicate Email
      $("#registerUser_EmailDuplicateError").show();
      break;
    case 12: //Accept conditions first
      $("#registerUser_acceptError").show();
      break;
    case 13: //Choose Gender
      $("#registerUser_genderError").show();
      break;
    default:
      //Server error
      $("#registerUser_errorMsg").show();
      break;
  }
}

//ResetPassowrd Popup
function RetrievePassword(id, validate, ajaxCallback) {
    var form = $("#" + id);
    if (form) {
      var isValid = true;
      if (validate) {
        isValid = validate();
      }
      if (isValid) {
        $(".statusMsg").hide();
        $("#retrievePassword_Sending").show();
        var action = "/Account/RetrievePasswordJson";
        var serializedForm = form.serialize();
        $.post(action,
      serializedForm,
      ajaxCallback);
    }
  }
}

function RetrievePasswordResult(result) {
  $(".statusMsg").hide();
  switch (eval(result)) {
    case 0:
      $(".retrievePassword_Success").show();
      var time = 5;
      var interval = setInterval(function() {
        var field = $("#retrievePassword_CloseTime");
        if (time <= 0) {
          clearInterval(interval);
          $("#retrievePassword_Close").click();
        } else {
          field.text(--time);
        }
      }, 1000);
      $(".close").click(function() { clearInterval(interval); });
      break;
    case 1: //Invalid Password
      $(".retrievePassword_NoUserFound").show();
      break;
    case 2: //Invalid email
      $(".retrievePassword_Fail").show();
      break;
    default:
      //Server error
      $(".retrievePassword_Fail").show();
      break;
  }
}

//Hide banners when popup open
function HideBanners() {
    $(".banner").hide();
    $(".top_banner").hide(); 
}

//Show banners when popup close
function ShowBanners() {
    $(".banner").show();
    $(".top_banner").show();
  }

//SearchBox.ascx
$(document).ready(function() {
  $("#searchbox").titleWaterMark();
  $("#searchBoxLink").click(function(ev) {
    ev.preventDefault();
    $("#searchBoxForm").submit();
  });
});

//TopBar.ascx
var selectedLink = -1;
$(document).ready(function() {
  $(".dropdown img.flag").addClass("flagvisibility");

  $(".dropdown dt a").click(function() {
    $(".dropdown dd ul").toggle();
  });

  $(".dropdown dd ul li a").click(function() {
    var text = $(this).html();
    $(".dropdown dt a span").html(text);
    $(".dropdown dd ul").hide();
  });

  $(document).bind('click', function(e) {
    var $clicked = $(e.target);
    if (!$clicked.parents().hasClass("dropdown"))
      $(".dropdown dd ul").hide();
  });


  $("#flagSwitcher").click(function() {
    $(".dropdown img.flag").toggleClass("flagvisibility");
  });
});

//LogInBox.ascx
$(document).ready(function() {
  SetWatermark("logInBox_email", "Indtast e-mail");
  SetWatermark("logInBox_password", "Adgangskode");
  RegisterSubmitButton("logInBox_submit", "logInBox_form", ValidateLoginBox);
});

//StatisticsBox.ascx
$(document).ready(function() {
  $("#two_in_one div.newsLinks a").hover(function() {
    if ($(this).hasClass('act') == false) {
      $("#two_in_one div.newsLinks a").removeClass('act');
      $(this).addClass('act');
      $("#two_in_one div.newsContent").toggleClass('inactiveContent');
    }
  });
});

//PollRight.ascx
$(document).ready(function() {
  $("#VoteLink").click(function(ev) {
    ev.preventDefault();
    $("#poll").submit();
  });
});

//PollMiddleVote.ascx
$(document).ready(function() {
  $("#MiddleVoteLink").click(function(ev) {
    ev.preventDefault();
    $("#middlePoll").submit();
  });
});
