function delegate (target, method) {
	//var args = arguments.slice(2);
	return function () {
		method.apply(target);
	};
}

function initaccordion() {
	var divs = jQuery("#accordion div");
	var oDiv;
	divs.css({display:"block"});
	var maxHeight = 0;
	for (var i=0;i<divs.length;++i) {
		if (divs[i].offsetHeight > maxHeight) maxHeight = divs[i].offsetHeight;
		oDiv = $(divs[i]);
		oDiv.prev().click(delegate(oDiv, function() {open(this);}));
		oDiv.css({display:"block", overflow:"hidden"});
		oDiv.hide();
		oDiv.bShown = false;
	}
}


function open(oDiv) {
	var divs = jQuery("#accordion div");
	var oHeader;
	oHeader = oDiv.prev();
	if (oHeader.hasClass("selected")) {
		oDiv.toggle(1000);
		oHeader.removeClass("selected");
		return;
	}
	var needSleep = false;
	for (var i=0;i<divs.length;++i) {
		var oDiv2 = $(divs[i]);
		if (oDiv2 != oDiv) {
			oHeader = oDiv2.prev();
			if (oHeader.hasClass("selected")) {
				oDiv2.toggle(1000);

				oHeader.removeClass("selected");
				needSleep = true;
			}
		}
	}

	oDiv.toggle(1000);
	oHeader = oDiv.prev();
	oHeader.toggleClass("selected");

	if (needSleep) {
		var delay = function() { open2(oDiv); };
		setTimeout(delay, 1000);
	} else {
		open2(oDiv);
	}
}

function open2(oDiv) {
	scrollToElement(oDiv.prev());
}

function scrollToElement(oScrollTo) {
	jQuery('html,body').animate({scrollTop: oScrollTo.offset().top}, 1000);
}

jQuery(document).ready(initaccordion);

