﻿// JScript File

function clearValue(object, text)
{
   if (object.value == text)
   {
        object.value = '';
   }
}

function fillValue(object, text)
{
   if (object.value == text || object.value == '')
   {
        object.value = text;
   }
}

function setSelected(object)
{
    document.getElementById(object).className='here';
}

function wsredirect(url)
{
    window.location.href=url;
}

function togglePanel(object)
{
    if (document.getElementById(object).style.display == '')
        document.getElementById(object).style.display='none';
    else
        document.getElementById(object).style.display = '';
}

/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

var Utf8 = {

    // public method for url encoding
    encode: function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode: function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}

function limitTextArea(textarea, maxlength, toUpdate, evt, illegalCharMessage, maxCharMessage) {

    //checking for control characters
    var controlExpression = "[^\x00-\x1f]{0," + maxlength + 2 + "}";
    var controlRegEx = new RegExp(controlExpression);
    var controlMatch = controlRegEx.exec(textarea.value);

    var matchString = controlMatch[0];
    if (matchString.length != textarea.value.length) {
        textarea.value = matchString;
        textarea.style.backgroundColor = "#FFCECE";
        setTimeout('normalizeLockMessage (\'' + textarea.id + '\', "#ffffff")', 500);

        var errorLabel = document.getElementById('lockMessageCharacterNotAllowed');
        if (errorLabel != null) {
            errorLabel.style.display = "block";
            errorLabel.innerHTML = illegalCharMessage; // 'The character you typed is not allowed...';
            setTimeout('removeLockErrorLabel ()', 2000);
        }
        return false;
    }

    //checking for string length
    var asciiString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 !\"#$%&()*+,-./:;<=>@^_{|}?\[\]\\'";
    var TextString = textarea.value;
    var length = 0;
    var NewString = "";

    //alert(Utf8.encode(textarea.value).length);

    //for each character in textarea
    for (i = 0; i < textarea.value.length; i++) {

        var charLength = Utf8.encode(TextString.charAt(i)).length;
        if (length + charLength > maxlength) {
            textarea.value = NewString;
            exceededMaxChar(maxlength);
            break;
        }

        length += charLength;
        NewString += TextString.charAt(i);

        function exceededMaxChar(maxlength) {
            var errorLabel = document.getElementById('lockMessageCharacterNotAllowed');
            if (errorLabel != null) {
                errorLabel.style.display = "block";
                errorLabel.innerHTML = maxCharMessage; // 'You have exceeded ' + maxlength + ' characters...';
                setTimeout('removeLockErrorLabel ()', 2000);
            }
        }
    }

    //updatelength
    document.getElementById(toUpdate).innerHTML = '[' + length + ' / ' + maxlength + ']';
}

function normalizeLockMessage(textareaid, color)
{
   var obj = document.getElementById(textareaid);
   if (obj != null) obj.style.backgroundColor = color;
}

function removeLockErrorLabel()
{
    var errorLabel = document.getElementById('lockMessageCharacterNotAllowed');
    if (errorLabel != null) errorLabel.style.display = "none";
}

function showLength(textarea, maxlength, toUpdate, evt, toUpdate)
{
     var toRet = true;
     if(textarea.value.length>=maxlength+1)
     {
         textarea.value=textarea.value.substring(0,maxlength);
         toRet = false;
     }

     var str=new String()
     str=textarea.value;
     var found = false;
     
     for(i=0;i<textarea.value.length;i++)
     {
        if(textarea.value.charCodeAt(i)>256) 
        {
            textarea.value=textarea.value.substring(0,i) + textarea.value.substring(i+1);
            i--;
            found = true;
        }
     }
     if(found)
        alert(onlyEnglish);
        
    document.getElementById(toUpdate).innerHTML = '[' + (textarea.value.length ) + ' / ' + maxlength + ']';
    return toRet;
}

function showLengthNE(textarea, maxlength, toUpdate, evt, toUpdate)
{
     var toRet = true;
     if(textarea.value.length>=maxlength+1)
     {
         textarea.value=textarea.value.substring(0,maxlength);
         toRet = false;
     }

     var str=new String()
     str=textarea.value;
     var found = false;
     
    document.getElementById(toUpdate).innerHTML = '[' + (textarea.value.length ) + ' / ' + maxlength + ']';
    return toRet;
}

function setPassword(object, text)
{
    var passwordTextBox = document.getElementById(object);
    if (passwordTextBox == null) return;
    passwordTextBox.value=text;
}

function leftTrim(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    return sString;
}

function rightTrim(sString) 
{
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

function trim(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

/* Update panel for dynamic search */

var mytimeout = 0;
var lastSearch = '';

function updatePanel(searchbox, eventArgs) {
    var newText = trim(searchbox.value);
    if (lastSearch == newText) return;

    if (mytimeout != 0)
        clearTimeout(mytimeout);

    mytimeout = setTimeout('postsearch("' + eventArgs + '")', 500);

    lastSearch = newText;
}

function updatePanelKeyup(event, searchbox, eventArgs) 
{
    var newText = trim(searchbox.value);
    if (lastSearch == newText) return;
    if (event.keyCode != 13) return;    

    if (mytimeout != 0)
        clearTimeout(mytimeout);

    mytimeout = setTimeout('postsearch("' + eventArgs + '")', 500);

    lastSearch = newText;
}

function updatePanelClick(searchbox, eventArgs)
{
    var newText = trim(searchbox.value);
    if (lastSearch == newText) return;   

    if (mytimeout != 0)
     clearTimeout(mytimeout);
    
    mytimeout = setTimeout('postsearch("' + eventArgs + '")', 500);
    
    lastSearch = newText;
}



/* CLOSED_IMAGE - the image to be displayed when the sublists are closed
 * OPEN_IMAGE   - the image to be displayed when the sublists are opened
 */
CLOSED_IMAGE='/images/singleplus.gif';
OPEN_IMAGE='/images/singleminus.gif';

/* makeCollapsible - makes a list have collapsible sublists
 * 
 * listElement - the element representing the list to make collapsible
 */
function makeCollapsible(listElement, appPath){

  // removed list item bullets and the sapce they occupy
  listElement.style.listStyle='none';
  listElement.style.marginLeft='0';
  listElement.style.paddingLeft='0';

  // loop over all child elements of the list
  var child=listElement.firstChild;
  while (child!=null){

    // only process li elements (and not text elements)
    if (child.nodeType==1){

      // build a list of child ol and ul elements and hide them
      var list=new Array();
      var grandchild=child.firstChild;
      while (grandchild!=null){
        if (grandchild.tagName=='OL' || grandchild.tagName=='UL'){
          grandchild.style.display='none';
          list.push(grandchild);
        }
        grandchild=grandchild.nextSibling;
      }

      // add toggle buttons
      var node=document.createElement('img');
      node.setAttribute('src',appPath + CLOSED_IMAGE);
      node.setAttribute('class','collapsibleClosed');
      node.onclick=createToggleFunction(node,list, appPath);
      child.insertBefore(node,child.firstChild);

    }

    child=child.nextSibling;
  }

}

/* createToggleFunction - returns a function that toggles the sublist display
 * 
 * toggleElement  - the element representing the toggle gadget
 * sublistElement - an array of elements representing the sublists that should
 *                  be opened or closed when the toggle gadget is clicked
 */
function createToggleFunction(toggleElement,sublistElements, appPath){

  return function(){

    // toggle status of toggle gadget
    if (toggleElement.getAttribute('class')=='collapsibleClosed'){
      toggleElement.setAttribute('class','collapsibleOpen');
      toggleElement.setAttribute('src',appPath + OPEN_IMAGE);
    }else{
      toggleElement.setAttribute('class','collapsibleClosed');
      toggleElement.setAttribute('src',appPath + CLOSED_IMAGE);
    }

    // toggle display of sublists
    for (var i=0;i<sublistElements.length;i++){
      sublistElements[i].style.display=
          (sublistElements[i].style.display=='block')?'none':'block';
    }

  }

}

var uservoiceOptions = {
    /* required */
    key: 'wavesecure',                //domain
    host: 'feedback.wavesecure.com',  //domain.forumurl
    forum: '3560',                    //forum ID
    showTab: true,                    //use tab or hyperlink
    /* optional */
    alignment: 'right',                //left or right for tab
    background_color: '#f00',          //bg color of tab
    text_color: 'white',              //text color of tab
    hover_color: '#000',              //hover color of tab
    lang: 'en'                        //language
};

function _loadUserVoice() {
    if (document.location.href.indexOf('/admin/') > 0 || document.location.href.indexOf('/member/') > 0) return;
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', ("https:" == document.location.protocol ? "https://" : "http://") + "cdn.uservoice.com/javascripts/widgets/tab.js");
    document.getElementsByTagName('head')[0].appendChild(s);
}

//_loadSuper = window.onload;
//window.onload = (typeof window.onload != 'function') ? _loadUserVoice : function () { _loadSuper(); _loadUserVoice(); };

//for mouseover popup images. 
var dhtmlgoodies_tooltip = false;
var dhtmlgoodies_iframe = false;
var tooltip_is_msie = (navigator.userAgent.indexOf('MSIE') >= 0 && navigator.userAgent.indexOf('opera') == -1 && document.all) ? true : false;

function showTooltip(e, imageSource) {
    //create div for tooltip is it doesn't exist
    if (!dhtmlgoodies_tooltip) {
        dhtmlgoodies_tooltip = document.createElement('DIV');
        dhtmlgoodies_tooltip.id = 'dhtmlgoodies_tooltip';

        document.body.appendChild(dhtmlgoodies_tooltip);
    }
    
    if (tooltip_is_msie) {
        dhtmlgoodies_iframe = document.createElement('IFRAME');
        dhtmlgoodies_iframe.frameborder = '5';
        dhtmlgoodies_iframe.style.backgroundColor = '#FFFFFF';
        dhtmlgoodies_iframe.src = '#';
        dhtmlgoodies_iframe.style.zIndex = 100;
        dhtmlgoodies_iframe.style.position = 'absolute';
        document.body.appendChild(dhtmlgoodies_iframe);
        dhtmlgoodies_iframe.style.display = 'block';
    }

    //setting the styles
    var st = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
    var topPos = e.clientY + 10 + st;

    imageSource = "<img src='" + imageSource + "'/>";

    dhtmlgoodies_tooltip.style.width = null; // Reset style width if it's set 
    dhtmlgoodies_tooltip.innerHTML = imageSource;
    dhtmlgoodies_tooltip.style.left = e.clientX + 10 + 'px';
    dhtmlgoodies_tooltip.style.top = topPos + 'px';
    dhtmlgoodies_tooltip.style.display = 'block';
    dhtmlgoodies_tooltip.style.width = dhtmlgoodies_tooltip.offsetWidth; +'px';


    //move tooltip if its out of window.
    var tooltipHeight = dhtmlgoodies_tooltip.offsetHeight;
    var bodyHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
    bodyHeight = bodyHeight + window.pageYOffset;

    if (topPos < window.pageYOffset) {
        //if popup is above window
        dhtmlgoodies_tooltip.style.top = window.pageYOffset + 'px';
    }
    else if ((topPos + tooltipHeight) > bodyHeight) {
        //if popup is below window
        dhtmlgoodies_tooltip.style.top = (topPos - ((topPos + tooltipHeight) - bodyHeight)) + 'px';
    }
    

    if (tooltip_is_msie) {
        dhtmlgoodies_iframe.style.left = dhtmlgoodies_tooltip.style.left;
        dhtmlgoodies_iframe.style.top = dhtmlgoodies_tooltip.style.top;
        dhtmlgoodies_iframe.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
        dhtmlgoodies_iframe.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
    }
}
function showTooltipText(e, text) {
    //create div for tooltip is it doesn't exist
    if (!dhtmlgoodies_tooltip) {
        dhtmlgoodies_tooltip = document.createElement('DIV');
        dhtmlgoodies_tooltip.id = 'dhtmlgoodies_tooltip';

        document.body.appendChild(dhtmlgoodies_tooltip);
    }

    if (tooltip_is_msie) {
        dhtmlgoodies_iframe = document.createElement('IFRAME');
        dhtmlgoodies_iframe.frameborder = '5';
        dhtmlgoodies_iframe.style.backgroundColor = '#FFFFFF';
        dhtmlgoodies_iframe.src = '#';
        dhtmlgoodies_iframe.style.zIndex = 100;
        dhtmlgoodies_iframe.style.position = 'absolute';
        document.body.appendChild(dhtmlgoodies_iframe);
        dhtmlgoodies_iframe.style.display = 'block';
    }

    //setting the styles
    var st = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
    var topPos = e.clientY + 10 + st;

    imageSource = '<div class=\'tooltip_info\'>' + text + '</div>';

    dhtmlgoodies_tooltip.style.width = null; // Reset style width if it's set 
    dhtmlgoodies_tooltip.innerHTML = imageSource;
    dhtmlgoodies_tooltip.style.left = e.clientX + 10 + 'px';
    dhtmlgoodies_tooltip.style.top = topPos + 'px';
    dhtmlgoodies_tooltip.style.display = 'block';
    dhtmlgoodies_tooltip.style.width = dhtmlgoodies_tooltip.offsetWidth; +'px';

    //move tooltip if its out of window.
    var tooltipHeight = dhtmlgoodies_tooltip.offsetHeight;
    var bodyHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
    bodyHeight = bodyHeight + window.pageYOffset;

    if (topPos < window.pageYOffset) {
        //if popup is above window
        dhtmlgoodies_tooltip.style.top = window.pageYOffset + 'px';
    }
    else if ((topPos + tooltipHeight) > bodyHeight) {
        //if popup is below window
        dhtmlgoodies_tooltip.style.top = (topPos - ((topPos + tooltipHeight) - bodyHeight)) + 'px';
    }

    if (tooltip_is_msie) {
        dhtmlgoodies_iframe.style.left = dhtmlgoodies_tooltip.style.left;
        dhtmlgoodies_iframe.style.top = dhtmlgoodies_tooltip.style.top;
        dhtmlgoodies_iframe.style.width = dhtmlgoodies_tooltip.offsetWidth + 'px';
        dhtmlgoodies_iframe.style.height = dhtmlgoodies_tooltip.offsetHeight + 'px';
    }
}

function hideTooltip() {
    dhtmlgoodies_tooltip.style.display = 'none';
    if (tooltip_is_msie) dhtmlgoodies_iframe.style.display = 'none';
}

function setTimeZone(control) {
    var hiddenField = document.getElementById(control);
    var d = new Date();
    hiddenField.value = -d.getTimezoneOffset();
}

var BlackoutPopup = false;
var BlackoutWhiteArea = false;
function showBlackoutPopup(title, text, link, width, height, confirmText, cancelText) {
    if (!BlackoutPopup) {
        BlackoutPopup = document.createElement('div');
        BlackoutPopup.id = "div_BlackoutPopup";
        BlackoutPopup.className += "div_BlackoutPopup";
        BlackoutPopup.style.height = getBodyHeight() + 'px';
        
        document.body.appendChild(BlackoutPopup);
    }

    if (!BlackoutWhiteArea) {
        BlackoutWhiteArea = document.createElement('div');
        BlackoutWhiteArea.id = "div_BlackoutWhiteArea";
        BlackoutWhiteArea.className += "div_BlackoutWhiteArea";

        if (typeof width == typeof 1)
            BlackoutWhiteArea.style.width = width + 'px';

        if (typeof height == typeof 1)
            BlackoutWhiteArea.style.height = height + 'px';

        BlackoutPopup.appendChild(BlackoutWhiteArea);
    }

    title = '<h1>' + title + '</h1>';
    BlackoutWhiteArea.innerHTML = title;

    text = '<p>' + text + '</p>';
    BlackoutWhiteArea.innerHTML += text;

    BlackoutWhiteArea.innerHTML += '<div style="clear:both;"></div>';

    if (confirmText == undefined || confirmText == '') confirmText = "Confirm";
    if (cancelText == undefined || cancelText == '') cancelText = "Cancel";

    if (link != undefined && link != '') {
        link = '<a href=' + link + '>' + confirmText + '</a>';
        BlackoutWhiteArea.innerHTML += link;
    }

    var cancelbtn = '<a href="#" onclick="hideBlackoutPopup()">' + cancelText + '</a>';
    BlackoutWhiteArea.innerHTML += cancelbtn;

    BlackoutPopup.style.display = "block";
}
function hideBlackoutPopup() {
    BlackoutPopup.style.display = "none";
}

var BlackoutPopupV2 = false;
var BlackoutWhiteAreaV2 = false;
function showBlackoutPopupV2(Div_Id, width, height) {
    if (!BlackoutPopupV2) {
        BlackoutPopupV2 = document.createElement('div');
        BlackoutPopupV2.id = "div_BlackoutPopup";
        BlackoutPopupV2.className += "div_BlackoutPopup";
        BlackoutPopupV2.style.height = getBodyHeight() + 'px';

        document.body.appendChild(BlackoutPopupV2);
    }

    if (!BlackoutWhiteAreaV2) {
        BlackoutWhiteAreaV2 = document.createElement('div');
        BlackoutWhiteAreaV2.id = "div_BlackoutWhiteAreaV2";
        BlackoutWhiteAreaV2.className += "div_BlackoutWhiteArea";

        if (typeof width == typeof 1)
            BlackoutWhiteAreaV2.style.width = width + 'px';

        if (typeof height == typeof 1)
            BlackoutWhiteAreaV2.style.height = height + 'px';

        BlackoutPopupV2.appendChild(BlackoutWhiteAreaV2);
    }
    else {
        //children clean up
        if (BlackoutWhiteAreaV2.hasChildNodes()) {
            while (BlackoutWhiteAreaV2.childNodes.length >= 1) {
                BlackoutWhiteAreaV2.removeChild(BlackoutWhiteAreaV2.firstChild);
            }
        }
    }

    var DivToPopup = document.getElementById(Div_Id);
    var CloneDiv = DivToPopup.cloneNode(true);
    CloneDiv.style.display = "block";

    BlackoutWhiteAreaV2.appendChild(CloneDiv);

    BlackoutPopupV2.style.display = "block";
}
function hideBlackoutPopupV2() {
    BlackoutPopupV2.style.display = "none";
}


function getBodyHeight() {
    var windowHeight;
    windowHeight = $(document).height();

    return windowHeight;
}


