﻿var _areaIDToRemoveOverCharacters;
var tabs = { "Private": "Private", "Mine": "Mine", "MyFreinds": "MyFreinds", "Recommended": "Recommended" }
var whitespace = " \t\n\r";

function RemoveOverCharactersLetters(maxLength, areaIDToRemoveOverCharacters) {
    _areaIDToRemoveOverCharacters = areaIDToRemoveOverCharacters;
    var postContent = document.getElementById(_areaIDToRemoveOverCharacters).value;
    if (postContent.length > maxLength)
        document.getElementById(_areaIDToRemoveOverCharacters).value = postContent.substring(0, maxLength);
}



function ErrorClass(errorMessage, functionName, params, error, redirectUrl) {
    this.ErrorMessage = errorMessage;
    this.FunctionName = functionName;
    this.Params = params;
    this.Error = error;
    this.RedirectUrl = (redirectUrl) ? redirectUrl : null;
}
function ErrorParam(name, value) {
    this.Name = name;
    this.Value = value;
}

function errorMessage(oObj) {
    try {
        var isDev = false;
        var errorMessage = "";
        if (typeof (isProd) != 'undefined' && isProd != null) {
            isDev = !isProd;
        }
        if (isDev) {
            if (!isnull(oObj) && !isnull(oObj.ErrorMessage)) {
                errorMessage = oObj.ErrorMessage + whitespace;
            }
            else {
                errorMessage = "Please do print screen of this message;" + whitespace + whitespace;
            }
            if (!isnull(oObj.FunctionName) && !isnull(oObj.FunctionName)) {
                errorMessage += "Function name: " + oObj.FunctionName + whitespace;
            }

            if (!isnull(oObj.Error)) {
                var message = "";
                if (typeof (oObj.Error.description) != 'undefined' && !isnull(oObj.Error.description)) {
                    message = oObj.Error.description;
                }
                else if (typeof (oObj.Error.get_message()) != 'undefined' && !isnull(oObj.Error.get_message())) {

                    message = oObj.Error.get_message();
                }
                if (!isnull(message)) {
                    errorMessage += "Error message: " + message + whitespace;
                }
            }

            if (!isnull(oObj.Params) && oObj.Params.length > 0) {
                errorMessage += "Params:" + whitespace;
                for (i = 0; i < oObj.Params.length; i++) {
                    var p = oObj.Params[i];
                    if (!isnull(p)) {
                        errorMessage += "Name: " + p.Name + whitespace;
                        errorMessage += "Value: " + p.Value + whitespace;
                    }
                }
            }
            alert(errorMessage);
            if (oObj.RedirectUrl != null)
                window.location.href = oObj.RedirectUrl;
        }
        else {
            if (!isnull(oObj) && !isnull(oObj.ErrorMessage))
            {
                errorMessage = oObj.ErrorMessage + whitespace;
                alert(errorMessage);
                if (oObj.RedirectUrl != null)
                    window.location.href = oObj.RedirectUrl;

            }
            else
            {
                if (typeof (oObj) != 'undefined' && oObj != null && typeof (oObj.Error) != 'undefined' && oObj.Error != null)
                {
                    if (typeof (oObj.Error.get_statusCode()) != 'undefined' && oObj.Error.get_statusCode() > 0)
                    {
                        alert("An application error occured. Please contact our support or try again later.");
                    }
                }
            }
        }
    }
    catch (e) {
        alert(e.description);
    }
}

function errorMessageOnlyText(val) {
    var errorClass = new ErrorClass(val, null, null, null);
    errorMessage(errorClass);
}
function errorMessageTextWithRedirect(val, redirectUrl) {
    var errorClass = new ErrorClass(val, null, null, null, redirectUrl);
    errorMessage(errorClass);
}

var onStateChangedKey = "onStateChangedKey";
var _dropDownID;
var stateEvents;

function ShowHideDropDown(A) {
    _dropDownID = A;
    if (document.getElementById) {
        if (getEl(A).style.display == "block") {
            HideDropDown();
        }
        else {
            ShowDropDown();
        }
    }
}
function LimitText(field, maxChars) {
    if (field.value.length > maxChars) {
        event.returnValue = false;
        return false;
    }
}
function HideDropDown() {
    if (getEl(_dropDownID))
        getEl(_dropDownID).style.display = "none";
}
function ShowDropDown() {
    if (getEl(_dropDownID))
        getEl(_dropDownID).style.display = "block";
}
function ShowRegisterPopup(divRegisterPopup) {
    HideAllPopups();
    window.top.document.getElementById(divRegisterPopup).style.display = "block";
}

function ShowConfirmSharedPopup(divConfirmSharedPopup) {
    HideConfirmSharedPopup(divConfirmSharedPopup);
    window.top.document.getElementById(divConfirmSharedPopup).style.display = "block";
}

function HideConfirmSharedPopup(divConfirmSharedPopup) {
    getEl(divConfirmSharedPopup).style.display = "none";
}
function ShowChangeEmailPopup(divChangeEmailPopup) {
    HideAllPopups();
    getEl(divChangeEmailPopup).style.display = "block";
}

function HideChangeEmailPopup(divChangeEmailPopup) {
    getEl(divChangeEmailPopup).style.display = "none";
}

function HideRegisterPopup(divRegisterPopup) {
    window.top.document.getElementById(divRegisterPopup).style.display = "none";
}

function ShowLoginPopup() {
    HideAllPopups();
    // window.top.document.getElementById("divLoginPopup").style.display = "block";
}

function HideLoginPopup() {
    // window.top.document.getElementById("divLoginPopup").style.display = "none";
}

function HideAllPopups() {
    HideLoginPopup();
}

function ShowResendPasswordPanel() {
    divForgetPass.style.display = 'none';
    divPassRetrieve.style.display = 'block'
}


var BOLD_FONT_COLOR = "black";
var BOLD_BACKGROUND_COLOR = "#ccc";
var NORMAL_FONT_COLOR = "#187DB5";
var NORMAL_BACKGROUND_COLOR = "#fff";

var COLLAPSE_EXPRESSION = "&#9660;";
var TOGGLE_EXPRESSION = "&#9654;";
var LTR_TOGGLE_EXPRESSION = "&#9654;";
var RTL_TOGGLE_EXPRESSION = "&#9664;";
var COMMON_COLLAPSE_EXPRESSION = "&#9660;";

var xmlDoc = null;
function GetXMLObject(xmlData) {
    if (navigator.appName.toLowerCase().indexOf("explorer") != -1) {

        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlData);

    }
    else {

        parser = new DOMParser();
        xmlDoc = parser.parseFromString(xmlData, "text/xml");
    }
}


function CloseMenu(containerID) {
    if (getEl(containerID)) {
        getEl(containerID).style.display = 'none';
    }
}


function OpenMenu(containerID) {
    if (getEl(containerID)) {
        getEl(containerID).style.display = 'block';
    }
}


function ManageSimpleMenu(containerID) {
    if (getEl(containerID)) {
        if (getEl(containerID).style.display == 'block') {
            getEl(containerID).style.display = 'none';
        }
        else {
            getEl(containerID).style.display = 'block';
        }
    }
}

function PaintIt(Obj, BackgroundColor, FontColor) {
    //alert(Obj);
    Obj.style.backgroundColor = BackgroundColor;
    Obj.style.color = FontColor;
}

function ColorItByOver(Obj, backgroundColor, fontColor) {
    //debugger;
    var bgColor = BOLD_BACKGROUND_COLOR;
    var fColor = BOLD_FONT_COLOR;

    if (backgroundColor) {
        bgColor = backgroundColor;
    }
    if (fontColor) {
        fColor = fontColor;
    }

    PaintIt(Obj, bgColor, fColor);
}

function ColorItByOut(Obj, cancelByOut, backgroundColor, fontColor) {

    //debugger;
    if (!cancelByOut) {
        var bgColor = BOLD_BACKGROUND_COLOR;
        var fColor = BOLD_FONT_COLOR;
        if (backgroundColor) {
            bgColor = backgroundColor;
        }
        if (fontColor) {
            fColor = fontColor;
        }

    }
    else {
        var bgColor = NORMAL_BACKGROUND_COLOR;
        var fColor = NORMAL_FONT_COLOR;
        if (backgroundColor) {
            bgColor = backgroundColor;
        }
        if (fontColor) {
            fColor = fontColor;
        }
    }
    PaintIt(Obj, bgColor, fColor);
}

function SetDefaultText(objID, textIndex) {
    //  alert("objID " + defaultSearchText[textIndex]);
    //debugger;
    if (objID.value == defaultSearchText[textIndex]) {
        objID.value = "";
    }
    else {
        if (objID.value == "") {
            objID.value = defaultSearchText[textIndex];
        }
    }
}


function Authentication(userNameID, passwordID, rememebrMeID) {

    this._userName = $get(userNameID);
    this._password = $get(passwordID);
    this._rememebrMe = $get(rememebrMeID);

    Authentication.prototype.AuthenticateUser = function(e) {

        UserManagement.AuthenticateUser(this._userName.value,
                                        this._password.value,
                                        this._rememebrMe.checked,
                                        this.OnAuthenticationSucceeded,
                                        null,
                                        null);
    }

    Authentication.prototype.OnAuthenticationSucceeded = function(result, response, context) {

        var loginFailedSpan = $get("lblLoginFailed");
        var regex = /\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

        if (regex.test(result)) {
            loginFailedSpan.style.display = "none";
            window.location = result;
        }
        else
            loginFailedSpan.style.display = "block";
    }
}

function TryAuthenticate(validationGroup) {

    var validated = Page_ClientValidate(validationGroup);

    if (validated)
        Authenticate.AuthenticateUser();
}


function getEl(val) {
    return document.getElementById(val);
}

function isEmpty(s) {
    return ((s == null) || (s.length == 0))
}


function isWhitespace(s) {
    var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}
function isEmail(s) {
    if (isEmpty(s))
        if (isEmail.arguments.length == 1) return defaultEmptyOK;
    else return (isEmail.arguments[1] == true);

    // is s whitespace?
    if (isWhitespace(s)) return false;

    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@")) {
        i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != ".")) {
        i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
} //end function isEmail

function isnull(sValue) {
    sValue = String(sValue);
    return (sValue == '' || sValue == 'null' || sValue == 'undefined');
} // end function isnull

function trim(sValue, sDefault) {
    var trm = CStr(sValue);
    var dfl = CStr(sDefault);

    trm = trm.replace(/(^\s*)|(\s*$)/g, "");
    dfl = dfl.replace(/(^\s*)|(\s*$)/g, "");

    return trm == "" ? dfl : trm;
} // end function trim

function CInt(vValue, vDefault) {
    var str = trim(vValue);
    var strd = trim(vDefault);

    var intg = parseInt(str, 10);
    var intd = parseInt(strd, 10);

    intd = (isNaN(intd) ? 0 : intd);

    return (isNaN(intg) ? intd : intg);
} // end function CInt	 

function isInt(vle)// +,-, 0-9
{
    vle = vle.replace(/,/gi, "");
    var isint = trim(vle);
    return (isint.match(/^[ ]*[+-]?\d+[ ]*$/)); // integer||null
} // end function isInt	

function CStr(vValue, vDefault) {
    vDefault += "";
    if (vDefault == "undefined") vDefault = "";
    if (vDefault == "null") vDefault = "";

    vValue += "";
    if (vValue == "undefined") return vDefault;
    if (vValue == "null") return vDefault;

    return vValue;
} // end function CStr


function createCookie(name, value, days) {
    var expires;
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    else expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}


function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

/* Ajax CheckEmail  start */
function CheckEmail(emailValidatorID, txtEmailID) {
    var email = getEl(txtEmailID).value;
    if (email != null)
        UserManagement.IsEmailFree(email, Function.createDelegate(emailValidatorID, CheckEmail_Callback));
}
function CheckEmail_Callback(result, response, context) {
    if (result == false)
        getEl(this).style.display = "inline";
    else
        getEl(this).style.display = "none";

    getEl(this).isvalid = result;
}
/* Ajax CheckEmail End */

/*Ajax General Error start */
function onError(objError, response, context) {
    if (objError) {
        alert(objError.get_message() + '\r\nError: ' + objError.get_exceptionType());
    }
    else {
        alert('Response status code: ' + response.get_statusCode());
    }
}
/*Ajax General Error end */

function ValidateFields(customValidator, btnRegister) {

    var validated = Page_ClientValidate("firstDetailsGroup");

    if (validated) {

        var validator = getEl(customValidator);
        var email = getEl(validator.controltovalidate).value;
        var delgate = Function.createDelegate(customValidator,
                                             function(result, response, context) {
                                                 if (result) {
                                                     validator.isvalid = true;
                                                     validator.style.display = "none";
                                                     WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(btnRegister, "", true, "firstDetailsGroup", "", false, true))
                                                 }
                                                 else {
                                                     validator.isvalid = false;
                                                     validator.style.display = "inline";
                                                 }
                                             });

        UserManagement.IsEmailFree(email, delgate);

    }
}

function CountryChanged(ddCountryID, ddState, txtCity, trStateID, callBack) {
    var object = getEl(ddCountryID);
    if (object != null) {
        var selectedValue = object[object.selectedIndex].value;
        var countryID = selectedValue.split("|")[0];
        var trState = getEl(trStateID);
        getEl(txtCity).value = "";

        if (selectedValue.split("|")[1] == "False") {
            SaveItemState(getEl(ddCountryID), null);
            trState.style.display = "none";
            if (callBack)
                callBack(trStateID);
        }
        else {
            StateChanged(ddCountryID, ddState, txtCity);
            var object = { "ddState": ddState, "callBack": callBack };
            TreeItemsAgent.GetStates(countryID, "en", Function.createDelegate(object, GetStates_Callback));
            trState.style.display = "";
        }
    }
}

function StateChanged(dropDownCountryID, ddStateID, txtCity) {

    getEl(txtCity).value = "";
    SaveItemState(getEl(dropDownCountryID), getEl(ddStateID));
}

function GetStates_Callback(result, response, context) {

    var output = result;
    var state = this["ddState"];
    var callback = this["callBack"];

    if (output != null)
        FillStates(state, output);

    if (callback)
        callback(state);
}
function FillStates(ddStatesID, xmlData) {
    GetXMLObject(xmlData)
    var ddStates = getEl(ddStatesID)
    var mainLevelRows = "";

    var collpaseElement = "";
    var itemName = "";
    var itemID = "";
    var itemHasChild = "";
    var collapseHolder = "";
    var xmlItemsCount = xmlDoc.getElementsByTagName(xmlCountryNodeNames[0]).length;

    if (xmlItemsCount > 0) {
        ddStates.length = 0;
        for (var index = 0; index < xmlItemsCount; index++) {
            itemName = xmlDoc.getElementsByTagName(xmlCountryNodeNames[0])[index].childNodes[0].nodeValue;
            itemID = xmlDoc.getElementsByTagName(xmlCountryNodeNames[1])[index].childNodes[0].nodeValue;
            var optionName = new Option(itemName, itemID, false);
            var optionLength = ddStates.options.length;
            ddStates.options[optionLength] = optionName;
        }
    }
}

function Validation(validatorContainer) {

    this._validationfunction = validatorContainer["validationfunction"];
    this._validator = $get(validatorContainer["validatorID"]);
    this._errorControl = $get(validatorContainer["errorControlID"]);

    if (this._validator.controltovalidate)
        this._controlToValidate = $get(this._validator.controltovalidate);

    this._errorControl.style.display = "none";
    this._isValid = false;

    this.Evaluate = function() {

        var func = eval(this._validationfunction);
        var delegate = Function.createDelegate(this, func);
        var isValid = delegate();

        if (!isValid)
            this._errorControl.style.display = "inline";
        else
            this._errorControl.style.display = "none";

        this._isValid = isValid;
        return this._isValid;
    },

    this._validator.evaluationfunction = Function.createDelegate(this, this.Evaluate);
    this._validator.display = "None";
}

Validation.prototype = {
    IsValid: function() {

        return this._isValid;
    }
};

function CategoryValidation() {
    return this._controlToValidate.value != this._validator.initialvalue;
}

function emailIsValid() {
    return (typeof this._validator._isvalid == "undefined" || this._validator._isvalid);
}

function ValidatePage(btnClientID) {

    var pageValidate = Page_ClientValidate("privateUser");

    if (phonesDynamicControlsManager.get_isUpdating()) {
        if (!CheckPhoneNotEmpty()) {
            if (phonesManager.get_count() > 1)
                clearEmptyPhone();

            phonesValid = true;
        }
        else
            updatePhone();
    }

    if (IsDataControlValid(true) && pageValidate && phonesValid)
        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(btnClientID, "", true, "", "", false, true));
}

function updateStateHiddenField(ddStatesID) {
    var states = $get(ddStatesID);
    var hiddenField = $get(updateStateHiddenField.hiddenFieldID);

    if (states[states.selectedIndex])
        hiddenField.value = states[states.selectedIndex].value;
    else
        hiddenField.value = "";

    if (typeof stateEvents != "undefined") {
        var handler = stateEvents.getHandler(onStateChangedKey);

        if (handler != null)
            handler(states);
    }
}

function add_onStatesDatabound(handler) {
    stateEvents.addHandler(onStateChangedKey, handler);
}

function remove_onStatesDatabound(handler) {
    stateEvents.removeHandler(onStateChangedKey, handler);
}

function ChangeToEditMode(pnlEditModeID, pnlViewID) {

    var panelEdit = getEl(pnlEditModeID);
    var panelView = getEl(pnlViewID);

    if (panelEdit && panelView) {
        panelView.style.display = "none";
        panelEdit.style.display = "inline";
    }
    else {
        panelEdit.style.display = "none";
        panelView.style.display = "inline";
    }
}

function PhoneRemoval(validators, submitButtonID) {

    var validator;
    var submitButton = getEl(submitButtonID);

    for (var i = 0; i < validators.length; i++) {
        validator = getEl(validators[i]);

        if (!validator)
            return;

        validator.enabled = false;
    }

    var isPageValid = Page_ClientValidate(validator.validationGroup);

    if (isPageValid)
        eval(submitButton.href);
}

function EnableAllValidators() {
    for (var i = 0; i < Page_Validators.length; i++) {
        Page_Validators[i].enabled = true;
    }
}

function getElement(e, isIE) {
    var currentElement = e.target.parentNode;
    return currentElement;
}

function getFileExtension(fileName) {
    if (fileName.length == 0) return "";
    var dot = fileName.lastIndexOf(".");
    if (dot == -1) return "";
    var extension = fileName.substr(dot, fileName.length);
    return extension;
}
function checkFileType(fileName) {
    var ext = getFileExtension(fileName);
    if (ext.toLowerCase() == ".jpg" || ext.toLowerCase() == ".png" || ext.toLowerCase() == ".gif" ||
     ext.toLowerCase() == ".jpeg" || ext.toLowerCase() == ".bmp") return true;
    else return false;
}
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}


function SelectAraeByFocus(objID) {
    if (getEl(objID)) {
        getEl(objID).select();
    }
}
function AjaxCaptchaValidation(e) {
    e.preventDefault();
    var challenge = Recaptcha.get_challenge();
    var userResponse = Recaptcha.get_response();
    UserManagement.AjaxCaptchaValidation("6Ld3CwUAAAAAADbtRw62ewmAsXocVID4IAC0xPPC", challenge, userResponse, Function.createDelegate(e.target.name, OnAjaxCaptchaValidationComplete));
}

function OnAjaxCaptchaValidationComplete(result, userContext, methodName) {

    if ("false" == result.toString()) {
        Recaptcha.reload();
    }
    captchaValidation._validator.enabled = true;
    captchaValidation._isValid = result;

    var validationGroup = captchaValidation._validator.validationGroup;

    if (Page_ClientValidate(validationGroup))
        __doPostBack(this, "");
}

function ReplaceString(expressionToReplace, inputText, newExpression) {
    var output = inputText;
    output = output.replace(new RegExp(expressionToReplace, "gi"), newExpression);
    return output;
}


function GetMatch(inputText, pattern) {
    var reg = new RegExp(pattern);
    return ((inputText.match(reg) != null && inputText.match(reg).length > 0) ? inputText.match(reg)[0] : null);
}

function GetMatches(inputText, pattern) {
    //debugger;
    var reg = new RegExp(pattern);
    return inputText.match(reg);
}

function GetOutputMatches(inputText, pattern) {
    //debugger;
    var reg = new RegExp(pattern, "gi");
    var matches = inputText.match(reg);
    var outputString = "";

    for (var j = 0; j < matches.length; j++) {
        outputString += matches[j];
    }
    return outputString;
}

function GetLastMatch(inputText, pattern) {
    var reg = new RegExp(pattern, "gi");
    var lastMatch = null;
    if (inputText.match(reg) != null && inputText.match(reg).length > 0) {
        lastMatch = inputText.match(reg)[inputText.match(reg).length - 1];
    }
    return lastMatch;
}

var isOpened = false;
function SetIsOpen(pIsOpened) {
    //alert(isOpened);
    isOpened = pIsOpened;
}

function CloseControlMenu(controlID) {
    //debugger;
    //alert(isOpened);
    if (!isOpened) {
        if (document.getElementById(controlID)) {
            document.getElementById(controlID).style.display = 'none';
        }
    }
}

function buildElementsContainer(elementsObject) {
    for (var i in elementsObject)
        elementsObject[i] = $get(elementsObject[i]);

    return elementsObject;
}

function sanitizeChildNodes(childNodes) {
    var children = [];

    for (var i = 0; i < childNodes.length; i++) {
        var child = childNodes[i];

        if (child.tagName && child.nodeType == 1)
            children.push(child);
    }

    return children;
}
/***************************************************************/

function SetTextByBlur(obj) {
    var textBoxObject = document.getElementById(obj);
    if (textBoxObject) {
        var defaultTextField = textBoxObject.value;
        var textField = textBoxObject.value;
        document.getElementById(obj).value = textField;
    }
}

function ClearTextByFocus(obj) {
    var textBoxObject = document.getElementById(obj);
    if (textBoxObject) {
        //alert(textBoxObject.value);
        var defaultTextField = textBoxObject.value;
        var textField = textBoxObject.value;
        if (defaultTextField == textField) {
            textBoxObject.value = "";
        }
        else {
            textBoxObject.value = defaultTextField;
        }

    }
}
/***************************************************************/

function checkName(sender, args) {

    var textBox = $get(sender.controltovalidate);
    var regex = new RegExp(/\d/);

    if (textBox.value.trim() !== "" && textBox.value.trim().match(regex)) {
        args.IsValid = false;
    }
    else
        args.IsValid = true;
}


var _ddlReasonID;
var _validatorID;
function SendReport(validatorID, ddlReasonsID, userBranchIDToReport) {
    _ddlReasonID = ddlReasonsID;
    _validatorID = validatorID;
    if (document.getElementById(ddlReasonsID).value == "-1") {
        document.getElementById(validatorID).style.display = "block";
    }
    else {
        GeneralWS.SendReportViolationMailToAdmin(userBranchIDToReport, document.getElementById(ddlReasonsID).value, document.getElementById('userReasonTxtAreaID').value, SendReportViolationMailToAdmin_Callback);
    }
}

function CloseReport() {
    document.getElementById('hlnkCloseWindow').style.display = "none";
    document.getElementById('lblHeaderMessage').innerHTML = thankYouForHelpingUs;
    document.getElementById('userReasonTxtAreaID').readOnly = false;
    document.getElementById('userReasonTxtAreaID').value = "";
    if (_ddlReasonID) {
        document.getElementById(_ddlReasonID).disabled = false;
        document.getElementById(_ddlReasonID).className = '';
    }
    if (_validatorID)
        document.getElementById(_validatorID).style.display = 'none';
    document.getElementById('reportViolationDiv').style.display = 'none';
    document.getElementById('userReasonTxtAreaID').className = '';
    document.getElementById('divButtons').style.display = 'block';
}

function SendReportViolationMailToAdmin_Callback(result, response, context) {
    ShowReportAfterSending();
}

function ShowReportAfterSending() {
    document.getElementById('pThankYou').className = "afterSend";
    document.getElementById('hlnkCloseWindow').style.display = "inline";
    document.getElementById('lblHeaderMessage').innerHTML = reportSuccessfullySent;
    document.getElementById('userReasonTxtAreaID').readOnly = true;
    document.getElementById('userReasonTxtAreaID').className = 'disabled';
    document.getElementById(_ddlReasonID).disabled = true;
    document.getElementById(_ddlReasonID).className = 'disabled';
    document.getElementById('divButtons').style.display = 'none';
}

function ShowReportViolationPopup() {
    if (document.getElementById('reportViolationDiv'))
        document.getElementById('reportViolationDiv').style.display = 'block';
    return false;
}


function GetCurrentSrcElement(e) {
    return ((document.all) ? e.srcElement : e.target);
}

function GetInnerText(objID) {
    var textObject = "";
    var clientObject = document.getElementById(objID);
    if (clientObject) {
        textObject = ((document.all) ? clientObject.innerText : clientObject.textContent);
    }
    return textObject;
}

function GetInnerTextByRefObject(obj) {
    return ((document.all) ? obj.innerText : obj.textContent);
}

function SetInnerText(obj, textToSet) {
    if (document.all) {
        obj.innerText = textToSet;
    }
    else {
        obj.textContent = textToSet;
    }
}

function IsVariableDefined(yourVar) {

    return (typeof (yourVar) != 'undefined')
}


Array.prototype.Contains = function(element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == element) {
            return true;
        }
    }
    return false;
};

function AllowedOnly1MenuToBeOpened(objClientID) {
    var aliasName = ReplaceString("[0-9]", objClientID, "");
    var unique = GetMatch(objClientID, /\d{1,10}/);
    var tagToScan = document.getElementById(objClientID).nodeName;
    var tagsArray = document.getElementsByTagName(tagToScan);

    for (var j = 0; j < tagsArray.length; j++) {
        if (tagsArray[j].id) {
            var currentAliasName = ReplaceString("[0-9]", tagsArray[j].id, "");
            if (aliasName == currentAliasName) {
                if (tagsArray[j].id != objClientID) {
                    //if (document.getElementById(tagsArray[j].id).style.display == 'block') {
                    document.getElementById(tagsArray[j].id).style.display = 'none';
                    //}
                }
                else {
                    document.getElementById(tagsArray[j].id).style.display = 'block';
                }
            }
        }
    }
}

function CreateClientObject(clientID) {
    return (document.getElementById(clientID) ? document.getElementById(clientID) : null);
}

function GetRefToHiddenFields() {
    var inputCollection = document.getElementsByTagName('INPUT');
    var hiddenCollection = new Array();

    for (var j = 0; j < inputCollection.length; j++) {
        if (inputCollection[j].type.toLowerCase() == 'hidden') {
            hiddenCollection.push(inputCollection[j]);
        }
    }
    return hiddenCollection;
}

function FormatToSpecialUnicodeCharacters(sourceStr) {
    var generateStr = (sourceStr.indexOf("'") != -1) ? sourceStr.replace("'", "\\u0027") : sourceStr;
    generateStr = (generateStr.indexOf('"') != -1) ? sourceStr.replace('"', "\\u0022") : generateStr;
    return generateStr;
}

function GlobalTrim(str) {
    var trimStr = str.replace(/\s/g, "");
    return trimStr;
}

function SetDisplayAttribute(obj, attributeValue) {
    if (obj != null) {
        obj.style.display = attributeValue;
    }
}

function ForceEnglishChars(e, notifierID) {

    var isTypedEnglishChar = true;

    var currentObject = GetCurrentSrcElement(e);
    var notifierObject = CreateClientObject(notifierID);

    var key = ((window.event) ? event.keyCode : e.which);
    var typedChar = String.fromCharCode(key);

    var patternToMatch = "[A-Za-z0-9'\".,() ]";
    var reg = new RegExp(patternToMatch);

    if (!reg.test(typedChar)) {
        isTypedEnglishChar = false;
        if (notifierObject != null) {
            SetDisplayAttribute(notifierObject, 'block');
        }
        if ((window.event)) {
            e.returnValue = isTypedEnglishChar;
        }
        else {
            if (key > 0 && key != 8) {
                return isTypedEnglishChar;
            }
            else {
                if (notifierObject != null) {
                    SetDisplayAttribute(notifierObject, 'none');
                }
                return true;
            }
        }
    }
    else {
        if (notifierObject != null) {
            SetDisplayAttribute(notifierObject, 'none');
        }
        return isTypedEnglishChar;
    }
}


function CustomOuterHTML(obj) {
    //alert("obj.innerHTML " + obj.innerHTML);
    var HTML = "<" + obj.tagName;
    for (var i = 0; i < obj.attributes.length; i++) {
        var attr = obj.attributes[i];
        HTML += " " + attr.name + "=\"" + attr.nodeValue.replace(/"/, "\"") + "\"";
    }
    HTML += ">";
    HTML += obj.innerHTML + "</" + obj.tagName + ">";
    return HTML;
}

function AddOption(objSelector, textOption, valueOption) {
    var item = new Option(textOption, valueOption, false);
    var optionLength = objSelector.options.length;
    objSelector.options[optionLength] = item;
}

function RemoveOptions(objSelector) {
    if (objSelector.length > -1) {
        for (var i = objSelector.length; i > -1; i--) {
            objSelector.remove(i);
        }
    }
}


function GeneralSaveCurrentPage(cpByPostBackClientID, currentPage) {
    if (document.getElementById(cpByPostBackClientID))
    { document.getElementById(cpByPostBackClientID).value = currentPage; }
}


function clickButton(e, buttonid) {
    var evt = e ? e : window.event;

    var bt = document.getElementById(buttonid);

    if (bt) {

        if (evt.keyCode == 13) {

            bt.click();

            return false;

        }
    }
}

function GetLangCode() {
    //alert(window.location);

    var pageURL = (document.all) ? document.URLUnencoded : window.location.href;
    var langName = "en";
    var httpIndex = pageURL.indexOf("http://");

    if (httpIndex > -1) {
        var pageURL = pageURL.replace("http://", "")
        langName = pageURL.substring(0, pageURL.indexOf("."));
    }
    return (langName == "www") ? "en" : langName;
}



function StartLoading(loadingContainer) {
    //debugger;
    var loader = CreateClientObject(loadingContainer);
    if (loader != null) {
        loader.style.display = '';
    }
}


function StopLoading(loadingContainer) {
    var loader = CreateClientObject(loadingContainer);
    if (loader != null) {
        //loader.innerHTML = '';
        loader.style.display = 'none';
    }
}

var loader = null;
this.Loader = function(clientID) {
    //debugger;
    this.clientID = clientID;

    this.GetLoader = function() {
        return CreateClientObject(this.clientID);
    }
    return this;
}

function InitLoader(clientID) {
    loader = new Loader(clientID);
}

function ShowLoader() {
    //debugger;
    if (loader != null) {
        var loaderObject = loader.GetLoader();
        if (loaderObject != null) {
            loaderObject.style.display = '';
        }
    }
}

function HideLoader() {
    //debugger;
    if (loader != null) {
        var loaderObject = loader.GetLoader();
        if (loaderObject != null) {
            loaderObject.style.display = 'none';
        }
    }
}
