﻿/* Popup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function tmSizedPopup(url,winName,w,h) {	
  var useScroll = arguments[4] == undefined?0:arguments[4];
	popWin = window.open(url,winName,'fullscreen=0,width='+w+',height='+h+',toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars='+useScroll+',resizable=1');
}

function campaignPopup(url, winName, w, h) {
    var useScroll = arguments[4] == undefined ? 0 : arguments[4];
    var fullScreen = arguments[5] == undefined ? 0 : arguments[5];
    var settings = 'fullscreen=0,width=' + w + ',height=' + h + ',toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=' + useScroll + ',resizable=1';

    if (fullScreen == 1) {
        settings = 'fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=' + useScroll + ',resizable=1';
    }

    popWin = window.open(url, "", settings);
}


/* Email-protection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function ShowEmail(i_where, i_beforeAt, i_afterAt, i_afterDot, i_additional, i_middle) {
    if (i_additional == null)
        i_additional = "";
    builtStr = i_beforeAt + "@" + i_afterAt + "." + i_afterDot;
    if (i_middle != null) {
        if (i_middle != "")
            firstName = i_middle;
        else
            firstName = builtStr;
    }
    else {
        splitByDot = i_beforeAt.split('.');
        firstLetter = splitByDot[0].toUpperCase().charAt(0);
        firstName = firstLetter + splitByDot[0].substring(1);
        lastName = "";
        if (splitByDot.length > 1) {
            firstLetter = splitByDot[1].toUpperCase().charAt(0);
            lastName = firstLetter + splitByDot[1].substring(1);
            firstName += " " + lastName;
        }
    }
    i_where = i_where.replace("#", "");
    
    $("#" + i_where).append(i_additional + '<a href="mailto:' + builtStr + '">' + firstName + '</a>');
}


/* Login
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
(function() {
  var OneClickLogin = {
    _keyPressCount: 0,
    loginUrl : '/admin/OneClick_loginbox/OneClick_login.aspx',
    
    init : function() {
      $(document).bind('keyup.login', this.eventHandler); // Unbind in admin.js
    }, 
    
    eventHandler : function(ev) {
      ev = (typeof(ev)== 'undefined') ? window.event : ev;
      if(ev.type == 'keyup') {
        return OneClickLogin.keyHandler(ev);
      }
    }, 
    
    keyHandler : function(ev)
    {
      var kc = ev.keyCode || ev.which;
        
      if(kc == 27) {
        $('#ocAdminLogin').remove();
        this._keyPressCount = 0;
      }
      
      this._keyPressCount = (kc == 17 || kc == 32)? this._keyPressCount+=1 : 0;
      
      if(this._keyPressCount == 3)
      {
        window.scrollTo(0,0);			
        this.addLoginBox();
        this._keyPressCount = 0;
        return false;
      }
    }, 
    
    addLoginBox : function()
    {
      if($('#ocAdminLogin').length || $('#ocAdminToolbar').length) {
        return;
      }
      
      var $loginContainer = $('<div />').attr('id','ocAdminLogin'),
          $loginIframe = $('<iframe />').attr({
            scrolling:'no',
            frameborder:'no',
            src: this.loginUrl+'?redirect='+this.scriptName()+ '&random=' + new Date().getTime()
          });
          
      $loginContainer.append($loginIframe);
      $('body').prepend($loginContainer);
    },
    
    scriptName:function()
    {
      var l = location.href;
      if(l.indexOf('http://') == 0) {
        l = l.substring(7);
      }
      l = l.substring(l.indexOf("/"));
      return l;		
    }

  };
  OneClickLogin.init();
})();


/* Placeholder detection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function supports_input_placeholder() {
  var i = document.createElement('input');
  return 'placeholder' in i;
}


/* Form validator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function validateForm(selector) {
  var errors = [],
          currentField,
          currentPattern,
          i = $(selector).find('[required]:visible').length;
  
  function addErrorFor(field) {
    var Error = {
      elementId: field.attr('id'),
      text: field.attr('data-validationerror')
    };
    errors.push(Error);

    // Render errors
    field.addClass('invalid').attr('title', field.attr('data-validationerror'));
    //field.focus();
  }

  /* We can render errors the instant they are discovered instead. As seen in the addErrorFor(field) function
  function renderErrors() {

  } */

  while (i--) {
    currentField = $($(selector).find('[required]:visible')[i]);
    currentField.removeClass('invalid').removeAttr('title');

    if (currentField.attr('pattern')) {

      // Create Regexp from pattern-attribute
      currentPattern = new RegExp("^(?:" + currentField.attr('pattern') + ")$");
      currentPattern.global = false;
      currentPattern.ignoreCase = false;
      currentPattern.multiline = false;

      if (!currentPattern.test(currentField.val())) {
        addErrorFor(currentField);
      }

    }

    // If field is required but has no pattern, make sure it is filled (or selected)
    else {
      if ((currentField.attr('type') == 'checkbox' || currentField.attr('type') == 'radio') && !currentField.is(':checked')) {
        addErrorFor(currentField);
      }
      else if (!currentField.val() || currentField.val() == currentField.attr('placeholder')) {
        addErrorFor(currentField);
      }
    }

  }

  if (errors.length > 0) {
    //renderErrors();
    return false;
  }
}


/* Form validator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
(function() {
  var FormValidator = {
    
    isPhone : function(input) {
      var regexObj = /^\+?(\d+[- ]?){8}$/;
      return regexObj.test(input);
    },
    
    isNumber : function(input) {
      var regexObj = /^[\.|\, ]?(\d+[\.|\, ]?\d*){2}$/;
      return regexObj.test(input);
    },
    
    isEmail : function(input) {
      var regexObj = /^\S+@\S+\.\S+$/;
      return regexObj.test(input);
    },
    
    isString : function(input) {
      var regexObj = /^([1-zA-Z0-1åäöÅÄÖ@.\s\-é\#]{2,255})$/;
      return regexObj.test(input);
    }
    
  };
  window.FormValidator = FormValidator;  
})();
*/

/* Document Ready
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
$(function () {
  /* Hide content-area controls for non ie users. Display them on content-area hover instead */
  if (!$.browser.msie) {
    $('.oc-controls').css({ display: 'none' });
  }

  $('.form-type').find('label').bind('click', function () {
    $('.form-type label').removeClass('active');
    $(this).addClass('active');
  });

  // #TODO - FIX THIS, cant rely on length < 22
  $('.content-area').each(function () {
    if ($(this).html().length < 22 && $(this).html().length < 22) {
        $(this).addClass('hidden');
    }
  });

  // JS-Fallback for browsers that don't support the placeholder attribute.
  if (!supports_input_placeholder()) {

    var elements = $('input[placeholder], textarea[placeholder]'),
        restoreValue = function (e) {
          var element = $(e.target);
          if (element.val() == "") {
            element.addClass('has-placeholder').val(element.attr('placeholder'));
          }
        },
        clearValue = function (e) {
          var element = $(e.target);
          if (element.val() == element.attr('placeholder')) {
            element.removeClass('has-placeholder').val("");
          }
        };

    elements.each(function () {

      if ($(this).val() != "" || $(this).val() == $(this).attr('placeholder')) {
        $(this).addClass('has-placeholder');
      } else {
        $(this).addClass('has-placeholder').val($(this).attr('placeholder'));
      }
    });

    elements.bind('focus', clearValue);
    elements.bind('blur', restoreValue);

  }

  // JS Validation
  /*
  $('input').bind('keyup', function () {

  var elm = $(this),
  input = elm.val(),
  isValid = false;

  if (elm.is('input[type=text]')) {
  isValid = (FormValidator.isString(input)) ? true : false;
  }
  else if (elm.is('input[type=email]')) {
  isValid = (FormValidator.isEmail(input)) ? true : false;
  }
  else if (elm.is('input[type=tel]')) {
  isValid = (FormValidator.isPhone(input)) ? true : false;
  }
  else if (elm.is('input[type=number]')) {
  isValid = (FormValidator.isNumber(input)) ? true : false;
  }

  isValid ? elm.attr('data-validation', 'valid') : elm.attr('data-validation', 'invalid');

  if (input == "") {
  elm.removeAttr('data-validation');
  }

  });
  */

  // Basic submit-event handler
  /*
  $('input[type=submit]').bind('click', function(){
  var fieldset = $(this).parents('fieldset');
  if(fieldset.find('input[data-validation=invalid]').length || fieldset.find('input[data-validation=valid]').length == 0) {
  if (fieldset.find('.validation-error').length ) {
  return false;
  } else {
  $('<span class="validation-error" />').text('Alla fält är inte korrekt ifyllda').insertAfter($(this));
  }
  return false;
  }
  });
  */

  // Validation
  $('#ctl00_contactForm_btnSend').bind('click', function () {
    return validateForm('fieldset.contact');
  });
});
