var pic1 = new Image();
pic1.src="/pic/flying_frame.png";

var pic2 = new Image();
pic2.src="/pic/close.gif";


var ow_insert_data = '<h2>Разделы сайта iXBT.com</h2><ul class="popup_tree"><li><h3><a href="http://www.ixbt.com/news/all/index.shtml">Новости</a></h3> <span>hardware, software, новости IT-рынка.</span></li><li><h3><a href="http://www.ixbt.com/3dv">3D-Видео, тюнеры и LCD</a></h3> <span>видеокарты, системы охлаждения VGA, TV-тюнеры, мониторы, устройства видеозахвата.</span></li><li><h3><a href="http://www.ixbt.com/medium">iT-Среда</a></h3> <span>ежемесячные iТоги, репортажи с крупнейших выставок и конференций, награды редакции, iXBT.com Brand of the Year, интервью, аналитика, локальные анонсы продуктов и технологий, ИТ в малом и среднем бизнесе.</span></li><li><h3><a href="http://www.ixbt.com/maclife">MacLife</a></h3> <span>самое интересное о мире под знаком Apple.</span></li><li><h3><a href="http://www.ixbt.com/md">Мобильные устройства</a></h3> <span>телефоны, смартфоны и ПО для них, гарнитуры, электронные книги, GPS-навигаторы, КПК и коммуникаторы.</span></li><li><h3><a href="http://www.ixbt.com/mobilepc">Ноутбуки</a></h3> <span>ноутбуки, нетбуки и планшетные ПК.</span></li></ul><ul class="popup_tree"><li><h3><a href="http://www.ixbt.com/data">Носители информации</a></h3> <span>жёсткие диски, внешние накопители на ЖД, флеш-память, оптические приводы и другие накопители.</span></li><li><h3><a href="http://www.ixbt.com/platform">Платформа ПК</a></h3> <span>процессоры, системы охлаждения, barebone-системы, чипсеты для системных плат, персональные компьютеры, системные платы, системная память, корпуса, блоки питания, электропитание.</span></li><li><h3><a href="http://www.ixbt.com/sw">Приложения и утилиты</a></h3> <span>обзоры приложений, работа с 3D-графикой, OpenSource, ОС MS Vista, OS MS Windows, *nix-like OS.</span></li><li><h3><a href="http://www.ixbt.com/printers">Принтеры и периферия</a></h3> <span>принтеры и МФУ, расходные материалы, мыши и клавиатуры, пульты ДУ, графические планшеты и игровые устройства.</span></li><li><h3><a href="http://www.ixbt.com/pa">ProAudio</a></h3> <span>звуковые карты и интерфейсы, студийные мониторы, наушники, MIDI-клавиатуры и специальное ПО.</span></li></ul><ul class="popup_tree"><li><h3><a href="http://www.ixbt.com/projector">Проекторы и ТВ</a></h3> <span>проекторы, HDD-плееры, телевизоры и DVD-плееры.</span></li><li><h3><a href="http://www.ixbt.com/nw">Сети и серверы</a></h3> <span>беспроводное и ADSL-оборудование, маршрутизаторы, терминалы, сети по электропроводке и KVM-переключатели.</span></li><li><h3><a href="http://www.ixbt.com/ds">Цифровой звук</a></h3> <span>звуковые карты, стереоколонки, наушники, цифровые плееры и фоторамки.</span></li><li><h3><a href="http://www.ixbt.com/dv">Цифровое видео</a></h3> <span>видеокамеры, оборудование для видеомонтажа, программы для обработки видео, видеонаблюдение.</span></li><li><h3><a href="http://www.ixbt.com/dp">Цифровое фото</a></h3> <span>изображение в числах, обзоры фотокамер, объективов и сканеров.</span></li></ul>';

var ow_content = '<div class="d-shadow" id="status_window"><div class="d-shadow-wrap"><a id="status_window_closer" href="javascript:void(0)" title="Закрыть" onclick="closeSW()"></a><div id="status_window_content">'+ow_insert_data+'</div><div class="d-sh-cn d-sh-tl"></div><div class="d-sh-cn d-sh-tr"></div></div><div class="d-sh-cn d-sh-bl"></div><div class="d-sh-cn d-sh-br"></div></div>';


function getPos(){
	function sctop(){
		return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
	};
	
	function getClientHeight(){
	  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
	};
	
	var h = ($('#copy_to_blog').height())/2;
	var res = (sctop()+getClientHeight()/2)-h;
	return res;
};


function closeSW(){
	$('#status_window').animate({top: '-1000px'}, 500);
	//$('#status_window').hide();
};


function openSW(){
	$('#status_window').remove();
	$('body').prepend(ow_content);
	
	$('#status_window').show();

	$('#status_window').animate({top: '100px'}, 500);
	
};


function monitorClick(e){
	var evt = (e)?e:event;
	var theElem = (evt.srcElement)?evt.srcElement:evt.target;

	while(theElem != null){
		if(theElem.id == "opensw_im"){
			openSW();
			return true;
		};
		theElem = theElem.offsetParent;         
	};
	
	closeSW();
	return true;
};

document.onclick = monitorClick; 



	function DisplayCommentsNum(){
		var ids = new Array();
		var numIds = 0;
		$('.comments_num').each(function(){
			var o_id = $(this).attr('id');
			var res = res = o_id.match(/^spubid:(.*)$/);

			if(res != null){
				ids.push(res[1]);
				numIds++;
			}
		});
		if(numIds > 0){
			var sIds = ids.join(';');
			$.ajax({
				url: "/cgi/news_comments/comments.pl",
				cache: false,
				type: "POST",
				data: {option: 'news', sub_option: 'comments_num', ids: sIds},
				success: function(xml, stat, xhr){
					if(xmlValidate(xhr.responseText)){
						var c_nums = $('c_nums', xml);
						$('c_num', c_nums).each(function(){
							if($(this).attr('id')){
								var nid = $(this).attr('id');
								nid = nid.replace(/\//g, '\\/');
								var cuid = $('span#spubid\\:'+ nid);
								var cuid_p = $(cuid).parent();
								$(cuid).html(' '+$(this).text()+' ');
								if($(cuid_p).hasClass('nl_comments') && $(this).text() == '0'){
									$(cuid_p).removeClass('nl_comments').addClass('nl_unactive_comments');
								}
								
							}
						});
					}
				}
			});
		}
	}
	
	
$(document).ready(function(){	
	DisplayCommentsNum();
});

function xmlValidate(data){
//  	alert(data);
	var my_oXmlValidator = new oXmlValidator.Object(data);
	var ret = my_oXmlValidator.valid();
// 	alert(ret);
	return ret;
}


var oXmlValidator = {
	oTab: new RegExp(/[\n\t\r]+/g),
	oCommentAndCdata: new RegExp(/<!(?:--(?:[^-]|-[^-])*--|\[CDATA\[(?:[^\]]|\][^\]]|\]+[^\>\]])*]{2,})>/g), 
	oInstruction: new RegExp(/<\?.*?\?>/),
	oDocType: new RegExp(/<\!DocType.*?>/i),
	oOutTagTextBegin: new RegExp(/^\s*[^<\s]+/),
	oEntityFull: new RegExp(/&(?:#(?:x[a-f\d]{1,4}|\d{2,5})|[a-z][\w\-]*);/gi),
	oAttribute: new RegExp(/(<[a-z_][\w:-]*)(?:\s+[a-z_][\w:-]*\s*=\s*(?:'[^<>']*'|"[^<>"]*"))*\s*(\/?>)/gi),
	oSingleTag: new RegExp(/<[a-z_][\w:-]*\/>/gi),
	oDoubleTag: new RegExp(/<([a-zA-Z_][\w:-]*)>[^<]*<\/\1\s*>/g),	
	sMessage: new Array(
		'Все верно', // 0
		'Нет корневой ноды', // 1
		'Незакрытый комментарий', // 2
		'Незакрытый блок CDATA', // 3	
		'Неожиданный Instruction', // 4	
		'Неожиданный DocType', // 5	
		'Текст в начале строки выходит за пределы тега', // 6	
		'Текст в конце строки выходит за пределы тега', // 7
		'Неожиданная entity', // 8	
		'Больше одной корневой ноды или неожиданный тег', // 9	
		'Незакрытый тег') // 10	
};
oXmlValidator.Object = function(sValue){
	this.sValue = sValue;	
	this.nCode = 0;
	this.nBugPlace = 0;
	this.sMessage = oXmlValidator.sMessage[0];
	this.hParams = {
		bFragment: false // true - проверяемый код не целый xml, а только его часть
	}
};
oXmlValidator.Object.prototype = {
	valid: function(){
		var sValue = this.sValue;
		var nCode = this.nCode;
		var hParams = this.hParams;
		if ( sValue ){
			// вырезаем табуляцию и переносы строк     
			sValue = sValue.replace( oXmlValidator.oTab, ' ' );
			// вырезаем комменты и CDATA
			sValue = sValue.replace( oXmlValidator.oCommentAndCdata, '' );
			if ( sValue.indexOf( '<!--' ) != -1 ) {
				this.nCode = 2; 
				this.sMessage = oXmlValidator.sMessage[2];
				return false;
			}	
			if ( sValue.indexOf( ']]>' ) != -1 ) {
				this.nCode = 3; 
				this.sMessage = oXmlValidator.sMessage[3];
				return false;
			}
			// вырезаем инструкции
			if ( !hParams.bFragment ) 
				sValue = sValue.replace( oXmlValidator.oInstruction, '' );
				if ( sValue.search( oXmlValidator.oInstruction ) != -1 ) {
					this.nCode = 4; 
					this.sMessage = oXmlValidator.sMessage[4];
					return false;
				}
			// вырезаем DocType
			if ( !hParams.bFragment )
				sValue = sValue.replace( oXmlValidator.oDocType, '' );
			if ( sValue.search( oXmlValidator.oDocType ) != -1 ) {
				this.nCode = 5;
				this.sMessage = oXmlValidator.sMessage[5];
				return false;
			}
			// ищем текст в начале и в конце строки, выходящий за пределы тегов
			if ( !hParams.bFragment ) {
				if ( sValue.search( oXmlValidator.oOutTagTextBegin ) != -1 ) {
					this.nCode = 6;
					this.sMessage = oXmlValidator.sMessage[6];
					return false;
				}
				// конец строки.
				var nValueLength = sValue.length;
				var bIsSpace = true;
				do {
					nValueLength--;
					if ( sValue.charAt( nValueLength ) != ' ' ) bIsSpace = false;
				} while ( bIsSpace && nValueLength > 0 )
				if ( !bIsSpace && sValue.charAt( nValueLength ) != '>' ){
					this.nCode = 7;
					this.sMessage = oXmlValidator.sMessage[7];
					return false;
				}
				else if ( nValueLength == 0 ){
					this.nCode = 1;
					this.sMessage = oXmlValidator.sMessage[1];
					return false;
				}
			}
			// вырезаем Entities
			sValue = sValue.replace( oXmlValidator.oEntityFull, '' );
			if ( sValue.indexOf( '&' ) != -1 ){
				this.nCode = 8;
				this.sMessage = oXmlValidator.sMessage[8];
				return false;
			}
			// вырезаем аттрибуты
			sValue = sValue.replace( oXmlValidator.oAttribute, '$1$2' );
			// параметр для вырезания тэгов
			var sTagReplaceTo = '';
			if ( !hParams.bFragment ) sTagReplaceTo = '&';
			// вырезаем одинарные тэги
			sValue = sValue.replace( oXmlValidator.oSingleTag, sTagReplaceTo );
			// вырезаем двойные тэги 
			var nPrevLen; var nLen = 0;
			do {
				nPrevLen = nLen;
				sValue = sValue.replace( oXmlValidator.oDoubleTag, sTagReplaceTo );
				nLen = sValue.length;
			} while ( nLen != nPrevLen );
			if ( !hParams.bFragment ) {
				if ( sValue.indexOf(sTagReplaceTo) != sValue.lastIndexOf(sTagReplaceTo) ) {
					this.nCode = 9;
					this.sMessage = oXmlValidator.sMessage[9];
					return false;
				}
			}
			if( sValue.indexOf( '<' ) != -1 ){
				this.nCode = 10;
				this.sMessage = oXmlValidator.sMessage[10];
				return false;
			}
			this.nCode = 0;
			this.sMessage = oXmlValidator.sMessage[0];
			return true;
		} else { // пустая строка
			if ( !hParams.bFragment ){
				this.nCode = 1;
				this.sMessage = oXmlValidator.sMessage[1];
				return false;
			}
			else {
				this.nCode = 0;
				this.sMessage = oXmlValidator.sMessage[0];
				return true;
			}
		}
	}
};
