// JavaScript Document
function getClientSize()
{
	var w, h;
    w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
    h = ($(document).height() ? $(document).height() : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight));
    return [w, h];
}

function getPageScroll() {
	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	return [xScroll, yScroll]; 
};


function getClientCenter(){
	var t, l;
	
	size = getClientSize();
	bodyScroll = getPageScroll();
	
	l = document.documentElement.clientWidth/2+bodyScroll[0];
	t = document.documentElement.clientHeight/2+bodyScroll[1];
	
	return [t, l];
}

function in_array(what, where) {
    var a=false;

    for(var i=0; i<where.length; i++) {
        if(what == where[i]) {
            a=true;
            break;
        }
    }
    return a;
}

/*
========= ФУНКЦИЯ ПРОВЕРКИ ПОЛЕЙ ФОРМЫ =========

fields - двумерный массив с id полей, назм поля, сообщением ошибки, типом и возможными значениями (если надо, иначе пустой "")
Пример:
var fields = [
	{
		id: "",
		name: "",
		message: "",
		type: "", (num | str)
		vals: "", [val1, va12]
		conf: [id, name]
	}
];
*/
function check_fields( fields ){
	var len = fields.length;
	
	if( len > 0 ){ // поля есть ли вообще для проверки?
		for(n = 0; n < len; n++){ // идем по полям			
			if( fields[n].type == 'num' ){ // если поле должно быть числом
				
				if( !$("#"+fields[n].id).val() || isNaN( $("#"+fields[n].id).val() ) || $("#"+fields[n].id).val() == 0 ){
					$("#"+fields[n].id).focus();
					alert(fields[n].message);
					return false;
				}
				
			}
			
			if( fields[n].type == 'str' ){ // если поле должно быть строкой
				
				if( !$("#"+fields[n].id).val() || $("#"+fields[n].id).val() == "" ){
					$("#"+fields[n].id).focus();
					alert(fields[n].message);
					return false;
				}
				
			}
			
			if( fields[n].type == 'checkgroup' ){ // если нужно выбрать хотябы 1 checkbox 
				var c = 0;
				$('input[name='+fields[n].id+']:checkbox').each(function(){
					if( this.checked == true ) c = 1;
				});
				if( c == 0 ){
					$('input[name='+fields[n].id+']:checkbox:first').focus();
					alert(fields[n].message);
					return false;
				}
			}
			
			var vals = fields[n].vals.length;
			
			if( vals ){
				if( !in_array( $("#"+fields[n].id).val(), fields[n].vals) ){
					$("#"+fields[n].id).focus();
					msg = "Не допустимое значение в поле \""+fields[n].name+"\"!\n\nВозможны следующие значения:\n";
					
					for(v = 0; v < vals; v++){
						msg += "\t-  "+fields[n].vals[v]+"\n";
					}
					
					alert(msg);
					
					return false;
				}
			}
			
			if( fields[n].conf.length ){
				if( $("#"+fields[n].id).val() != $("#"+fields[n].conf[0]).val() ){
					$("#"+fields[n].id).focus();

					alert("Значение в поле \""+fields[n].name+"\" должно соответствовать значению в поле \""+fields[n].conf[1]+"\"!");
					
					return false;
				}
			}
		}
	}
	
	return true;
}

/*=======================================================*/

/*============== ФУНКЦИИ ДЛЯ ПОСКАЗОК В ПОЛЯ ============*/
function InputHelperIn ( obj, text ){
	//если при фокусе значение поля равно значению подсказки, то чистим его и вешаем стили
	if ( $( obj ).attr("value") == text ){
	    $( obj )
	    .css ( { color: '#000', fontStyle: 'normal' } )
	    .val( '' );
	}
}
	
function InputHelperOut ( obj, text ){
    //если при потере фокуса значение поля равно пустоте или значению по умолчанию,
    //то пихаем в него текст подсказки и вешаем стили подсказки
	if ( $(obj).attr("value") == '' || $(obj).attr("value") == text || !$(obj).attr("value") ){
	    $(obj)
        .css ( { color: '#b3b3b3', fontStyle: 'italic' } )
        .val( text );
	}
}
	
function InputHelperCreate ( obj, text ){ 
    //вешаем на поле эвенты. На фокус и потерю фокуса.
	obj
	.bind ( 'focus', function () { InputHelperIn ( this, text ); } )
	.bind ( 'blur', function () { InputHelperOut ( this, text ); } );

	//первоначальный инит
	InputHelperOut ( obj, text );
}

/*=======================================================*/

function email_link(name, domain, end, alias){
	email = '<a href="mailto:' + name + '&#64;' + domain + '.'+ end +'">';
	email += (alias ? alias : name + '&#64;' + domain + '.'+ end);
	email += '</a>';
	document.write(email);
}

function email_link2(name, domain, end){
	email = '<a href="mailto:' + name + '&#64;' + domain + '.'+ end +'">';
	document.write(email);
}

function email_link3(name, domain, end){
	email = name + '&#64;' + domain + '.'+ end;
	document.write(email);
}
