// JavaScript Document

function SliderLoad () {
	$("slider").select("a").invoke("observe", "click", SliderClick);
}

function SliderClick (event) {
	var src = this;
	
	var slides, current, direction;
	
	slides = src.up("tr").select("div");
	direction = src.hasClassName("left") ? "left" : "right";

	slides.any( function (e, index) {
		if (e.visible()) {
			current = index;
			return true;
		}
	});
	
	slides[current].hide();
	if (current == 0 && direction == "left") {
		current = slides.size() - 1;
	} else if (current == slides.size() - 1 && direction == "right") {
		current = 0;
	} else if (src.hasClassName("left")) {
		current--;
	} else if (src.hasClassName("right")) {
		current++;
	}
	slides[current].show();
}

function MenuTopLoad () {
	var list = $("header-menu-top").select("a");
	list.invoke("observe", "click", MenuTopClick);
	list.invoke("observe", "mouseover", MenuTopOver);
	list.invoke("observe", "mouseout", MenuTopOut);
}

function MenuTopClick (event) {
	var src = this, currentmenu, targetmenu, currentnode, targetnode;
	
	currentmenu = $("header-menu-bottom").down("div.current");
	if (currentmenu) {
		currentnode = $w(currentmenu.className).find( function (e) {
			return e.indexOf("node") == 0;
		});
	}
	targetnode = $w(src.className).find( function (e) {
		return e.indexOf("node") == 0;
	});
	if (currentnode != targetnode) {
		targetmenu = $("header-menu-bottom").down("div." + targetnode);
		if (currentnode) {
			src.adjacent("a." + currentnode).first().removeClassName("current");
		}
		src.addClassName("current");
		if (currentmenu) {
			currentmenu.hide().removeClassName("current");
		}
		targetmenu.show().addClassName("current");
	}
}

function MenuTopOver (event) {
	var src = this;
	if (!src.hasClassName("current")) {
		src.addClassName("hilite");
	}
}

function MenuTopOut (event) {
	var src = this, list;
	list = this.adjacent("a");
	list.push(this);
	list.invoke("removeClassName", "hilite");
}

function MenuBottomLoad () {
	var container, a, next;
	container = $("header-menu-bottom");
	container.childElements().each( function (e) {
		var klass = $w(e.className);
		
		if (klass.any( function (ee) { return ee.indexOf("node") == 0; }) && klass.indexOf("current") == -1) {
			e.hide();
		}
	});
	a = container.down("a.current");
	if (a && (next = a.next())/* && !next.hasClassName("right") */) {
		next.addClassName("nexttocurrent");
	}
	if (a && a.hasClassName("left")) {
		a.addClassName("leftcurrent");
	}
}

function MenuDefaultBottomLoad () {
	var container, a, next;
	container = $("header-menu-bottom");
	container.childElements().each( function (e) {
		var klass = $w(e.className);
		if (klass.any( function (ee) { return ee.indexOf("node") == 0; })) {
			e.hide();
		}
	});
}

function MenuDefaultRightLoad () {
	var list;
	list = $("beta").select("a.item");
	list.invoke("observe", "click", MenuDefaultRightClick);
}

function MenuDefaultRightClick (event) {
	var src = this, currentdiv, targetdiv, currentnode, targetnode;
	
	currentdiv = $("alpha").down("div.item.current");
	if (currentdiv) {
		currentnode = $w(currentdiv.className).find( function (e) {
			return e.indexOf("node") == 0;
		});
	}
	targetnode = $w(src.className).find( function (e) {
		return e.indexOf("node") == 0;
	});
	if (currentnode != targetnode) {
		targetdiv = $("alpha").down("div.item." + targetnode);
		if (currentnode) { 
			src.adjacent("a." + currentnode).first().removeClassName("current");
		}
		src.addClassName("current");
		if (currentdiv) {
			currentdiv.hide().removeClassName("current");
		}
		targetdiv.show().addClassName("current");
	}
}

function FeedLoad () {
	var form = $("feedForm");
	form.select("[name='feedName']")
		.invoke("setValue", "Имя")
		.invoke("attach", "valRequired")
			.invoke("observe", "focus", function (event) {
				var src = this;
				if (src.getValue() == "Имя") {
					src.clear();
				}
			})
			.invoke("observe", "blur", function (event) {
				var src = this;
				if (Object.isBlank(src.getValue())) {
					src.setValue("Имя");
				}
			});
	form.select("[name='feedEMail']")
		.invoke("setValue", "EMail")
		.invoke("attach", "valRequired")
		.invoke("attach", "valEMail")
			.invoke("observe", "focus", function (event) {
				var src = this;
				if (src.getValue() == "EMail") {
					src.clear();
				}
			})
			.invoke("observe", "blur", function (event) {
				var src = this;
				if (Object.isBlank(src.getValue())) {
					src.setValue("EMail");
				}
			});
	form.select("[name='feedMessage']")
		.invoke("setValue", "Сообщение")
		.invoke("attach", "valRequired")
			.invoke("observe", "focus", function (event) {
				var src = this;
				if (src.getValue() == "Сообщение") {
					src.clear();
				}
			})
			.invoke("observe", "blur", function (event) {
				var src = this;
				if (Object.isBlank(src.getValue())) {
					src.setValue("Сообщение");
				}
			});
}

function JournalApplicationLoad () {
	var form = $("JournalForm");
	form.select("[name='feedName']").invoke("attach", "valRequired");
	form.select("[name='feedPerson']").invoke("attach", "valRequired");
	form.select("[name='feedPhone']").invoke("attach", "valRequired");
	form.select("[name='feedEMail']").invoke("attach", "valRequired").invoke("attach", "valEMail");
}

function JournalSendLoad () {
	var form = $("JournalForm");
	form.select("[name='feedName']").invoke("attach", "valRequired");
	form.select("[name='feedPerson']").invoke("attach", "valRequired");
	form.select("[name='feedAdd']").invoke("attach", "valRequired");
}

function JournalSubscribeLoad () {
	var form = $("JournalForm");
	form.select("[name='feedName']").invoke("attach", "valRequired");
	form.select("[name='feedEMail']").invoke("attach", "valRequired").invoke("attach", "valEMail");
	form.select("[name='feedAddress']").invoke("attach", "valRequired");
	form.select("[name='feedPhone']").invoke("attach", "valRequired");
}

function JournalPollLoad () {
	var forms = $$("form.journalpoll");
	forms.each( function (e) {
		e.select("[name='feedPoll']").invoke("attach", "valRequired");
	});
}

function VacancyLoad () {
	var form = $("VacancyForm");
	form.select("[name='postID']").invoke("attach", "valRequired");
	form.select("[name='feedPerson']").invoke("attach", "valRequired");
	form.select("[name='feedPhone']").invoke("attach", "valRequired");
	form.select("[name='feedEMail']").invoke("attach", "valRequired").invoke("attach", "valEMail");
	form.select("[name='feedCV']").invoke("attach", "valRequired");
}

function RankingLoad () {
	var list = $$(".ranking");
	list.each( function (e) {
		e.insert({top: e.down("a").hasClassName("js") ? "&nbsp;" : "&nbsp;&middot;&nbsp;"});
		e.insert({top: 
			"<a href='javascript://' class='ranker up js' title='Щелчок для перемещения, Ctrl+щелчок для перемещения в начало.'>&#8593;</a>" + 
			"&nbsp;" + 
			"<a href='javascript://' class='ranker down js' title='Щелчок для перемещения, Ctrl+щелчок для перемещения в конец.'>&#8595;</a>"
		});
		e.select("a.ranker").invoke("observe", "click", RankingSort);
	});
}

function RankingSort (event) {
	var src = this;
	
	var direction, top, tgt, flag = false, idlist = [], ranklist = [], srcid, tgtid, srcrank, tgtrank, count;
	
	var swap = function () {
		srcid = src.className.match(/id_(\d+)/)[1]; srcrank = src.className.match(/rank_(\d+)/)[1];
		tgtid = tgt.className.match(/id_(\d+)/)[1]; tgtrank = tgt.className.match(/rank_(\d+)/)[1];
		idlist.push(srcid); ranklist.push(tgtrank);
		idlist.push(tgtid); ranklist.push(srcrank);
		src.className = src.className.replace(/(rank_)(\d+)/, "$1" + tgtrank);
		tgt.className = tgt.className.replace(/(rank_)(\d+)/, "$1" + srcrank);
	};
	
	if (src.hasClassName("up")) {
		direction = "up";
	} else if (src.hasClassName("down")) {
		direction = "down";
	}
	src = src.up(".ranking");
	top = src.className.match(/top_(\d+)/)[1];
	count = event.ctrlKey ? 999 : 1;
	
	if (direction == "up") {
		while ((tgt = src.previous(".ranking")) && count--) {
			flag = true;
			swap();
			tgt.insert({before: src});
		}
	} else if (direction == "down") {
		while ((tgt = src.next(".ranking")) && count--) {
			flag = true;
			swap();
			tgt.insert({after: src});
		}
	}

	if (flag) {
		new Ajax.Request(siteAJAX + "?ajax=ranking&top=" + top + "&idlist=" + idlist.join(",") + "&ranklist=" + ranklist.join(","), {
			// element: $("container"),
			method: "get"
		});
	}
}
