﻿var target_fields = ".epiqButton:not([id*=_login]):not(.blockDisable):not(div.blockDisable > input),a.dxgvCommandColumnItem_EpiqDefault[href*='__doPostBack'],a.dxgvCommandColumnItem_EpiqDefault[href*='WebForm_DoPostBackWithOptions'],a.dxgvCommandColumnItem_EpiqDefault[href*='aspxGV'],.forceDisable,.forceDisable>a,.forceDisable>input";
//var target_fields = "a[href*='__doPostBack']:not([target=_blank]),a[href*='WebForm_DoPostBackWithOptions']:not([target=_blank]),input[type=submit]:not([id*=_login])";
var clicked_fields;
var disabled_fields;
var swapped_field;
var replaced_field;
var field_list = [];

$(document).ready(function () {
    // configure tooltips
    $('.ttWrapper').find('.dxeListBoxItem_EpiqDefault:not([title]):not([display=none])')
        .live('mouseover', function () {
            $(this).attr('title', $("<div/>").html($(this).html()).text());
        });

    // handle click events
    initializeFields();
    restoreWindow(false);

    if (typeof Sys != 'undefined')
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(restoreWindow);
});

function restoreWindow(initFields) {
	clicked_fields = [];
	if (swapped_field != undefined && swapped_field != null) {
		$(swapped_field).remove();
	}
	if (replaced_field != undefined && replaced_field != null) {
		$(replaced_field).css('display', '');
	}
	toggleEnable(field_list, true);

	if (initFields == undefined || initFields)
		initializeFields();
}

function initializeFields() {
	field_list = getTargetFields();
	
	$(field_list).click(function (e) {
		return handlePostbackClick(this, e);
	});

	disabled_fields = [];
	$(field_list).filter(":disabled:not([display=none])").each(function() {
		disabled_fields.push($(this).attr('id'));
	});
}

function handlePostbackClick(c, e) {
	// don't process if the item has an onclick handler that is hiding a popup, as this causes undesireable affects
	if ($(c).is('[onclick*=.Hide()]')) return true;
	if ($(c).is(target_fields)) {
		if ($(c).is(':disabled')) return false;

		// skip client-side validation if CausesValidation=false
		if ($(c).is('input[type=submit][onclick*=WebForm_DoPostBackWithOptions]')) {
			if (typeof (Page_ClientValidate) == 'function') {
				if (Page_ClientValidate() == false) {
					return false;
				}
			}
		}
		else {
			Page_BlockSubmit = false;
		}

		cloneField(c);
		toggleEnable(field_list, false);
	}
	else {
		var id = $(c).attr('id');
		if (isClicked(id)) return false;
		clicked_fields.push();
	}
	return true;
}

function getTargetFields() {
    var $epiqButtons = $(".epiqButton").not('[id*=_login]').not('.blockDisable').not('div.blockDisable > input');
    var $anchors = $("a").filter(".dxgvCommandColumnItem_EpiqDefault");
//    var $filtera = $anchors.filter(".dxgvCommandColumnItem_EpiqDefault[href*='__doPostBack']");
//    var $filterb = $anchors.filter(".dxgvCommandColumnItem_EpiqDefault[href*='WebForm_DoPostBackWithOptions']");
//    var $filterc = $anchors.filter(".dxgvCommandColumnItem_EpiqDefault[href*='aspxGV']");
    var $disabled = $(".forceDisable,.forceDisable>a,.forceDisable>input");

    return $.merge($epiqButtons, $anchors, $disabled);
}

function cloneField(c) {
	replaced_field = $(c);
	swapped_field = $(replaced_field).clone();
	$(swapped_field).attr('id', $(c).attr('id') + '_clone');
	$(swapped_field).attr('disabled', 'disabled');
	$(swapped_field).attr('onclick', 'return false;');
	$(swapped_field).attr('href', '');
	$(replaced_field).after(swapped_field);
	$(replaced_field).css('display', 'none');
}
function toggleEnable(s, e) {
	if (e) {
		$(s).filter(':disabled').each(function() {
			if ($(this).css('display') != 'none' && !isDisabled($(this).attr('id'))) {
				$(this).removeAttr('disabled');
			}
		});
	}
	else {
		$(s).each(function() {
			if ($(this).css('display') != 'none') {
				if ($(this).is(':disabled'))
					disabled_fields.push($(this).attr('id'));
				else
					$(this).attr('disabled', 'disabled');
			}
		});
	}
}

function isDisabled(id) {
	for (var i = 0; i < disabled_fields.length; i++) {
		if (id == disabled_fields[i])
			return true;
	}
	return false;
}

function isClicked(id) {
	for (var i = 0; i < clicked_fields.length; i++) {
		if (id == clicked_fields[i])
			return true;
	}
	return false;
}

function PickerUtility() {
}

function preventKeyPress(event) {
	if (event.keyCode === 13) {
		return false;
	}
}
PickerUtility.captureEnter = function (updatePanel) {
	$(document).keypress(preventKeyPress);
	$("#" + updatePanel + " .dxgvFilterRow_EpiqDefault :text").keypress(preventKeyPress);
	$(document).delegate("form", "submit", returnFalse);
}
PickerUtility.stopCaptureEnter = function (updatePanel) {
	$(document).unbind("keypress");
	$("#" + updatePanel + " .dxgvFilterRow_EpiqDefault :text").unbind("keypress");
	$(document).undelegate("form", "submit", returnFalse);
}

function returnFalse() { return false; }
