var ieVersion = GetIEVersion();
var browserType = GetBrowser();
var LocalizedStrings = new Array();

var OutlookRootGroupID = '00000000-0000-0000-0000-000000000003';
var OutlookExpressRootGroupID = '00000000-0000-0000-0000-000000000004';
var OutlookNotEditableGroupID = null;
var dtCh = ":";

function GetLocalizedString(stringResourceID) {
  for (var i = 0; i < LocalizedStrings.length; i++) {

    if (LocalizedStrings[i].id == stringResourceID) return LocalizedStrings[i].value;
  }

  var res = LocalizationLayer.GetLocalizedString(stringResourceID);

  var stringResource = new Object();
  stringResource.id = stringResourceID;
  stringResource.value = res.value;
  LocalizedStrings[LocalizedStrings.length] = stringResource;

  return res.value;
}

function StringFormat() {
  if (arguments.length == 0) return null;
  var str = arguments[0];
  for (var i = 1; i < arguments.length; i++) {
    var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
    str = str.replace(re, arguments[i]);
  }
  return str;
}

function Trim(text) {
  while (text.substring(0, 1) == " ")
    text = text.substring(1, text.length);

  while (text.substring(text.length - 1, text.length) == " ")
    text = text.substring(0, text.length - 1);

  return text;
}

function Trim(text, character) {
  while (text.substring(0, 1) == character)
    text = text.substring(1, text.length);

  while (text.substring(text.length - 1, text.length) == character)
    text = text.substring(0, text.length - 1);

  return text;
}

function IndexOfValue(list, val) {
  for (o = 0; o < list.options.length; o++) {
    if (list.options[o].value == val) return i;
  }

  return -1;
}

function CloneObject(object) {
  if (typeof (object) != "object") return;

  var clone = new Object();
  for (var i in object) {
    clone[i] = object[i];
  }

  return clone;
}

function GetBrowser() {
  var browser = {};
  browser.type = "unknown";
  browser.version = 0;
  var ua = navigator.userAgent.toLowerCase();
  if (ua.indexOf("msie ") != -1) {
    browser.type = "ie";
    browser.version = GetIEVersion();
  }
  else if (ua.indexOf("firefox") != -1) {
    browser.type = "firefox";
  }
  else if (ua.indexOf("chrome") != -1) {
    browser.type = "chrome";
  }
  else if (ua.indexOf("opera") != -1) {
    browser.type = "opera";
  }
  else if (ua.indexOf("safari") != -1) {
    browser.type = "safari";
  }
  return browser;
}

function GetIEVersion() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf("MSIE ");
  if (msie != -1) {
    msie = msie + 5;
    return parseInt(ua.substring(msie, ua.indexOf(".", msie)))
  }
  return null;
}

function IsNameUniqueForOutlookGroups(node, groupName) {
  var isOutlookGroup = false;
  var parentGroup = node;

  while (parentGroup != null) {
    if (parentGroup.Value == OutlookRootGroupID || parentGroup.Value == OutlookExpressRootGroupID) {
      isOutlookGroup = true
      parentGroup = null;
    }
    else {
      parentGroup = parentGroup.Parent;
    }
  }

  if (isOutlookGroup) {
    var childNodes = node.Nodes;
    for (var i = 0; i < childNodes.length; i++) {
      if (childNodes[i].Text.toLowerCase() == groupName.toLowerCase()) {
        alert(GetLocalizedString("Outlook_group_with_already_exists_name_is_not_allowed"));
        return false;
      }
    }
  }

  return true;
}

function isDate(dtStr) {
  var dtCh = "/";
  var minYear = 1753;
  var maxYear = 9999;
  var daysInMonth = DaysArray(12);
  var pos1 = dtStr.indexOf(dtCh);
  var pos2 = dtStr.indexOf(dtCh, pos1 + 1);
  var strMonth = dtStr.substring(0, pos1);
  var strDay = dtStr.substring(pos1 + 1, pos2);
  var strYear = dtStr.substring(pos2 + 1);
  strYr = strYear;

  if (strDay.charAt(0) == "0" && strDay.length > 1)
    strDay = strDay.substring(1);
  if (strMonth.charAt(0) == "0" && strMonth.length > 1)
    strMonth = strMonth.substring(1);

  for (var i = 1; i <= 3; i++) {
    if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1);
  }
  if (pos1 == -1 || pos2 == -1) {
    alert(GetLocalizedString("Date_format"));
    return false;
  }
  if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || !isInteger(stripCharsInBag(dtStr, dtCh))) {
    alert(GetLocalizedString("Date_format"));
    return false;
  }

  month = parseInt(strMonth);
  day = parseInt(strDay);
  year = parseInt(strYr);

  if (strMonth.length < 1 || month < 1 || month > 12) {
    alert(GetLocalizedString("Correct_your_month"));
    return false;
  }
  if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
    alert(GetLocalizedString("Limit_your_date") + " " + daysInMonth[month]);
    return false;
  }
  if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
    alert(GetLocalizedString("Limit_your_time_period"));
    return false;
  }
  return true;
}

function isTime(dtStr, use12HoursTime) {
  var pos1 = dtStr.indexOf(dtCh);
  //var pos2=dtStr.indexOf(dtCh,pos1+1);
  var strHour = dtStr.substring(0, pos1);
  var strMinute = dtStr.substring(pos1 + 1);
  //var strSecond=dtStr.substring(pos2+1);

  if (!isInteger(strHour) || !isInteger(strMinute))// || !isInteger(strSecond))
  {
    alert(GetLocalizedString("Time_format"));
    return false;
  }
  if (!isInteger(stripCharsInBag(dtStr, dtCh))) //dtStr.indexOf(dtCh,pos2+1)!=-1 || 
  {
    alert(GetLocalizedString("Time_format"));
    return false;
  }

  hour = parseInt(strHour);
  minute = parseInt(strMinute);
  //second=parseInt(strSecond);

  var maxHours = use12HoursTime ? 12 : 23;
  if (hour < 0 || strHour > maxHours) {
    alert(GetLocalizedString("Limit_your_hours").replace("%HOURS%", maxHours));
    return false;
  }
  if (minute < 0 || strMinute > 59) {
    alert(GetLocalizedString("Limit_your_minutes"));
    return false;
  }

  return true;
}

function NormalizeTime(time, use12HoursTime, dayPart) {
  var pos1 = time.indexOf(dtCh);
  var strHour = time.substring(0, pos1);
  var strMinute = time.substring(pos1 + 1);
  var hours = parseInt(strHour);

  if (dayPart.toLowerCase() == "am" && hour == 12)
    hours = 0;
  else if (dayPart.toLowerCase() != "am")
    hours = hour < 12 ? hours + 12 : 0;

  return padout(hours) + dtCh + strMinute;
}

function padout(number) {
  return (number < 10) ? '0' + number : number;
}

function isInteger(s) {
  var patt = /\D/g;
  var notDig = s.match(patt);
  if (notDig == null && s != "")
    return true;
  return false;
}

function stripCharsInBag(s, bag) {
  var i;
  var returnString = "";
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (bag.indexOf(c) == -1) returnString += c;
  }
  return returnString;
}

function daysInFebruary(year) {
  return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}

function DaysArray(n) {
  for (var i = 1; i <= n; i++) {
    this[i] = 31;
    if (i == 4 || i == 6 || i == 9 || i == 11)
      this[i] = 30;
    if (i == 2)
      this[i] = 29;
  }
  return this;
}

function MakeTextFromHtml(text) {
  var textneu = text.replace(/&amp;/, '&');
  textneu = textneu.replace(/&lt;/, "<");
  textneu = textneu.replace(/&gt;/, ">");
  textneu = textneu.replace(/<br>/, "\r\n");
  textneu = textneu.replace(/<br>/, "\n");
  textneu = textneu.replace(/<br>/, "\r");
  textneu = textneu.replace(/&nbsp;/, " ");
  return (textneu);
}

function Use12HoursTime() {
  var dt = new Date(1, 1, 1, 23, 0, 0);
  var time = dt.toLocaleTimeString();
  return time.indexOf("23") == -1;
}

function TextToHTML(text) {
  return text.replace(/\n/g, "<br />");
}

function ShowDialog(page, width, height, vArg) {
  var sFeatures = "dialogWidth: " + width + "px;dialogHeight: " + height + "px;status:1;help:0;";
  return showModalDialog(page, vArg, sFeatures);
}

function DisableAllButtonOnPage() {
  $("button").children().addClass('img-disable');
  $("button").attr('disabled', 'disabled');
}

function EnableAllButtonOnPage() {
  $("button").children().removeClass('img-disable');
  $("button").removeAttr('disabled');
}

function DisableButton(buttonId) {
  $(buttonId).children().addClass('img-disable');
  $(buttonId).attr('disabled', 'disabled');
}

function EnableButton(buttonId) {
  $(buttonId).children().removeClass('img-disable');
  $(buttonId).removeAttr('disabled');
}

function loadLoginButtonsStyles() {
  $('input.button-style').mouseup(function() {
    $(this).removeClass('button-click')
  }).mousedown(function() {
    $(this).addClass('button-click')
  }).unbind("mouseenter mouseleave")
    .bind("mouseenter mouseleave", function() {
      $(this).toggleClass("button-hover");
    });
}

function loadButtonsStyles() {
  $('input.button').mouseup(function() {
    $(this).removeClass('button-click')
  }).mousedown(function() {
    $(this).addClass('button-click')
  }).unbind("mouseenter mouseleave")
    .bind("mouseenter mouseleave", function() {
      $(this).toggleClass("button-hover");
    });

  $('button.img-button').mouseup(function() {
    $(this).children().removeClass('img-click')
  }).mousedown(function() {
    $(this).children().addClass('img-click')
  }).unbind("mouseenter mouseleave")
    .bind("mouseenter mouseleave", function() {
      $(this).children().toggleClass("img-hover");
    });

  $('button.small-img-button').mouseup(function() {
    $(this).children().removeClass('img-click')
  }).mousedown(function() {
    $(this).children().addClass('img-click')
  }).unbind("mouseenter mouseleave")
    .bind("mouseenter mouseleave", function() {
      $(this).children().toggleClass("img-hover");
    });

  $('button.mms-img-button').mouseup(function() {
    $(this).children().removeClass('img-click')
  }).mousedown(function() {
    $(this).children().addClass('img-click')
  }).unbind("mouseenter mouseleave")
    .bind("mouseenter mouseleave", function() {
      $(this).children().toggleClass("img-hover");
    });
  }

function ShowLoading() {
  $("#overlay").addClass("overlay");
  $("#overlay").removeClass("invisible");
  $("#loading").removeClass("invisible");
}

function HideLoading() {
  $("#overlay").removeClass("overlay");
  $("#overlay").addClass("invisible");
  $("#loading").addClass("invisible");
}

function checkFlash() {
  var version = getFlashVersion().split(',').shift();
  if (version > 8) {
    return true;
  }
  return false;
}

function getFlashVersion() {
  // ie 
  try {
    try {
      // avoid fp6 minor version lookup issues 
      // see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/ 
      var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
      try { axo.AllowScriptAccess = 'always'; }
      catch (e) { return '6,0,0'; }
    } catch (e) { }
    return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
    // other browsers 
  } catch (e) {
    try {
      if (navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
        return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
      }
    } catch (e) { }
  }
  return '0,0,0';
}

function UserCanSMS() {
    var types = $('#SmsComposer_hAllowedMessageTypes').val();
    return types.indexOf('SMS') != -1;
}

function UserCanMMS() {
    var types = $('#SmsComposer_hAllowedMessageTypes').val();
    return types.indexOf('MMS') != -1;
}

function UserPostpaid() {
    var isPospaid = $('#SmsComposer_hPostpaid').val();
    return isPospaid == 'true';
}

function HtmlEncode(value){ 
  return $('<div/>').text(value).html(); 
} 

function HtmlDecode(value){ 
  return $('<div/>').html(value).text(); 
}
 
