﻿

//function HighlightTab(tabId, parentId) {
//	var selectedTab = $('#' + tabId);

//	selectedTab.parent().parent().find('li.selected').removeClass('selected');
//	//$('#' + parentId + ' > div div ul li.selected').removeClass('selected');
//	selectedTab.parent().addClass('selected');
//}

var _togglerCurrentEventTarget;
var _togglerCurrentID;
var _togglerIsProcessing = false;
var _togglerState = 0;
var _animationDuration = 250;

function OnTogglerClick(containerID, target) {
	if (!_togglerIsProcessing) {
		_togglerIsProcessing = true;
		var control = $('#' + containerID + ' .toggle');

		_togglerCurrentEventTarget = target;
		_togglerCurrentID = containerID;

		if (control.hasClass('collapse')) {
			AnimateThenPostBack();

			control.removeClass('collapse');
			control.addClass('expand');
			control.hide();
		}
		else {
			PostBackThenAnimate();

			control.removeClass('expand');
			control.addClass('collapse');
			control.hide();
		}
	}
}

function OnTabClick(thisID, containerID, target) {
	var tabControl = $('#' + thisID);

	if (!_togglerIsProcessing && !tabControl.parent().hasClass('selected')) {
		_togglerIsProcessing = true;
		var control = $('#' + containerID + ' .toggle');



		_togglerCurrentEventTarget = target;
		_togglerCurrentID = containerID;

		tabControl.parent().parent().find('li.selected').removeClass('selected');
		tabControl.parent().addClass('selected');

		if (control.hasClass('collapse')) {
			FadeOutThenPostBack();

			control.hide();
		}
		else if (control.hasClass('expand')) {
			PostBackThenAnimate();

			control.removeClass('expand');
			control.addClass('collapse');
			control.hide();
		}
		else {
			FadeOutThenPostBack();
		}
	}
}

function ShowLoading() {
	$('#' + _togglerCurrentID + ' .loading').show();
}

function HideLoading() {
	$('#' + _togglerCurrentID + ' .loading').hide();
	$('#' + _togglerCurrentID + ' .toggle').show();
}

function DimContent(dimmed, callback) {
	var dimmer = $('#' + _togglerCurrentID + ' .progressdiv');
	var content = $('#' + _togglerCurrentID + ' .toggle-content');

	if (dimmed) {
		dimmer.css('left', content.offset().left + 'px');
		dimmer.css('top', content.offset().top + 'px');
		dimmer.width(content.width());
		dimmer.height(content.height());

		dimmer.show();

		if (callback != null) {
			callback();
		}
	}
	else {
		dimmer.hide();

		if (callback != null) {
			callback();
		}
	}
}

function PostBackThenAnimate() {
	ShowLoading();
	_togglerState = 1;
	
	Sys.WebForms.PageRequestManager.getInstance()._doPostBack(_togglerCurrentEventTarget, '');
}

function AnimateThenPostBack() {
	ShowLoading();
	_togglerState = 2;
	$('#' + _togglerCurrentID + ' .toggle-content').slideToggle(_animationDuration, OnAnimateThenPostBackAnimationCompleted);
}

function FadeOutThenPostBack() {
	ShowLoading();
	_togglerState = 3;
		
	DimContent(true, OnFadeOutThenPostBackFadeOutCompleted);
}

function OnAnimateThenPostBackAnimationCompleted() {
	Sys.WebForms.PageRequestManager.getInstance()._doPostBack(_togglerCurrentEventTarget, '');
}

function OnPostBackThenAnimatePostBackCompleted() {
	$('#' + _togglerCurrentID + ' .toggle-content').slideToggle(_animationDuration, OnPostBackThenAnimateAnimationCompleted);
}

function OnPostBackThenAnimateAnimationCompleted() {
	HideLoading();
	_togglerIsProcessing = false;
}

function OnFadeOutThenPostBackFadeOutCompleted() {
	Sys.WebForms.PageRequestManager.getInstance()._doPostBack(_togglerCurrentEventTarget, '');
}

function OnFadeOutThenPostBackPostBackCompleted() {
	DimContent(false, null);
	_togglerIsProcessing = false;
}

function OnEndRequest() {
	if (_togglerIsProcessing) {
		switch (_togglerState) {
			case 1:
				OnPostBackThenAnimatePostBackCompleted();
				break;

			case 2:
				HideLoading();
				_togglerIsProcessing = false;
				break;

			case 3:
				HideLoading();
				OnFadeOutThenPostBackPostBackCompleted();
				break;
		}
	}
}

function AutoSelect(buttonId) {
}

//function OnTogglerClick(thisID, target) {
//	if (!_togglerIsProcessing) {
//		var control = $('#' + thisID);
//		_togglerIsProcessing = true;
//		_togglerCurrentEventTarget = target;

//		control.parent().parent().find('.toggle-content').slideToggle(250, OnEndToggle);

//		if (control.hasClass('expand')) {
//			control.removeClass('expand');
//			control.addClass('collapse');
//		}
//		else {
//			control.removeClass('collapse');
//			control.addClass('expand');
//		}
//	}
//}

//function OnEndToggle() {
//	Sys.WebForms.PageRequestManager.getInstance()._doPostBack(_togglerCurrentEventTarget, '');
//}

//function OnEndRequest() {
//	if (_togglerIsProcessing) {
//		_togglerIsProcessing = false;
//	}
//}

$(function() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(OnEndRequest); });