$(document).ready(function () {
    styleTables();
    styleToolTypes();

});

function manualValidate(formname) {
    //////http://www.phpvs.net/2010/04/26/manually-validate-an-asp-net-mvc-form-on-the-client-side-with-microsoftmvcvalidation-js-and-jquery/
//    if (!formname || formname==null) {
//        formname = "form0";
//    }

    var formobject;
    
    if(!formname)
        formobject = $('input[type=submit]').closest("form");
    else
        formobject = $('#' + formname);

    var formvalidation = formobject[0]['__MVC_FormValidation'];

    var errors = null;
    if (formvalidation) {
        errors = formvalidation.validate("submit");        // Validate the form
        if (errors.length > 0) {
            ScreenManager.Error(null, 'You have not completed all mandatory fields.');
        }
        else
            errors = null;
    }
    return errors;
    
}

function styleTables() {
    $(".list tr:even").removeClass("odd").addClass("even");
    $(".list tr:odd").removeClass("even").addClass("odd");
    $(".list tr").mouseover(function () { $(this).addClass("over"); }).mouseout(function () { $(this).removeClass("over"); });
}

function styleToolTypes() {
    tooltipAttribute('[tooltip]', 'bottomMiddle');
    tooltipAttribute('[tooltipLeft]', 'bottomRight','topLeft');
    tooltipAttribute('[tooltipRight]', 'bottomLeft','topRight');
}

var currentClass = "";
$(function () {
    $("input:submit,input:button,.clickMe").button();
});
$(function () {
    $("#dialog").dialog({
        autoOpen: false,
        modal: true,
        width: 500,
        height: 'auto',
        autoResize: true
    });
});
function loadDialog(whatObject, larger) {
    ScreenManager.Modal('dialog');
    hideLoader(whatObject);
}
function unLoadDialog() {
    ScreenManager.ModalClose('dialog');
}
function showLoader(whatObject) {
    currentClass = whatObject.className;
    whatObject.className = currentClass + " loading";
}
function hideLoader(whatObject) {
    //whatObject.className = (currentClass == "") ? " " : currentClass;
}
function setCookie(p_name, p_value, p_validity) {
    var expiryDate = new Date();
    expiryDate.setDate(expiryDate.getDate() + p_validity);
    document.cookie = p_name + "=" + escape(p_value) + ((p_validity == null) ? "" : ";expires=" + expiryDate.toUTCString());
}
function getCookie(p_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(p_name + "=");
        if (c_start != -1) {
            c_start = c_start + p_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
}

function deletecookie(name) {
    document.cookie = name +
'=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

function saveMainMenuItem(currentItem) {
    setCookie("currentMenu", currentItem,30);
}

function getSelectedMenu() {
    var currentMenuItem = getCookie("currentMenu");
    if (currentMenuItem != "") {
        if (document.getElementById(currentMenuItem)) {
            document.getElementById(currentMenuItem).setAttribute("class", "selectedMenu");
        }
    }
    deletecookie("currentMenu");
}

function downloadFile(filename) {
    window.open(filename, "download");
}

function decodeFromMCE() {
    $('div.decodeFromMCE').each(function () {
        $(this).html(unescape($(this).html()));
    });
}


function initMCE(cssSelector) {
    tinyMCE.init({
        plugins: "paste,table,netadvimage,inlinepopups,iirbanners,netadvfilebrowser",
        theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,forecolor,backcolor,|,bullist,numlist,|,outdent,indent,blockquote,|,pastetext,pasteword,selectall",
        theme_advanced_buttons2: "justifyleft,justifycenter,justifyright,justifyfull,|,fontselect,fontsizeselect,|,netadvfilebrowser,link,unlink,netadvimage,code,iirbanners",
        theme_advanced_buttons3: 'tablecontrols,|',
        mode: 'specific_textareas',
        editor_selector: cssSelector,
        theme: 'advanced',
        extended_valid_elements: "iframe[src|width|height|name|align|class|frameborder|border|cellspacing|scrolling],style[dir<ltr?rtl|lang|media|title|type],script[language|type|src]",
        theme_advanced_toolbar_location: 'top',
        theme_advanced_toolbar_align: 'left',
        file_browser_callback: "filebrowser",
        relative_urls : false,
        convert_urls: false,
        remove_script_host: false
    });
}

function filebrowser(field_name, url, type, win) {
    
    fileBrowserURL = "/Scripts/plugins/netadvfilebrowser/browse";

	tinyMCE.activeEditor.windowManager.open({
		title: "Ajax File Manager",
		url: fileBrowserURL,
		width: 700 ,
		height: 500,
		inline: 1
	}, {
		window: win,
		input: field_name
	}
		
	);
}

function loadToolTips() {
    $('.tooltip').each(function () {
        $(this).qtip({
            content: $("#" + $(this).attr('tipid')).html() ,
            position: { 
                adjust: { screen: true }
            },
            style: 'cream'
        });
    });
}


function blockIncomplete() {
    $.blockUI.defaults.overlayCSS.opacity = .5;
    $('.blockincomplete').each(function () {
        $(this).block({
            message: $(this).attr("tooltip"),
            css: {
                border: 'none',
                backgroundColor: '#ffffff',
                '-webkit-border-radius': '5px',
                '-moz-border-radius': '5px',
                opacity: .7, 
                color: '#993300',
                padding: '15px',
                width: '70%'
            },
            overlayCSS: { backgroundColor: '#cccccc' }
         });
    });

    $('.blocknoinsurance').each(function () {
        $(this).block({
            message: "No Insurance",
            css: {
                border: 'none',
                backgroundColor: '#ffffff',
                '-webkit-border-radius': '5px',
                '-moz-border-radius': '5px',
                opacity: .7,
                color: '#993300',
                padding: '15px',
                width: '70%'
            },
            overlayCSS: { backgroundColor: '#cccccc' }
        });
    });
}

function tooltipAttribute(elements, tooltipPosition, toolTipTarget,tooltipAttribute) {
    var attributes;
    var tooltipText;
    if(toolTipTarget == null || toolTipTarget == '')
        toolTipTarget = 'topMiddle';

    if (tooltipAttribute == null || tooltipAttribute == '' || tooltipAttribute == undefined) {

        var regex = /^\[(.*)\]$/i;
        var results = elements.match(regex);
        if (results != null && results.length > 1) {
            tooltipAttribute = results[1];
        }
        else
            tooltipAttribute = 'tooltip';
    }
    
    $(elements).each(function () {

        tooltipText = $(this).attr(tooltipAttribute);
        if (tooltipText != null && tooltipText != '') {
            attributes = {
                content: tooltipText,
                style: { name: 'cream', tip: true },
                hide: {
                    when: 'mouseout',
                    fixed: true
                }
            };
            if (tooltipPosition != null && tooltipPosition != '') {
                attributes['position'] = {
                                            //target: $(this).children(':last'),
                                            corner: {
                                                tooltip: tooltipPosition,
                                                target: toolTipTarget
                                            }
                                        };
            }

            $(this).qtip(attributes);
        }
        
    });
}

function validateForm(formname, errorContainer) {
    jQuery.validator.messages.required = "You missed some required fields. They have been highlighted.";
    var formObject;
    if (formname)
        formObject = $("#" + formname);
    else
        formObject = $('input[name="submitButton"]').closest("form");

    formObject.validate({
        errorClass: "invalid",
        highlight: function (element, errorClass) {
            $(element).addClass(errorClass);
            $(element.form).find("label[for=" + element.id + "]")
                    .addClass(errorClass);
        },
        unhighlight: function (element, errorClass) {
            $(element).removeClass(errorClass);
            $(element.form).find("label[for=" + element.id + "]")
                    .removeClass(errorClass);
        },
        //errorContainer: "#" + errorContainer,
        errorLabelContainer: "#" + errorContainer + " ul",
        wrapper: "li",
        errorElement: "span",
        invalidHandler: function (form, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1
                                      ? 'Please correct the following error. '
                                      : 'Please correct the following errors. ';
                message = "<span>" + message + "</span><br/><br/><div class='screenContent'><ul>";
                var errorListing = new Array();

                $.each(validator.errorList, function (index, value) {
                    if ($.inArray(value.message, errorListing) < 0) {
                        errorListing.push(value.message);
                        message += "<li>" + value.message + "</li>";
                    }
                });
                message += "</div></ul>";
                ScreenManager.Error(null, message);

            } else {
                //$("div.error").hide();
                ScreenManager.Processing(null, 'Please wait while we process your form request.');
            }
        }

    });
}

function validateGroup(classname, message) {
    jQuery.validator.addMethod(classname, function (val, el) {
        var textboxes = $(':input:text[class~="' + classname + '"]:filled').length;
        var checkboxes = $(':input:checkbox[class~="' + classname + '"]:checked').length;
        var radios = $(':input:radio[class~="' + classname + '"]:checked').length;

        return textboxes || checkboxes || radios;
    }, (message != null ? message : 'Please fill out at least one of these fields'));
}

function validateCheckboxGroup(classname, message) {
    jQuery.validator.addMethod(classname, function (val, el) {
        var checkboxes = $(':input:checkbox[class~="' + classname + '"]:checked').length;
        var radios = $(':input:radio[class~="' + classname + '"]:checked').length;
        return checkboxes || radios;
    }, (message != null ? message : 'Please fill out at least one of these fields'));
}

function validateDependency(sourceClassname, dependentClassname, message, requireAll) {
    jQuery.validator.addMethod(sourceClassname, function (val, el) {
        var textboxes = $(':input:text[class~="' + sourceClassname + '"]:filled').length;
        var checkboxes = $(':input:checkbox[class~="' + sourceClassname + '"]:checked').length;
        var radios = $(':input:radio[class~="' + sourceClassname + '"]:checked').length;
        if (textboxes || checkboxes || radios) {
            textboxes = $(':input:text[class~="' + dependentClassname + '"]:filled').length;
            checkboxes = $(':input:checkbox[class~="' + dependentClassname + '"]:checked').length;
            radios = $(':input:radio[class~="' + dependentClassname + '"]:checked').length;
            
            if (requireAll) {
                textboxes = ($(':input:text[class~="' + dependentClassname + '"]').length == textboxes);
                checkboxes = ($(':input:checkbox[class~="' + dependentClassname + '"]').length == checkboxes);
                radios = ($(':input:radio[class~="' + dependentClassname + '"]').length == radios);

                return (textboxes && checkboxes && radios);
            }
            return (textboxes || checkboxes || radios);
        }
        else
            return true;
    }, (message != null ? message : 'Please fill out at least one of these fields'));
}


function parseNumber(nStr) {
    nStr += '';
    var val = parseFloat(nStr.replace(/,/g, ""));
    if (isNaN(val)) {
        return 0;
    }
    return val;
}

function numberFormat(nStr) {
    return addCommas(nStr.toFixed(2));
}


function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function validateDependencyById(elementID, dependentClassname, message, requireAll) {
    jQuery.validator.addMethod(elementID, function (val, el) {
        var textboxes = $('#' + elementID).val().length;
        var checkboxes = $('#' + elementID).is(':checked');
        if (textboxes || checkboxes) {

            textboxes = $(':input:text[class~="' + dependentClassname + '"]:filled').length;
            checkboxes = $(':input:checkbox[class~="' + dependentClassname + '"]:checked').length;
            radios = $(':input:radio[class~="' + dependentClassname + '"]:checked').length;

            if (requireAll) {
                textboxes = ($(':input:text[class~="' + dependentClassname + '"]').length == textboxes);
                checkboxes = ($(':input:checkbox[class~="' + dependentClassname + '"]').length == checkboxes);
                radios = ($(':input:radio[class~="' + dependentClassname + '"]').length == radios);

                return (textboxes && checkboxes && radios);
            }
            return (textboxes || checkboxes || radios);
        }
        else
            return true;
    }, (message != null ? message : 'Please fill out at least one of these fields'));
}
