﻿// wordcount.js has a dependancy on JQuery
function ValidateWordCount(textField, wordLimit, errorMsg) 
{
    var wordCount = GetWordCount(textField);
    var valid = wordCount <= wordLimit;

    if (!valid && (errorMsg != undefined && errorMsg.length > 0)) 
    {
        alert(errorMsg);
    }

    return valid;
}
function RadInputWordCount(textbox, args) 
{
    var valid = GenericWordCount(textbox.get_element());

    if (false && !valid) 
    {
        textbox.set_caretPosition(textbox.get_element().value.length);
    }

    return valid;
}
function TextBoxWordCount(textbox) 
{
    var valid = GenericWordCount(textbox);

    if (false && !valid) 
    {
        textbox.focus();
    }

    return valid;
}
function GenericWordCount(textbox)
{
    if (textbox != null) 
    {
        var wordLimit = $(textbox).data('WordLimit');
        var wordCountCtrlId = $(textbox).data('WordCountControlId');
        var wordCountHFieldId = $(textbox).data('WordCountHiddenFieldId');
        var errorMsgCtrlId = $(textbox).data('ErrorMessageControlId');
        var errorMsg = $(textbox).data('ErrorMessage');

        var wordCount = GetWordCount(textbox);
        $get(wordCountHFieldId).value = wordCount;

        if (wordLimit != undefined && wordLimit > 0) 
        {
            var valid = wordCount <= wordLimit;

            ShowWordCount(wordCount, $get(wordCountCtrlId), valid);
            if (!valid) 
            {
                ShowErrorMessage(errorMsg, errorMsgCtrlId);
            }
            else 
            {
                HideErrorMessage(errorMsgCtrlId);
            }
            return valid;
        }
        else 
        {
            ShowWordCount(wordCount, $get(wordCountCtrlId), true);
            return true;
        }
    }
}
function ShowErrorMessage(errorMsg, errorMsgCtrlId) 
{
    if (errorMsg != undefined) 
    {
        alert(errorMsg);
    }
    if (errorMsgCtrlId != undefined) 
    {
        errorMsgCtrl = $get(errorMsgCtrlId);
        errorMsgCtrl.style.display = '';
        errorMsgCtrl.style.visibility = 'visible';
    }
}
function HideErrorMessage(errorMsgCtrlId)
{
    if (errorMsgCtrlId != undefined) 
    {
        errorMsgCtrl = $get(errorMsgCtrlId);
        errorMsgCtrl.style.display = 'none';
        errorMsgCtrl.style.visibility = 'hidden';
    }
}
function ShowWordCount(wordCount, countEl, valid)
{
    countEl.innerHTML = wordCount;
    if (!valid) {
        countEl.style.color = 'red';
    }
    else {
        countEl.style.color = '';
    }
}
function GetWordCount(field) 
{   
    var fieldValue=field.value.replace(/\'/g,"");
    fieldValue=fieldValue.replace(/`/g,"");
    fieldValue=fieldValue.replace(/-/g,"");
    fieldValue=fieldValue.replace(/&/g," and ");
    
    var words=fieldValue.split(/[^\w\d-]+/g);  
    for(var i=0;i<words.length;i++)
    {
        if(!words[i])
        {
            words.splice(i,1);
            i--;
        }
    }
    return words.length;
}
