//*****************  get Element By Id
function get (el) {
	return document.getElementById(el);
}

function drop_spaces(str) {
    var newstr = trim(str);
    return newstr.replace(/(\s)+/g, ""); 
}

function trim(str) {
    var newstr = str.replace(/^\s*(.+?)\s*$/, "$1");
    if (newstr == " ") {
        return "";
    }
    return newstr;
}

//*****************  check email
function check_email (email) {
    var template = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z])+$/;
    if (template.test(email)) {
        return true;
    }
    return false; 
}

//*****************  check password
function check_password (password) {
    var template = /^[A-Za-z0-9]+$/;
    if (template.test(password)) {
        return true;
    }
    return false; 
}

//*****************  drop-down menu
function menuOver (id) {
	if (get(id)) {
		get(id).className = 'colored';
		get('a'+id).className = 'colored';
	}
}

//*****************  drop-down menu
function menuOut (id) {
	if (get(id)) {
		get(id).className = 'sub';
		get('a'+id).className = '';
	}
}

//*****************  get radio input value
function getRadioValue (radio_name) {
	var inputs = document.getElementsByName(radio_name);
	var selectedValue = -1;
	var input_len = inputs.length;
	for (var i = 0; i < input_len; i++) {
	    if (inputs[i].checked) {
	        selectedValue = inputs[i].value;
	        break;
	    }
	}
	if (selectedValue == -1)
		return false;
	else
		return selectedValue;
}

//*****************  voting
function voting (lang) {

	 var radio_value = getRadioValue ('vote');
	 if (radio_value) {
		 var hash = get('hash').value;
		 ajaxdisplay('inc/request.php?action=voiting&vote=' + radio_value + '&hash=' + hash, '', 'vote_result');
	 } else {
	 	if (lang == '')
			var text = 'Пожалуйста, выберите вариант ответа';
		else if (lang == '1')
			var text = 'Please, make your choice';
		get('vote_err').innerHTML = text;
	 }
	 return false;
}

//***************** show left menu
var t, lit, i;
    
function tree (liter) {         
    lit=liter;
    i=1;
    t = setInterval(show, 25);
}
      
function show () {
	var el;
    if (el = document.getElementById(lit + '_' + i)) {
		el.style.display = (el.style.display == 'block')?'none':'block';	
		i++;		
    } else {
		clearInterval(t);        
	}
}

function changeMenuImg (id) {
	if (get(id).className == 'minus') {
		get(id).src = 'img/plus.gif';
		get(id).className = 'plus';
	} else if (get(id).className == 'plus') {
		get(id).src = 'img/minus.gif';
		get(id).className = 'minus';
	}
}

//*****************  functions for check registration form
function checkForm(type) {

    var err = true;
    var error_class = 'form_error';
    var error_field = 'error_field';
	
    // search form
    if (type == 1) {
		if (drop_spaces(trim(get("keyword").value)) == '') {
            err = false;
        }
	}
	
	return err;
}

//***************** set cookie value
function setCookie(name, value, expires, path, domain, secure) {
//alert(name + '' + value):
	var curCookie = name + "=" + escape(value) +
    	((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "")
	/*	
    if ((name + "=" + escape(value)).length <= 4000)
        document.cookie = curCookie
	else
    	if (confirm("Cookie length value more than 4kb and will cut"))
	*/
    document.cookie = curCookie;
}

//***************** delete cookie value
function deleteCookie (name, path, domain) {
	if (readCookie(name)) {
		document.cookie =
		name +"=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain="+domain : "") +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT"
	}
}

//***************** read cookie value
function readCookie(name) {
	var xname = name + "=";
	var xlen = xname.length;
	var clen = document.cookie.length;
	var i = 0;
	while(i < clen){
	       var j = i + xlen
	       if (document.cookie.substring(i, j) == xname)
			return getCookieVal(j);
	       i = document.cookie.indexOf(" ",1) + 1;
	       if (i == 0)  break
	}
	return null;
}

//***************** get cookie value
function getCookieVal(n) {
	var endstr = document.cookie.indexOf(";", n)
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(n, endstr))
}

//***************** set cookie value
function writeCookie (name, value, expires, path, domain, secure) {
	document.cookie = 
	name +"=" + escape(value) +
	((expires) ? "; expires="  + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "")
}

//***************** set current language
function set_lang (lang) {
	var date = new Date();
	date.setTime(date.getTime()+(365*24*60*60*1000));
	if (lang == 'ru')
		setCookie ('uss_lang', '', date, '', '', '');
	else if (lang == 'en')
		setCookie ('uss_lang', '1', date, '', '', '');
	window.location.reload();
}

//***************** allow only numbers to be entered in a textbox
function isNumberKey(evt) {
	var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
    	return false;
	return true;
}

//***************** only *** digits are allowed
function check_digits (text, len) {
	if (text.length != len) {
		return false;
	} else {
		 var template = /^[0-9]+$/;
		if (template.test(text)) {
			return true;
		}
		return false; 
	}
}

//*****************  functions for check registration form
function checkForm(type) {

    var err = true;
    var error_class = 'form_error';
    var error_field = 'error_field';
    var error1 = '';
	var error2 = '';
	var error3 = '';
	
	// registration form
	if (type == 1) {
		if (drop_spaces(trim(get("name").value)) == '') {
            get("name").value = '';
            get("name").className = error_field;
            get("f_name").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		
		if (drop_spaces(trim(get("name").value)) == '') {
            get("name").value = '';
            get("name").className = error_field;
            get("f_name").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		if (drop_spaces(trim(get("address").value)) == '') {
            get("address").value = '';
            get("address").className = error_field;
            get("f_address").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		if (drop_spaces(trim(get("company").value)) == '') {
            get("company").value = '';
            get("company").className = error_field;
            get("f_company").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		if (drop_spaces(trim(get("phone").value)) == '') {
            get("phone").value = '';
            get("phone").className = error_field;
            get("f_phone").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		var inn = drop_spaces(trim(get("inn").value));
		var inn_len = inn.length;
		if (inn_len == 10 || inn_len == 12) {
			if (!check_digits (inn, inn_len)) {
				error2 += 'Неверный ИНН. ';
				get("inn").className = error_field;
	            get("f_inn").className = error_class;
				err = false;
			}
		} else {
			error2 += 'Неверный ИНН. ';
			get("inn").className = error_field;
	        get("f_inn").className = error_class;
			err = false;
		}
		
        var password = get("password").value;
        if (password == '') {
            get("password").value = '';
            get("password").className = error_field;
            get("f_password").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        } else {
            if (password.length < 6 || password.length > 12) {
                get("f_password").className = error_class;
                error2 += 'Пароль должен быть не меньше 6 и не более 12 символов. ';
                err = false;
            } else {
                if (!check_password (password)) {
                    err = false;
                    get("new_pass").className = error_field;
                    get("f_new_pass").className = error_class;
                    error2 += 'Пароль может содержать только латинские буквы и цифры. ';
                }
            }
        }
		
		var confirm_password = get("confirm_password").value;
        if (confirm_password == '') {
            get("confirm_password").value = '';
            get("confirm_password").className = error_field;
            get("f_confirm_password").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
        if (password != '' && confirm_password != '') {
			if (password != confirm_password) {
				get("confirm_password").className = error_field;
				get("f_confirm_password").className = error_class;
                error2 += 'Введено неверное подтверждение пароля. ';
                err = false;
			}
        }
		
		if (drop_spaces(trim(get("code").value)) == '') {
            get("code").value = '';
            get("code").className = error_field;
            get("f_code").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        } else {
			var code = drop_spaces(trim(get("code").value));
			if (!check_digits (code, '5')) {
				get("code").className = error_field;
	            get("f_code").className = error_class;
	            error2 += 'Проверьте правильность цифрового кода. ';
	            err = false;
			}
		}
		
        var email = get("email").value;
        if (!check_email(email)) {
            err = false;
            get("email").className = error_field;
            get("f_email").className = error_class;
            error2 += 'Неверный email. ';
            if (drop_spaces(trim(get("email").value)) == '') {
                get("email").value = '';
            }
		}
		
		if (!err) {
			get('result').innerHTML = '<span class="form_error">' + error1 + ' ' + error2 + '</span>';
		}
	}
	
	// forgot password form
	if (type == 2) {
		var email = get("forgot").value;
		if (drop_spaces(trim(get("forgot").value)) == '') {
        	get("forgot").value = '';
			get("forgot").className = error_field;
			get("forgot_result").className = error_class;
			err = false;
        } else {
	        if (!check_email(email)) {
	            err = false;
	            get("forgot").className = error_field;
	            get("forgot_result").className = error_class;
	            error1 = 'Неверный email. ';
	            if (drop_spaces(trim(get("forgot").value)) == '') {
	                get("forgot").value = '';
					get("forgot_result").className = error_class;
	            }
				get('forgot_result').innerHTML = '<span class="form_error">' + error1 + '</span>';
			}
		}
	}
	
	// profile
	if (type == 3) {
		if (drop_spaces(trim(get("user_address").value)) == '') {
			get("user_name").value = '';
	        get("user_name").className = error_field;
	        get("f_user_name").className = error_class;
	        error1 = 'Необходимо заполнить все поля, отмеченные *. ';
	        err = false;
		}
		if (drop_spaces(trim(get("user_address").value)) == '') {
            get("user_address").value = '';
            get("user_address").className = error_field;
            get("f_user_address").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		if (drop_spaces(trim(get("user_company").value)) == '') {
            get("user_company").value = '';
            get("user_company").className = error_field;
            get("f_user_company").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		if (drop_spaces(trim(get("user_phone").value)) == '') {
            get("user_phone").value = '';
            get("user_phone").className = error_field;
            get("f_user_phone").className = error_class;
            error1 = 'Необходимо заполнить все поля. ';
            err = false;
        }
		var inn = drop_spaces(trim(get("user_inn").value));
		var inn_len = inn.length;
		if (inn_len == 10 || inn_len == 12) {
			if (!check_digits (inn, inn_len)) {
				error2 += 'Неверный ИНН. ';
				get("user_inn").className = error_field;
	            get("f_user_inn").className = error_class;
				err = false;
			}
		} else {
			error2 += 'Неверный ИНН. ';
			get("user_inn").className = error_field;
	        get("f_user_inn").className = error_class;
			err = false;
		}
		
        var email = get("user_email").value;
        if (!check_email(email)) {
            err = false;
            get("user_email").className = error_field;
            get("f_user_email").className = error_class;
            error2 += 'Неверный email. ';
            if (drop_spaces(trim(get("user_email").value)) == '') {
                get("user_email").value = '';
            }
        }
		
		if (!err)
			get('result_profile').innerHTML = '<span class="form_error">' + error1 + error2 +'</span>';
    }
	
	// message
	if (type == 4) {
		if (drop_spaces(trim(get("answer").value)) == '') {
            get("answer").value = '';
            get("answer").className = error_field;
            get("f_answer").className = error_class;
            err = false;
        }
		if (!err)
			get('message_error').innerHTML = '<span class="form_error">Пожалуйста, заполните текст сообщения.</span>';
	}
	
	// password
	if (type == 5) {
	
		var pass = get("current_pass").value;

        if (pass == '') {
            get("current_pass").value = '';
            get("current_pass").className = error_field;
            get("f_current_pass").className = error_class;
            error1 = 'Необходимо заполнить все поля, отмеченные *. ';
            err = false;
        }
        var new_pass = get("new_pass").value;
        if (new_pass == '') {
            get("new_pass").value = '';
            get("new_pass").className = error_field;
            get("f_new_pass").className = error_class;
            error1 = 'Необходимо заполнить все поля, отмеченные *. ';
            err = false;
        } else {
            if (new_pass.length < 6 || new_pass.length > 12) {
                get("f_new_pass").className = error_class;
                error2 += 'Пароль должен быть не меньше 6 и не более 12 символов. ';
                err = false;
            } else {
                if (!check_password (new_pass)) {
                    err = false;
                    get("new_pass").className = error_field;
                    get("f_new_pass").className = error_class;
                    error2 += 'Пароль может содержать только латинские буквы или цифры. ';
                }
            }
        }

        var pass_confirm = get("pass_confirm").value;
        if (pass_confirm == '') {
            get("pass_confirm").value = '';
            get("pass_confirm").className = error_field;
            get("f_pass_confirm").className = error_class;
            error1 = 'Необходимо заполнить все поля, отмеченные *. ';
            err = false;
        } else {
            if (pass_confirm.length < 6 || pass_confirm.length > 12) {
                error2 += 'Пароль должен быть не меньше 6 и не более 12 символов. ';
                get("pass_confirm").className = error_field;
                get("f_pass_confirm").className = error_class;
                err = false;
            } else {
                if (!check_password (pass_confirm)) {
                    get("pass_confirm").className = error_field;
                    get("f_pass_confirm").className = error_class;
                    err = false;
                    error2 += 'Пароль должен быть не меньше 6 и не более 12 символов. ';
                }
            }
        }
        if (err) {
            if (new_pass != '' && pass_confirm != '') {
                if (new_pass != pass_confirm) {
                    get("pass_confirm").className = error_field;
                    get("f_pass_confirm").className = error_class;
                    error2 += 'Введено неверное подтверждение пароля. ';
                    err = false;
                }
            }
        }
		
		if (!err)
			get('result_password').innerHTML = '<span class="form_error">' + error1 + error2 + '</span>';
	}
	
	return err;
}

//*****************  functions clear error filed
function clearError(field, class_name) {
	if (get(field)) {
		get(field).className = class_name;
	}
	if (get('f_' + field)) {
		get('f_' + field).className = '';
	}
}

//*****************  user is trying to login
function user_login () {
	var err = false;
	var email = get('login_email').value;
	var pass =  get('login_password').value;
	if (drop_spaces(trim(email)) != '' && drop_spaces(trim(pass)) != '') {
		 if (!check_email(email)) {
			var err_text = 'Неверный email';
		 	err = true;
		 }
		 if (!check_password(pass)) {
		 	var err_text = 'Неверный пароль';
		 	err = true;
		 }
	} else {
		err = true;
		var err_text = 'Введите логин и пароль';
	}
	if (err) {
	 	get('login_error').innerHTML = err_text ;
	} else {
		if (get('remember').checked == false)
			var remember = '0';
		else
			var remember = '1';
		var hash = get('hash').value;
		ajaxdisplay('inc/request.php?action=login&email=' + email + '&pass=' + pass + '&remember=' + remember + '&hash=' + hash, '', 'login_error');
	}
	return false;
}

function clearErrorText (id) {
	get(id).innerHTML = '&nbsp;';
}

//*****************  set cookie for logged user
function make_login(data) {
	data = split('_', data);	
	var date = new Date();
	date.setTime(date.getTime()+(365*24*60*60*1000));
	
	if (data[3] > 0)
		var expires = "; expires="+date.toGMTString();
	else
		var expires = ";";
	document.cookie = "uss_user_id=" + data[2] +expires+"; path=/";
	document.cookie = "uss_user_key=" + data[1]+expires+"; path=/";
	location.href='my_area.html';
}
var timeOnBlock = null;

//*****************  show login form
function loginForm () {
	clearTimeout(timeOnBlock);
    timeOnBlock = null;
	if (get('login_block').style.display == 'none' || get('login_block').style.display == '')
		get('login_block').style.display = 'block';
	else
		get('login_block').style.display = 'none';
}

//*****************  show profile form
function profileForm () {
	clearTimeout(timeOnBlock);
    timeOnBlock = null;
	if (get('profile_block').style.display == 'none' || get('profile_block').style.display == '')
		get('profile_block').style.display = 'block';
	else
		get('profile_block').style.display = 'none';
}

//*****************  show login ir profile form
function closeBlock (id) {
	timeOnBlock = setTimeout(function() { get(id).style.display = 'none' }, 3000);	
}

//*****************  logout of user
function logout () {
	var hash = get('hash').value;
	ajaxdisplay('inc/request.php?action=clear_seances&hash=' + hash, '', '');
	
	var date = new Date();
	date.setTime(date.getTime()-(365*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = "uss_user_id="+expires+"; path=/";
	document.cookie = "uss_user_key="+expires+"; path=/";
	location.href="index.html";
	
}

//*****************  open hidden message text
function viewText(id) {
	get('messfull'+id).style.display = 'inline';
	get('messmore'+id).style.display = 'none';
	if (get('new'+id)) {
		if (get('new'+id).value == 1) {
			get('line1'+id).className = '';
			get('line2'+id).className = '';
			get('line3'+id).className = '';
			var hash = get('hash').value;
		    ajaxdisplay('inc/request.php?action=mark_read&id=' + id + '&hash=' + hash, '', '');
			get('new'+id).value = '0';
		}
	}
}

//*****************  hide part of message text
function hideText(id) {
	get('messfull'+id).style.display = 'none';
	get('messmore'+id).style.display = 'inline';
}

//*****************  play sound
function playSound(surl) {
	var play = get("sound").value;
	if (play == 0) {
		get('play').innerHTML="<embed src='sounds/"+surl+"' hidden=true autostart=true loop=false>";
		get("sound").value = 1;
		get('key').src = "img/icon_play.png";
	} else {
		get('play').innerHTML="";
		get("sound").value = 0;
		get('key').src = "img/icon_stop.png";
	}
}

//*****************  show print page
function savePrint () {
	var expires = ";";
	document.cookie = "print=1; path=/";
}

//*****************  show print page
function deletePrint () {
	var date = new Date();
	date.setTime(date.getTime()-(365*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = "print="+expires+"; path=/";
}
