function optionAdd(_objSelect, _text, _value, _id) {
    var _objOption = document.createElement("OPTION");
    _objSelect.appendChild(_objOption);
    _objOption.text = _text;
    _objOption.value = _value;
    _objOption.id = _id;
}

function optionInsert(_objSelect,_text,_value,_position) {
    _itemsTextsBackup = new Array()
    _itemsValuesBackup = new Array()
    for (i=_position;i<_objSelect.length;i++) {
        _itemsTextsBackup.push(_objSelect[i].text)
        _itemsValuesBackup.push(_objSelect[i].value)
    }

    optionDelete(_objSelect,_position)
    optionAdd(_objSelect,_text,_value)

    for (i=0;i<_itemsValuesBackup.length;i++)
        optionAdd(_objSelect,_itemsTextsBackup[i],_itemsValuesBackup[i])
}

function optionDelete(_objSelect, _start, _length)
{
    if (_start == null || _start < 0)
        _start = 0;
    if (_length == null || _length < 0 || _length == 0)
        _elements = _objSelect.length;
    else
        _elements = (_length > (_objSelect.length - _start))    ?_objSelect.length - _start :_start + _length;

    for (i=_start; i<_elements ;i++)
        _objSelect.options[_start] = null;
}

/**
 * @return boolean
 * @param srting $login
 * @desc Checks given login for CMS corresponding. Returns <b>true</b> if login is corrrect and <b>false</b> in case some errors found
*/
function isCorrectLogin(login, login_min_length, login_max_length) {
    var str = "^[\\\-\\\.a-zA-Z0-9_]{"+login_min_length+","+login_max_length+"}$";
    var re = new RegExp(str);
    return re.test(login);
}

function email_is_valid(_email) {
    email_re1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/
    email_re2 = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
    if (_email == "" || email_re1.exec(_email) || !email_re2.exec(_email))
        return false
    return true
}

//trim - Strip whitespace from the beginning and end of a string
function trim( str, charlist ) {    // Strip whitespace (or other characters) from the beginning and end of a string
    // 
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ruslan Chumak
	
    str = new String(str);
    charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

/**
	 * Generate SEO action for HTML-form
	 *
	 * @param id - HTML-form ID
	 * @param fields - List of HTML elements, separated coma
	 * @return boolean
*/
function getSEOUrl(obj, fields, values) {
    var form,arr,field,value,action;
	form = (typeof(obj) != "object")?_(obj):obj;
	if(form) {
		action = trim((form.getAttribute("land")?form.getAttribute("lang"):form.getAttribute("action")),"/");
		arr = fields.split(",");
		for(var i=0;i<arr.length;i++) {
			field = _(arr[i]);
			if(field) {
				value = field.value;
				if(typeof(values) != "undefined") {
					var arr2 = values.split(",");
					if (arr2[i] != "") {
						value = arr2[i];
					}
				}
//				if (value != "") {
					action += "/" + value;
//				}
			}
		}
		form.setAttribute("action",action);
		return true;
	}
	return false;
}

function areYouSure(confirmText, text)
{
    if (text==undefined)
        text='';
    else
        text = '\r\n'+text;
    if (confirm(confirmText+text))
        return true;
    return false;
}

var COOKIE={
    set:function(name, value, expire) {
        if(expire){
            var d=new Date();
            d.setTime(d.getTime()+expire*1000);
            expire="; expires="+d.toUTCString();
        }
        else expire="";
        document.cookie=name+"="+escape(value)+expire+"; path=/";
    },
    get:function(name) {
        if(document.cookie.length==0) return false;
        var offset=document.cookie.indexOf(name+"=");
        if(offset!=-1) { 
            offset+=name.length+1;
            var end=document.cookie.indexOf(";", offset);
            if (end==-1) end=document.cookie.length;
            return unescape(document.cookie.substring(offset, end)) 
        }
        return false;
    }
};

function isCountWords(text,count)
{
    var str = "([^ ]+[ ]){"+count+",}";
    var re = new RegExp(str);
    return re.test(text);
}
