var agent = navigator.userAgent.toLowerCase()
var is_ns  = ((agent.indexOf('mozilla') != -1) && (agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1)
                && (agent.indexOf('opera') == -1) && (agent.indexOf('webtv') == -1) && (agent.indexOf('hotjava') == -1))
var is_ie = ((agent.indexOf("msie") != -1) && (agent.indexOf("opera") == -1))
var is_opera = (agent.indexOf("opera") != -1);
var win;

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
}

function IsCorrectLogin(login, login_min_length, login_max_length) {
    var re = new RegExp("^[a-zA-Z0-9_\\-\\.]{"+login_min_length+","+login_max_length+"}$");
    return re.test(login);
}

function trim(_inStr) {
    _outStr = _inStr.replace(/(^\s+)|(\s+$)/g,"");
    return _outStr;
}

function optionAdd(_objSelect,_text,_value, _id) {
    if (is_ie) {
        var _objOption = document.createElement("OPTION");
        _objOption.text = _text;
        _objOption.value = _value;
        _objOption.id = _id;
        _objSelect.add(_objOption);
    }else if (is_ns || is_opera) {
        var _nextOption = _objSelect.options.length;
        _objOption = new Option(_text,_value,_id);
        _objSelect.options[_nextOption] = _objOption
    }
}

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;
}

function optionSelect(_objSelect,_index) {
    _index = (_index == null || _index >= _objSelect.length)?0:_index;
    if (is_ie || is_opera)
        _objSelect.selectedIndex = _index
    if (is_ns)
        _objSelect.options[_index].selected = true
}

function arrayFind(arr,val) {
    for (var i=0;i<arr.length;i++) {
        if (arr[i] == val)
            return i;
    }
    return -1;
}

function fixDate(_year,_month,_date) {
    date_year = _year[_year.selectedIndex].value;
    date_month = _month[_month.selectedIndex].value - 1;
    date_date = _date[_date.selectedIndex].value;

    objSelect = _date;

    optionDelete(objSelect,1)

    defaultIndex = 0
    for (i=1;i<=31;i++) {
        test_date = new Date(date_year,date_month,i)

        if (i == test_date.getDate())
            optionAdd(objSelect,i,i)
        if (i == date_date)
            defaultIndex = i
    }
    optionSelect(objSelect,defaultIndex)
} 

function  SHElemRes(ckBox,divID,iframeName) {
    (!ckBox.checked)    ?HideElem(divID) :ShowElem(divID);
    document.getElementById(divID).style.height = (h = document.frames[iframeName].document.body.scrollHeight)>300  ?300    :h;
    return ResizeUpperElem();
}

/**
 * @Desc Hides element 
 */
function HideElem(id){
    elem = document.getElementById(id);
    elem.style.display  = "none";
    return true;
}

/**
 * @Desc Displays element 
 */
function ShowElem(id){
    elem = document.getElementById(id);
    elem.style.display  = "";
    return true;
}

/**
 * @Desc Resizes upper element 
 */
function ResizeUpperElem() {
    //Iframe this document opened in
    upper_iframe = window.parent.document.getElementById(document.parentWindow.name+'_id');

    if (upper_iframe!=null &&   upper_iframe!=undefined){
        //Div element that upper_iframe is incapsulated in
        upper_iframe_div = upper_iframe.parentElement;
    
        //Updating upper div height (parent iframe parent tag)
        upper_iframe_div.style.height = document.body.scrollHeight;
    }
    
    return true;
}

/**
 *  @param TR object
 *  @param string (color)
 *  @param string (color)
 *  @desc Changes the background color (switches them)
 */
function ChangeBGColor(coll, TBgColor1, TBgColor2){
    TBgColor1 = TBgColor1.toUpperCase();
    TBgColor2 = TBgColor2.toUpperCase();
    if (coll!=null){
        for (i=0; i<coll.length; i++){
          coll[i].bgColor = (coll[i].bgColor.toUpperCase() == TBgColor1)    ?TBgColor2  :TBgColor1;
        }
    }
}

function getIDsOneLevel(_fObj,tagName) {
    var res = -1;
    var tmp_arr = new Array();
    nodes = _fObj.parentNode.getElementsByTagName(tagName);
    for (j=0; j<nodes.length; j++) {
        if(nodes[j].parentNode == _fObj.parentNode) {
            tmp_arr.push("" + nodes[j].id);
        }
    }
    return tmp_arr;
}

function MoveUp(idPref,CID,TBgColor1,TBgColor2) {
    var CID = "" +idPref+ CID;
    _fObj = document.getElementById(CID);

    ArrayID = getIDsOneLevel(_fObj,"TR");
    count = arrayFind(ArrayID,CID);
    if(count > 1)
    {
        _fObj_parent = _fObj.parentNode;
        _fObj_prev = document.getElementById(ArrayID[count - 1]);
        _fObj = _fObj_parent.removeChild(_fObj);
        _fObj_parent.insertBefore(_fObj, _fObj_prev);
        ChangeBGColor(_fObj.getElementsByTagName("TD"),TBgColor1,TBgColor2);
        ChangeBGColor(_fObj_prev.getElementsByTagName("TD"),TBgColor1,TBgColor2);
    }
    return false;
}

function MoveDown(idPref,CID,TBgColor1,TBgColor2) {
    var CID = "" +idPref+ CID;
    _fObj = document.getElementById(CID);

    ArrayID = getIDsOneLevel(_fObj,"TR");
    count = arrayFind(ArrayID,CID);
    if(count < (ArrayID.length - 1)) {
        _fObj_parent = _fObj.parentNode;
        _fObj_next = document.getElementById(ArrayID[count + 1]);
        _fObj_next = _fObj_parent.removeChild(_fObj_next);
        _fObj_parent.insertBefore(_fObj_next, _fObj);
        ChangeBGColor(_fObj.getElementsByTagName("TD"),TBgColor1,TBgColor2);
        ChangeBGColor(_fObj_next.getElementsByTagName("TD"),TBgColor1,TBgColor2);
    }
    return false;
}

function CreateListOrderID(inpID,tableID, string_count) {
    var coll = document.getElementById(tableID).getElementsByTagName("TBODY")[0].getElementsByTagName("TR");
    CIDs = new Array();
    if (coll != null) {
        for (i=0; i<coll.length; i++) {
            if(coll[i].id != "")
                CIDs.push((coll[i].id.substr(string_count)));
        }
    }
    //Input field to store IDs order
    document.getElementsByName(inpID).item(0).value = CIDs.join(",");
}

function InNumber(e) {
    var keyChar = event.keyCode;
    if (keyChar == 190 || keyChar == 188 || keyChar == 46 || keyChar == 9 || keyChar == 8 || keyChar == 37 || keyChar == 39 || keyChar == 13 || (keyChar > 47 && keyChar < 58))
        return true;

    return false;
}

function checkLen (max, input, output) {
	

	var elements = document.getElementsByTagName('span');
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].id == output) {
			output = elements[i];
			break;
		}
	}
	
	
	elements = document.getElementsByTagName('textarea');
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].id == input) {
			input = elements[i];
			break;
		}
	}

	if(input.value.length > max) {
		input.value = input.value.substring(0, max);
		output.firstChild.nodeValue = 0;
		return true;
	}
	output.firstChild.nodeValue = max - input.value.length;
}
