/* UI functions */

function dialogmsg(title, msg) {
    if (msg.length) {
        $(function () {
            $('#divdialog').dialog('option', 'title', title);
            $('#divdialog p').text(msg);
            $('#divdialog').dialog('open');
        });
    }
}

function sitepostback() {
    /* DOM ready */
    $(function () {

        uiaddclasses();

        uisetinteraction();

        // Default dialog in master
        $('#divdialog').dialog({
            autoOpen: false,
            buttons: { "Ok": function () { $(this).dialog("close"); } },
            modal: true,
            width: 550
        });

        $('.tooltip').hover(
					function () { $(this).addClass('ui-state-hover'); },
					function () { $(this).removeClass('ui-state-hover'); }
				);

        $('.tooltip').each(function () {
            $(this).qtip({
                content: $(this).attr('tooltip'),
                style: 'dark'
            });
        });

    });
}

sitepostback();

jQuery.validator.addMethod("phoneUS", function (phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, "");

    $('#' + element.id).val(phone_number.replace(/[\(\)\s+-]/g, ""));

    return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

function val_errorPlacement(error, element) {
    if (error.html() != '') {
        element.parent("td").next("td").children("span").removeClass("ui-icon-arrow-1-e");
        element.parent("td").next("td").children("span").removeClass("ui-icon-check");
        element.parent("td").next("td").children("span").addClass("ui-icon");
        element.parent("td").next("td").children("span").addClass("ui-icon-close");
    } else {
        element.parent("td").next("td").children("span").removeClass("ui-icon-arrow-1-e");
        element.parent("td").next("td").children("span").removeClass("ui-icon-close");
        element.parent("td").next("td").children("span").addClass("ui-icon");
        element.parent("td").next("td").children("span").addClass("ui-icon-check");
    }
}

function val_success(element) {
    element.parent("td").next("td").children("span").removeClass("ui-icon-arrow-1-e");
    element.parent("td").next("td").children("span").removeClass("ui-icon-close");
    element.parent("td").next("td").children("span").addClass("ui-icon");
    element.parent("td").next("td").children("span").addClass("ui-icon-check");
}

// Make sure all ui elements in a page have the right class
function uiaddclasses() {

    $(":input").each(function (i) {
        $(this).addClass("fg-input");
        $(this).addClass("ui-state-default");
        $(this).addClass("ui-corner-all");
    });

    var arr = ["button", "checkbox", "password", "radio", "reset", "submit", "text"];

    jQuery.each(arr, function () {
        var classname = this;
        $(":" + classname).each(function (i) {
            $(this).addClass("fg-" + classname);
            $(this).addClass("ui-" + classname);
        });
    });

    $("fieldset").each(function (i) {
        $(this).addClass("ui-widget");
        $(this).addClass("ui-corner-all");
    });

    $("fieldset legend").each(function (i) {
        $(this).addClass("ui-state-default");
    });
}

// default interaction effects across pages
function uisetinteraction() {
    $('.fg-button').hover(
        function () { $(this).addClass('ui-state-hover'); },
        function () { $(this).removeClass('ui-state-hover'); }
	);

    $('.fg-input').focus(
	    function () { $(this).addClass("ui-state-active"); }
	);

    $('.fg-input').blur(
	    function () { $(this).removeClass("ui-state-active"); }
	);

    $('.fg-textarea').focus(
	    function () { $(this).addClass("ui-state-active"); }
	);

    $('.fg-textarea').blur(
	    function () { $(this).removeClass("ui-state-active"); }
	);

    $('.linkbut').hover(
        function () { $(this).addClass('ui-state-hover'); },
        function () { $(this).removeClass('ui-state-hover'); }
    );
}

// default dialog in master
function showresponse(title, msg) {
    if (msg.length) {
        $(function () {
            $('#divdialog').dialog('option', 'title', title);
            $('#divdialog p').text(msg);
            $('#divdialog').dialog('open');
        });
    }
}

// manually call after a gv postback when a pager is used
function stylizepager() {
    $(function () {
        $(".gvPager a").addClass('fg-button');
        $(".gvPager a").addClass('ui-button');
        $(".gvPager a").addClass('ui-state-default');
        $(".gvPager a").addClass('ui-corner-all');

        $(".gvPager span").addClass('fg-button');
        $(".gvPager span").addClass('ui-button');
        $(".gvPager span").addClass('ui-state-active');
        $(".gvPager span").addClass('ui-corner-all');

        uisetinteraction();  // from master
    });
}


// Allow a textbox to be focused and cursor set to the end of the value in either browser

function setSelectionRange(input, selectionStart, selectionEnd) {
    if (input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(selectionStart, selectionEnd);
    }
    else if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
}

function setCaretToEnd(input) {
    setSelectionRange(input, input.value.length, input.value.length);
}

function goShowIt(cla, ele) {
    cla = "." + cla;
    ele = "#" + ele;

    $(cla).fadeOut("fast");
    $(ele).fadeIn("slow");

    return false;
}

// override these in your code to change the default behavior and style 
$.blockUI.defaults = {
    // message displayed when blocking (use null for no message) 
    message: '<h1>Please wait...</h1>',

    // styles for the message when blocking; if you wish to disable 
    // these and use an external stylesheet then do this in your code: 
    // $.blockUI.defaults.css = {}; 
    css: {
        padding: '15px',
        margin: 0,
        width: '30%',
        top: '40%',
        left: '35%',
        textAlign: 'center',
        color: '#fff',
        border: 'none',
        backgroundColor: '#000',
        cursor: 'wait',
        '-webkit-border-radius': '10px',
        '-moz-border-radius': '10px',
        opacity: .5
    },

    // styles for the overlay 
    overlayCSS: {
        backgroundColor: '#000',
        opacity: 0.6
    },

    // styles applied when using $.growlUI 
    growlCSS: {
        width: '350px',
        top: '10px',
        left: '',
        right: '10px',
        border: 'none',
        padding: '5px',
        opacity: 0.6,
        cursor: null,
        color: '#fff',
        backgroundColor: '#000',
        '-webkit-border-radius': '10px',
        '-moz-border-radius': '10px'
    },

    // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w 
    // (hat tip to Jorge H. N. de Vasconcelos) 
    iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',

    // force usage of iframe in non-IE browsers (handy for blocking applets) 
    forceIframe: false,

    // z-index for the blocking overlay 
    baseZ: 1000,

    // set these to true to have the message automatically centered 
    centerX: true, // <-- only effects element blocking (page block controlled via css above) 
    centerY: true,

    // allow body element to be stetched in ie6; this makes blocking look better 
    // on "short" pages.  disable if you wish to prevent changes to the body height 
    allowBodyStretch: true,

    // enable if you want key and mouse events to be disabled for content that is blocked 
    bindEvents: true,

    // be default blockUI will supress tab navigation from leaving blocking content 
    // (if bindEvents is true) 
    constrainTabKey: true,

    // fadeIn time in millis; set to 0 to disable fadeIn on block 
    fadeIn: 200,

    // fadeOut time in millis; set to 0 to disable fadeOut on unblock 
    fadeOut: 400,

    // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock 
    timeout: 0,

    // disable if you don't want to show the overlay 
    showOverlay: true,

    // if true, focus will be placed in the first available input field when 
    // page blocking 
    focusInput: true,

    // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity) 
    applyPlatformOpacityRules: true,

    // callback method invoked when unblocking has completed; the callback is 
    // passed the element that has been unblocked (which is the window object for page 
    // blocks) and the options that were passed to the unblock call: 
    //     onUnblock(element, options) 
    onUnblock: null

    // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493 
    //    quirksmodeOffsetHack: 4
}; 

//$(document).ajaxStart(function () { $.blockUI(); }).ajaxStop(function () { $.unblockUI(); });

