/*
 * Действия при готовности DOM.
 */
$(function(){
	$('ul.centerslist li ul').hide();
	$('ul.centerslist .ec_control').click(function(){
		$('ul.centerslist ul').hide();
		$('ul.centerslist li').removeClass('active');
		$(this).parent().toggleClass('active').find('ul').toggle();
		changeDistr($(this).attr('title').split('|')[0], eval($(this).attr('title').split('|')[1]));
		return false;
	});
	$('ul.centerslist ul li a').click(function(){
		changeDistr($(this).attr('title'), 16);
		return false;
	});
	$('.offices dt a').click(function(){
		changeCenter($(this).attr('rel'));
		return false;
	});
	$('select[name=diss]').change(function(){
		changeDistr($(this).find('option:selected').attr('title').split('|')[0], eval($(this).find('option:selected').attr('title').split('|')[1]));
	});
	
	function replacePasswordFieldWithReal() {
		var newInput = $('<input name="password" type="password" />');
		
		newInput.blur(function() {
			if ($(this).val() == '') {
				replacePasswordFieldWithPlaceholder.apply(this);
			}
		});
		
		$(this).replaceWith(newInput);
		
		setTimeout(function() {
			newInput[0].focus();
		}, 10);
	}
	
	function replacePasswordFieldWithPlaceholder() {
		var newInput = $('<input name="password" type="text" value="пароль" />');
		
		newInput.focus(replacePasswordFieldWithReal);
		
		$(this).replaceWith(newInput);
	}
	
	replacePasswordFieldWithPlaceholder.apply($('div.enter input[name = "password"]')[0]);
	
	$('div.enter input[name = "password"]').focus(replacePasswordFieldWithReal);
	
});


/**
 * Функция предназначена для отладки. Shortcut console.log'a.
 * Записывает в консоль Firebug'a передаваемые в нее данные. 
 * 
 * @param {String} str - строка/массив для отображения в консоли
 */
function log(str) {
	window.console && window.console.log(str);
};

/*window_resize - begin*/
var d = document;
var winIE = (navigator.userAgent.indexOf("Opera")==-1 && (d.getElementById &&  d.documentElement.behaviorUrns))  ? true : false;

function bodySize(){
	if(winIE && d.documentElement.clientWidth) {
		sObj = d.getElementsByTagName("body")[0].style;
		sObj.width = (d.documentElement.clientWidth<998) ? "998px" : "100%";
	}
}

function init(){
	if(winIE) { bodySize(); }
	tableColorizer();
}

/**
 * Простая функция, которая добавляет класс "odd" нечетным строкам таблиц.
 * @author Errant
 * @date 20.11.07
 */

function tableColorizer(){
	var tables = document.getElementById('center').getElementsByTagName('table'); // получаем все таблицы
	for (i=0, ilen = tables.length; i<ilen; i++)
	{
		var trs = tables[i].getElementsByTagName('tr'); // получаем все строки
		if (trs[0].getElementsByTagName('th').length == 0) var ishasth = 1; // определяем, есть ли у таблицы заголовок. допускаем что все таблицы простые, с 1 строкой заголовков.
		for (j=0, jlen=trs.length; j<jlen; j++) 
		{
			if (ishasth == 1) 
			{
				if(j % 2 != 0)trs[j].className="odd"; // назначаем нужный класс, начиная с первой строки
			 }
			 else 
			 {
				if(j % 2 == 0)trs[j].className="odd"; // назначаем нужный класс, начиная со второй строки
			 }
		}
	}
}
 
onload = init;

if(winIE) { onresize = bodySize; }
/*window_resize - end*/

/*flash - begin*/
function insertFlash(width,height,path,bgcolor,align,id) {
	document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="'+width+'" height="'+height+'" id="'+id+'" align="middle">');
	document.write('<param name="allowScriptAccess" value="sameDomain" />');
	document.write('<param name="movie" value="'+path+'" />');
	document.write('<param name="quality" value="high" />');
	document.write('<param name="menu" value="false" />');
	document.write('<param name="wmode" value="transparent" />');
	document.write('<param name="bgcolor" value="'+bgcolor+'" />');
	document.write('<embed src="'+path+'" quality="high" wmode="transparent" bgcolor="'+bgcolor+'" width="'+width+'" height="'+height+'" name="'+id+'" align="middle" menu="false" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
	document.write('</object>');
}
/*flash - end*/


/* FormValidator 0.1 (c) errant@molinos.ru */

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	if (classElements.length==0){
		return false;
	} else {
		return classElements;
	}
}
		
function FormValidator(){
	var texts = getElementsByClass("req_text");
	var login = getElementsByClass("req_login");
	var pass = getElementsByClass("req_pass");
	var match = getElementsByClass("req_match");
	var emails = getElementsByClass("req_email");
	var selects = getElementsByClass("req_select");
	var radios = $('.radio');
        var checkgroup = $('.checkgroup');
		
	var reason="";
	var catched = false;
	
	var validator_msgs = document.getElementById("validator_msgs");
		
	for(i=0;i<texts.length;i++){
		if (texts[i].value.length == 0) {
			reason += "Вы не заполнили обязательное поле <strong>"+ texts[i].title+"</strong><br/>";
			catched = true;
		}
	}
	
	for(i=0;i<login.length;i++){
		var illegalChars = /\W/; 
		if (login[i].value.length == 0) {
			reason += "Вы не заполнили обязательное поле <strong>"+ login[i].title+"</strong><br/>";
			catched = true;
		}
	    if (illegalChars.test(login[i].value)) {
		    reason += "Поле <strong>"+ login[i].title+"</strong> содержит недопустимые символы. Допустимые символы: \"a-z\", \"A-Z\", \"1-0\", \"_\".<br/>";
			catched = true;
		}
	}
	
	for(i=0;i<pass.length;i++){
		var illegalChars = /\W/; 
		if (pass[i].value.length == 0) {
			reason += "Вы не заполнили обязательное поле <strong>"+ pass[i].title+"</strong><br/>";
			catched = true;
		}
	    if (illegalChars.test(pass[i].value)) {
		    reason += "Поле <strong>"+ pass[i].title+"</strong> содержит недопустимые символы. Допустимые символы: \"a-z\", \"A-Z\", \"1-0\", \"_\".<br/>";
			catched = true;
		}
	}

	if(match.length){
		if(match[0].value!=match[1].value){
			reason += "Значения полей <strong>"+match[0].title+"</strong> и <strong>"+match[1].title+"</strong> не совпадают.<br/>";
			catched = true;
		}
	}
	
	var emailFilter=/^.+@.+\..{2,3}$/;
	var illegalChars=/[\(\)\<\>\,\;\:\\\"\[\]]/;
	
	for(i=0;i<emails.length;i++){
		if (emails[i].value.length == 0) {
			reason += "Вы не заполнили обязательное поле <strong>"+ emails[i].title+"</strong><br/>";
			catched = true;
		}else {
		    if (!(emailFilter.test(emails[i].value))) { 
		       	reason += "Значение поля <strong>"+ emails[i].title+"</strong> не соответсвует формату адреса электронной почты.<br/>";
				catched = true;
		    }
			else {
	        	if (emails[i].value.match(illegalChars)) {
			       	reason += "В поле <strong>"+ emails[i].title+"</strong> введены недопустимые символы.<br/>";
					catched = true;
		       	}
		    }
		}
	}

	for(i=0;i<selects.length;i++){
		if (selects[i].selectedIndex == 0) {
			reason += "Вы не выбрали значение из списка <strong>"+ selects[i].title+"</strong><br/>";
			catched = true;
		}
	}
	for(i=0;i<radios.length;i++){
		if (radios[i]) {
                        var tmp = $('input[type=radio]:checked', radios[i]).val();
                       if (tmp == undefined) { 
			reason += "Вы не выбрали вариант из опций пункта <strong>"+ radios[i].title+"</strong> анкеты<br/>";
			catched = true;
                       }
		}
	}
	for(i=0;i<checkgroup.length;i++){
		if (checkgroup[i]) {
                        var tmp2 = $('input[type=checkbox]:checked', checkgroup[i]).val();
                       if (tmp2 == undefined) { 
			reason += "Вы не выбрали вариант из опций пункта <strong>"+ checkgroup[i].title+"</strong> анкеты<br/>";
			catched = true;
                       }
		}
	}
		
	/* вывод предупреждений */
	
	if (catched == true){
		validator_msgs.innerHTML="<p>В заполнении формы обнаружены следующие ошибки:</p>"+"<p>"+reason+"</p><p>Пожалуйста, исправьте ошибки и отправьте форму еще раз.</p>";
	}
	
	return !catched;
}

function popImage (imageURL, caption) {

  var windowTop = 100;                // Top position of popup
  var windowLeft = 100                // Left position of popup
  var defaultWidth = 550;             // Default width (for browsers that cannot resize)
  var defaultHeight = 400;            // Default height (for browsers that cannot resize)
  var onLoseFocusExit = true;         // Set if window to exit when it loses focus
  var undefined;

  var Options = "width=" + defaultWidth + ",height=" + defaultHeight + ",top=" + windowTop + ",left=" + windowLeft + ",resizable"
  
  var myScript = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" +
    "<html>\n" + 
    "<head>\n" + 
    "<title>" + caption + "\</title>\n" +
    "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n" +
    "<meta http-equiv=\"Content-Language\" content=\"en-gb\">\n" +
    "<script language=\"JavaScript\" type=\"text/javascript\">\n" +
    "function resizewindow () {\n" +
    "  var width = document.myimage.width;\n" + 
    "  var height = document.myimage.height;\n";
  
  if (navigator.appName.indexOf("Netscape") != -1) { 
    myScript = myScript +  "  window.innerHeight = height;\n  window.innerWidth = width;\n"
  }

  else if (navigator.appName.indexOf("Opera") != -1) {
    myScript = myScript +  "  window.resizeTo (width+12, height+31);\n"
  }
  
  else if (navigator.appName.indexOf("Microsoft") != -1) { 
    myScript = myScript + "  window.resizeTo (width+12, height+31);\n" 
  }
  
  else {
    myScript = myScript + "  window.resizeTo (width+14, height+34);\n"
  }
      
  myScript = myScript + "}\n" + "window.onload = resizewindow;\n" +
    "</script>\n</head>\n" + "<body ";
    
  if (onLoseFocusExit) {myScript = myScript + "onblur=\"self.close()\" ";}
    
  myScript = myScript + "style=\"margin: 0px; padding: 0px;\">\n" +
    "<img src=\"" + imageURL + "\" alt=\"" + caption + "\" title=\"" + caption + "\" name=\"myimage\">\n" + 
    "</body>\n" +  "</html>\n";
        
  var imageWindow = window.open ("","imageWin",Options);
  imageWindow.document.write (myScript);
  imageWindow.document.close ();
  if (window.focus) imageWindow.focus();
}

