﻿// Removes everything between tag-brackets.
// [MB]
function StripTags(textToStrip) {
    if (textToStrip) {
        var scriptRegExp = new RegExp("<[^>]*>");

        while (textToStrip.search(scriptRegExp) > -1) {
            textToStrip = textToStrip.replace(scriptRegExp, "");
        }
    }

    return textToStrip;
}

// Check if a specific value occurs in an array.
// [MB]
function CheckIfValueIsInList(list, value)
{
    for (var listItem = 0; listItem < list.length; listItem++)
    {
        if (list[listItem] == value)
        {
            return true;
        }
    }

    return false;
}

// Check if a given id matches a datetime dropdown pattern.
// [MB]
function GetDateTimeDdlPart(controlId)
{
    var lowerId = controlId.toLowerCase();
    var idLength = lowerId.length;
    var returnObject = new Object();

    if ("ddl" == lowerId.substr(0,3))
    {
        if ("day" == lowerId.substr(idLength - 3, 3))
            returnObject.dtPart = "day";
       
        if ("month" == lowerId.substr(idLength - 5, 5))
            returnObject.dtPart = "month";
        
        if ("year" == lowerId.substr(idLength - 4, 4))
            returnObject.dtPart = "year";
    }

    if (returnObject.dtPart)
    {
        returnObject.dtKey = controlId.substr(3, (controlId.length - (returnObject.dtPart.length + 3)));
        return returnObject;
    }
    else
    {
        return null;
    }
}

// Display debug error messages on a central place.
// [MB]
function DebugDisplayErrorMessages(result)
{
    if (result.ErrorMessages && (result.ErrorMessages.length > 0))
    {
        var errorText = "Error occured while executing the service:\n";
        
        for (var errMsgNum = 0; errMsgNum < result.ErrorMessages.length; errMsgNum++)
        {
            errorText += result.ErrorMessages[errMsgNum];
        }

        alert(errorText);
    }
}

function DebugDisplayServiceFailureMessage(serviceName, responseObject)
{
    if (responseObject)
    {
        alert("Service request to '" + serviceName + "' failed: " + responseObject.get_message());
    }
}

function ControlIsRadiobutton(control)
{
    return ("rb" == control.id.toLowerCase().substr(0,2));
}

function ControlIsCheckbox(control) {
    return ("cb" == control.id.toLowerCase().substr(0, 2));
}


function ControlIsDropdownlist(control)
{
    return ("ddl" == control.id.toLowerCase().substr(0,3));
}

function ControlIsRadiobutton(control)
{
    return ("rb" == control.id.toLowerCase().substr(0,2));
}

function GetFieldFromControlId(controlId)
{
    var fieldKey = controlId;

    if (controlId && (controlId != ""))
    {
        // Defining the forbidden prefixes (e.g. from fields)
        // [MB]
        var listOfForbiddenPrefixes = new Array("tb", "ddl", "rb", "cb");

        // Cutting the key the right way.
        // [MB]
        for (var prefixNum = 0; prefixNum < listOfForbiddenPrefixes.length; prefixNum++)
        {
            var forbPref = listOfForbiddenPrefixes[prefixNum];

            // If we got a match - cut the prefix, replace the key and continue.
            // [MB]
            if (forbPref.toLowerCase() == controlId.toLowerCase().substr(0, forbPref.length))
            {
                fieldKey = controlId.substr(forbPref.length, controlId.length);
                break;
            }
        }
    }

    return fieldKey;
}

function GetFieldFromControl(control)
{
    if (ControlIsDropdownlist(control))
    {
        var dateTimePartObject = GetDateTimeDdlPart(control.id);
        
        if (dateTimePartObject)
        {
            return GetFieldFromControlId(dateTimePartObject.dtKey);
        }

        return GetFieldFromControlId(control.id);
    }
    else if (ControlIsRadiobutton(control))
    {
        return GetFieldFromControlId(control.name);
    }
    else
    {
        return GetFieldFromControlId(control.id);
    }
}

function SelectDropdownValue(dropdownControl, valueToSelect)
{
    if (dropdownControl && dropdownControl.options)
    {
        var valueFound = false;
        for (var optNum = 0; optNum < dropdownControl.options.length; optNum++)
        {
            if (dropdownControl[optNum].value == valueToSelect)
            {
                dropdownControl[optNum].selected = true;
                valueFound = true;
                break;
            }
        }

        if (!valueFound)
        {
            for (var optNum = 0; optNum < dropdownControl.options.length; optNum++)
            {
                if (dropdownControl[optNum].text == valueToSelect)
                {
                    dropdownControl[optNum].selected = true;
                    break;
                }
            }
        }
    }
}

function PadStringLeft(originString, stringToAdd, lengthToReach)
{
    if (originString && stringToAdd && lengthToReach)
    {
        while (originString.length < lengthToReach)
            originString = stringToAdd + originString;
    }
    
    return originString;
}
function GetQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  }
  return null;
} 
