// $Id$
// --------- News images functions -------------

var ImagesSmall = new Array();
var ImagesBig = new Array();
var ImagesId = new Array();
var Alts = new Array();
var Titles = new Array();
var CurImage = new Array();
var img = new Array();
var IconOn = new Image();
var IconOff = new Image();
var site_title = "yuga";
var defaultFormValues = new Object();
var formNames = new Array('login', 'password', 'query');
var formsProcessed = false;


function Preload () {
	IconOn.src  = 'http://img.yuga.ru/media/icon_image_on.gif';
	IconOff.src = 'http://img.yuga.ru/media/icon_image.gif';

	for (var key = 0; key < ImagesSmall.length; key++) {
		if (!ImagesSmall[key]) continue;

		if (document.images['icon_' + key + '_0']) document.images['icon_' + key + '_0'].src = IconOn.src;

		img[key] = new Array();

		for (j = 0; j < ImagesSmall[key].length; j++) {
			img[key][j] = new Image;
			img[key][j].src = ImagesSmall[key][j];
		}
	}

	initAntispam();
}


function initAntispam () {
	// чтобы по нажатию "назад" перезапускались скрипты
	history.navigationMode = 'compatible';

	if (window.Prototype) {
		var loadProgressImage = new Element('img', {
			src : 'http://img.yuga.ru/icon_loading.gif'
		});

		$$('input[name="ticket"]').each(function (input) {
			var token = input.id.match(/^input_(.+)/);
			if (!token) return true;
			token = token[1];

			var image = $('image_' + token);
			if (!image) return true;

			var loadProgress = new Element('div', { id : 'loading_' + token });
			loadProgress.update(loadProgressImage);
			image.up().insert({ top : loadProgress });

			loadProgress.absolutize();
			loadProgress.clonePosition(image, { setHeight : false, setWidth : false });
			image.setOpacity(0.05);

			new Ajax.Request('/cgi-bin/kernel.cgi', {
				method : 'get',

				parameters : {
					ticket : input.value,
					module : 'antispam',
					act    : 'image_ajax',
					rnd    : Math.random()
				},

				onSuccess : function (r) {
					if (!r.responseJSON) {
						alert();
						return false;
					}

					var ticket     = r.responseJSON.ticket;
					var ticket_old = r.responseJSON.ticket_old;
					var path       = r.responseJSON.path;

					if (image.src.indexOf(ticket) == -1) {
						image.observe('load', function () {
							this.setOpacity(1);
							loadProgress.remove();
							this.stopObserving('load');

							return true;
						});

						image.src = path;
					} else {
						image.setOpacity(1);
						loadProgress.remove();
					}

					input.value = ticket;

					return true;
				},

				onFailure : function () {
					image.setOpacity(1);
					loadProgress.remove();

					return true;
				}
			});
		});
	} else if (window.jQuery) {
		jQuery('input[name="ticket"]').each(function (idx, input) {
			var token = input.id.match(/^input_(.+)/);
			if (!token) return true;
			token = token[1];

			var image = jQuery('#image_' + token);
			if (!image) return true;

			var loadProgress = jQuery('<div id="loading_' + token + '" style="padding: 5px 0 0 20px"><img src="http://img.yuga.ru/icon_loading.gif"/></div>');
			loadProgress.insertBefore(image);

			// .absolutize()
			loadProgress.each(function() {
				var element = jQuery(this);
				if (element.css('position') == 'absolute') return element;

				var offsets = element.offset();
				var top = offsets.top;
				var left = offsets.left;
				var width = element[0].clientWidth;
				var height = element[0].clientHeight;

				element._originalLeft = left - parseFloat(element.css("left") || 0);
				element._originalTop = top - parseFloat(element.css("top") || 0);
				element._originalWidth = element.css("width");
				element._originalHeight = element.css("height");

				element.css("position", "absolute");
				element.css("top", top + 'px');
				element.css("left", left + 'px');
				element.css("width", width + 'px');
				element.css("height", height + 'px');
				//return element;
			});

			image.fadeTo('fast', 0.05);

			jQuery.ajax({
				url: '/cgi-bin/kernel.cgi',
				method : 'get',

				data : {
					ticket : input.value,
					module : 'antispam',
					act    : 'image_ajax',
					rnd    : Math.random()
				},

				success : function (r) {
					if (!r.ticket) {
						alert();
						return false;
					}

					if (image.attr('src').indexOf(r.ticket) == -1) {
						image.one('load', function () {
							image.fadeTo('fast', 1);
							loadProgress.remove();

							return true;
						});

						image.attr('src', r.path);
					} else {
						image.fadeTo('fast', 1);
						loadProgress.remove();
					}

					input.value = r.ticket;

					return true;
				},

				error : function () {
					image.fadeTo('fast', 1);
					loadProgress.remove();

					return true;
				}
			});
		});
	}

	return true;
}


function ShowImage(parent, index, domain, local_templates) {
	ShowImage2(parent, index, ImagesId[index][CurImage[index]]+'', domain, local_templates);
}


function ShowImage2(parent, id, mediaid, domain, local_templates) {
	if (mediaid) mediaid = '&mediaid=' + mediaid;
	if (domain) {
		if (domain == document.location.hostname) {
			domain = '';
		} else {
			domain  = '&domain=' + domain;
		}
	} else {
		domain = '';
	}
	if (local_templates) local_templates = '&local_templates=' + local_templates
	else local_templates = '';

	var extendid = '';
	var arr = id.toString().split(':');
	id = arr[0];
	if (arr[1]) {
		extendid = '&extendid=' + arr[1];
	}

	var link = '/cgi-bin/kernel.cgi?module=media&act=show&parent=' + parent + '&id=' + id + extendid + mediaid + domain + local_templates;
	var hnd = window.open(link, '', 'resizable=yes,menubar=no,status=no,scrollbars=no,statusbar=no,toolbar=no,width=500,height=550');
	hnd.id = id;

	return false;
}


function ShowImage3(id){
	var current = CurImage[id] || 0;
	var src = ImagesBig[id][current];
	if(!Alts[id]) Alts[id] = new Array();
	if(!ImagesBig[id] || !src) return true;
	var title = ShowImage3.arguments[1] || Alts[id][current] || '';
	while(title.indexOf('"') >= 0) {
		title = title.replace('"', '&quot;');
	}
	var multiple = (ImagesBig[id].length > 1);
	var first = (current == 0);
	var last = (current == ImagesBig[id].length-1);
	var hnd = window.open('', 'photo', 'resizable=yes,menubar=no,status=no,scrollbars=yes,statusbar=no,toolbar=no,width=500,height=550');
	hnd.document.write('' +
		'<html>\n<head>\n<title>' +
		(title ? title+' - ' : '')+
		top.site_title+
		'</title>\n<link rel="stylesheet" type="text/css" media="screen" href="http://css.yuga.ru/screen.css" />\n</head>\n<body class="media_show">\n'+
		'<table align="center"><td class="l1"><table class="l2"><td class="l3">' +
	'');

	var head = hnd.document.getElementsByTagName("HEAD")[0];
	if (head) {
		var script  = hnd.document.createElement("SCRIPT");
		script.type = "text/javascript";
		script.src  = 'http://js.yuga.ru/script.js';
		script.charset = 'windows-1251';
		head.appendChild(script);
	} else {
		window.alert('Script append failed!');
	}

	hnd.imgSwap = window.imgSwap;
	hnd.document.resize = function(){
		var obj = hnd.document.getElementById('media_photo');
		if(!obj) alert('resize failed');
		hnd.resizeTo (obj.width+90, hnd.document.body.scrollHeight + 60);
		if(obj = hnd.document.getElementById('status')) obj.innerHTML = '';
	}

	hnd.document.write(''+
		'<div class="l4"><img id="media_photo" onload="try { resize() } catch (e) {}" src="'+src+'"'+(title?' alt="'+title+'"':'')+'></div>'+
		(title?'<table class="caption"><td class="inner" id="caption">'+title+'</td></table>\n':'')+
		(multiple?'<div class="links"><span onclick="imgSwap(0, ' + id + ')" title="Previous" id="prevlink"'+(first?' style="visibility: hidden"':'')+'><img src="http://img.yuga.ru/media/media_prev.gif"> предыдущее</span><span class="middle" onClick="javascript:window.close();">закрыть</span><span onclick="imgSwap(1, ' + id + ')" title="Next" id="nextlink"'+(last?' style="visibility: hidden"':'')+'>следующее <img src="http://img.yuga.ru/media/media_next.gif"></span></div>\n':'')+
		'</td></table></td></table>'+
		'\n</body>\n</html>'+
	'');

	hnd.id = id;
	hnd.title = title;
	hnd.document.close();
	hnd.focus();
	window.POPUP_HND = hnd;
	return false;
}


function OpenWindow(url, width, height){
	window.open(url,'','resizable=yes,menubar=no,status=no,scrollbars=no,statusbar=no,toolbar=no,width='+width+',height='+height);
	return false;
}


function Splash(i, j) {
	var obj = document.images['icon_' + i + '_' + CurImage[i]];
	if (obj) obj.src = IconOff.src;

	if (document.images['item'+i]) {
		if(img[i]) {
			document.images['item' + i].src = img[i][j].src
			document.images['item' + i].width = img[i][j].width;
			document.images['item' + i].height = img[i][j].height;
		} else if (ImagesSmall[i] && ImagesSmall[i][j]) {
			document.images['item' + i].src = ImagesSmall[i][j];
		}

		if (Alts[i] && Alts[i][j]) document.images['item' + i].alt = Alts[i][j];
	}

	CurImage[i] = j;

	obj = document.images['icon_' + i + '_' + j];
	if (obj) obj.src = IconOn.src
}


function flip (blockid) {
	var obj = document.getElementsByTagName('UL');
	for (var i in obj) {
		if(!obj[i].id || obj[i].id.indexOf('block') == -1) continue;
		obj[i].style.display = obj[i].id == blockid ? 'block':'none';
	}
}


function resize () {
	var obj = document.getElementById('media_photo') || document.body;
	window.resizeTo (obj.width+90, window.document.body.scrollHeight + 60);
	if(obj = document.getElementById('status')) obj.innerHTML = '';
}


function imgSwap (nextImage) {
	var obj, imgArray, pos, next, prev, last_img, first_img, cur_title;
	var id = window.id || window.imgSwap.arguments[1];
	var opn = window.opener || window.document.parentWindow;
	var doc = (opn.POPUP_HND || window).document;
	if (opn && opn.ImagesBig && (imgArray = opn.ImagesBig[id]) && (obj = doc.getElementById('media_photo'))){
		var docbody = doc.body || doc.documentElement;
		if (!obj.onload) obj.onload = resize;
		if (docbody.onload) docbody.onload = null;

		pos = arrayPos(imgArray, obj.src);
		if (pos.curr == -1) {
			pos = arrayPos(imgArray, unescape(obj.src.replace(new RegExp('^'+doc.location.protocol+'//'+doc.location.hostname, 'i'), '')));
		}

		if (pos.curr == -1) return true;
		//next = doc.getElementById('nextlink');
		//prev = doc.getElementById('prevlink');
		if (nextImage) {
			first_img = pos.begin;
			last_img  = pos.end;
			next = doc.getElementById('nextlink');
			prev = doc.getElementById('prevlink');
			pos = pos.next;
		} else {
			first_img = pos.end;
			last_img  = pos.begin;
			next = doc.getElementById('prevlink');
			prev = doc.getElementById('nextlink');
			pos = pos.prev;
		}
		if (opn.Alts[id] && opn.Alts[id][pos]) cur_title = opn.Alts[id][pos];
		else if (doc.getElementById('caption')) cur_title = doc.getElementById('caption').innerHTML;
		else cur_title = window.title || '';

		if ((pos == last_img) && next) next.style.visibility = 'hidden';
		if (prev) prev.style.visibility = 'visible';
		obj.src = imgArray[pos] ? imgArray[pos] : imgArray[first_img];
		obj.alt = cur_title;
		obj.title = cur_title;
		if (!obj.complete && (obj = doc.getElementById('status'))) obj.innerHTML = 'Загрузка...';
		if (obj = doc.getElementById('caption')) obj.innerHTML = cur_title;
		return false;
	}
	return true;
}


function arrayPos(ary, str){
	var found = false;
	var first = true;
	var res = {
		end   : ary.length - 1,
		begin :  0,
		prev  : -1,
		curr  : -1,
		next  : -1
	};

	for (var i in ary) {
		if (first) {
			res.begin = parseInt(i);
			first = false;
		}

		if (found) {
			res.next = parseInt(i);
			break;
		}

		if (ary[i] == str) {
			res.curr = parseInt(i);
			found = true;
		}

		if (!found) {
			res.prev = parseInt(i);
		}

	}
	return res;
}


function check_children(name, state) {
	var elements = document.getElementsByTagName('input');

	if (/where_domain_\d+/.test(name)) {
		var count = 0;

		for (i = 0; i < elements.length; i++) {
			if (elements[i].className.match(name)) {
				elements[i].checked = state;
				document.getElementById('title_' + elements[i].id).style.fontWeight = state ? 'bold' : 'normal';
				count++;
			}
		}

		check_parent('where_portal', 'parent_where_portal', count);
	} else {
		for (i = 0; i < elements.length; i++) {
			if (elements[i].className.match(name)) {
				elements[i].checked = state;
				document.getElementById('title_' + elements[i].id).style.fontWeight = state ? 'bold' : 'normal';
			}
		}
	}
}


function check_parent(name, parent, count) {
	var inputs = document.getElementsByTagName('input');
	var parent = document.getElementById(parent);
	var length = inputs.length;
	var elements = 0;
	var checked = 0;

	if (/where_portal/.test(name)) {
		for (i = 0; i < inputs.length; i++) {
			if (inputs[i].className.match(name)) {
				elements++;

				if (inputs[i].checked) {
					checked++;
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'bold';
				} else {
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'normal';
				}
			}
		}

		if (checked == elements - 1 && !parent.checked) {
			parent.checked = true;
			document.getElementById('title_' + parent.id).style.fontWeight = 'bold';
		} else if (checked == elements - count && parent.checked) {
			parent.checked = false;
			document.getElementById('title_' + parent.id).style.fontWeight = 'normal';
		}
	} else if (/where_domain_\d+/.test(name)) {
		for (i = 0; i < inputs.length; i++) {
			if (inputs[i].className.match(name)) {
				elements++;

				if (inputs[i].checked) {
					checked++;
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'bold';
				} else {
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'normal';
				}
			}
		}

		if (checked == elements - 1 && !parent.checked) {
			parent.checked = true;
			document.getElementById('title_' + parent.id).style.fontWeight = 'bold';
		} else if (checked == elements - 1 && parent.checked) {
			var portal = document.getElementById('parent_where_portal');
			parent.checked = false;
			portal.checked = false;
			document.getElementById('title_' + parent.id).style.fontWeight = 'normal';
		}

		check_parent('where_portal', 'parent_where_portal', elements);
	} else {
		for (i = 0; i < length; i++) {
			if (inputs[i].className == name) {
				elements++;

				if (inputs[i].checked) {
					checked++;
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'bold';
				} else {
					document.getElementById('title_' + inputs[i].id).style.fontWeight = 'normal';
				}
			}
		}

		if (checked == elements - 1 && !parent.checked) {
			parent.checked = true;
			document.getElementById('title_' + parent.id).style.fontWeight = 'bold';
		} else if (checked == elements - 1 && parent.checked) {
			parent.checked = false;
			document.getElementById('title_' + parent.id).style.fontWeight = 'normal';
		}
	}
}


function CheckIt() {
	for (var i = 1; i < 5; i++) {
		document.getElementById('titlerb' + i).style.fontWeight = document.getElementById('rb' + i).checked ? 'bold' : 'normal';
	}
}


if (window.Prototype) {
	Event.observe(document, 'dom:loaded', function () { Preload() });
} else if (window.jQuery) {
	jQuery(document).ready(function () { Preload() });
} else {
	window.onload = Preload;
}

