/*
//==============================================================================
//
// Project:   %%PROJECT_NAME%% (v%%PROJECT_VERSION%%)
//
// Module:    Interface Section (JS Functions), Version 1.0
//
// Copyright: %%COPYRIGHT%%
//
// AuthorID:  %%AUTHOR_ID%%
//
//==============================================================================
*/

/* == for 'delete' == */
//var checked = array();

function checkAll(formName, status) {
    var els = document.forms[formName].elements;
    for (i = 0; i < els.length; i++) {
        if (els[i].type == "checkbox" && /cb_([\w]+_)?delete\[[^\]]+\]/.test(els[i].name)) {
            els[i].checked = status ? true : false;
        }
    }

}

function deleteChecked(formName, is_delete, del_add_msg) {

    var els   = document.forms[formName].elements;
    var count = 0;

    for (i = 0; i < els.length; i++) {
        if (els[i].type == "checkbox" && els[i].checked && /cb_([\w]+_)?delete\[[^\]]+\]/.test(els[i].name)) {
            count++;
        }
    }

    if (count == 0) {
        alert("Пожалуйста выберите хотябы одну запись!");
    } else {

        if (deleteConfirm(count, is_delete, del_add_msg)) {
            document.forms[formName].submit();
        }
    }

    return false;
}

function verifyForDelete(formName, is_delete, del_add_msg) {
    var els   = document.forms[formName].elements;
    var count = 0;

    for (i = 0; i < els.length; i++) {
        if (els[i].type == "checkbox" && els[i].checked && /cb_([\w]+_)?delete\[[^\]]+\]/.test(els[i].name)) {
            count++;
        }
    }

    if (count > 0) {
        if (deleteConfirm(count, is_delete, del_add_msg)) {
            document.forms[formName].submit();
        }
    } else {
        document.forms[formName].submit();
    }

    return false;
}

function deleteConfirm(count, is_delete, del_add_msg) {

    msg 	= count + ' ' + getCountWord(count, 'запись', 'записи', 'записей');
    msg2 	= is_delete ? 'удалить' : 'архивировать';
    msg3	= del_add_msg ? '\n' + del_add_msg : '';
    return confirm('Вы действительно хотите ' + msg2 + ' ' + msg + '?' + msg3);
}

/* == for 'save' == */

function saveForm(formName, mode) {

	if (mode) {
	    if (mode == 'add') {
	        document.forms[formName].return_to.value = "@new";
	    } else if (mode == 'return') {
	    	document.forms[formName].return_to.value = "@return";
	    } else if (mode == 'refresh') {
	        document.forms[formName].refresh.value = "1";
        }
    }

    if (formSubmit(formName)) {
        document.forms[formName].submit();
    }

    return false;
}

/* == check empty fields == */

function empty(s) {

    var r = /^\s*$/;
    return r.test(s);

}

function formSubmit(formName) {
    var a = eval(formName + '_fields');
    var d = document.forms[formName];

    for (var i = 0; i < a.length - 1; i++) {

        // Check Field Value
        name    = a[i][0];
        control = a[i][1];
        rexp    = a[i][2];
        msg     = a[i][3];

      	if (!d[name]) {
      		continue;
      	}

        switch (control) {
        case "memo":
        case "text":

      		s = d[name].value;

            if (rexp != "") {
                var r = new RegExp(rexp);
                if (!r.test(s)) {
                    formMessage(msg);
                    d[name].focus();
                    return false;
                }
            } else {
                if (empty(s)) {
                    formMessage(msg);
                    d[name].focus();
                    return false;
                }
            }
            break;

        case "select":

            s = d[name].selectedIndex;
            if (s == 0) {
                formMessage(msg);
                d[name].focus();
                return false;
            }
            break;
        }
    }

    return true;
}

function formMessage(msg) {

    if (!msg) {
        msg = "Пожалуйста заполните поле";
    }
    alert(msg);

}

// Set flag if block changes

function blockChanged(formName, blockName, i) {

	var f = document.forms[formName][blockName + '_updated[' + i + ']'];
	f.value = 1;
}

// Reset Image Delete Flag
function resetFileDel(formName, blockName, fieldName, i) {
	if (isFinite(i)) {
		var f = document.forms[formName][blockName + '_' + fieldName + '_del[' + i +']'];
		//alert(blockName + '_' + fieldName + '_del[' + i +']');
	} else {
		var f = document.forms[formName][blockName + '_' + fieldName + '_del'];
	}

	f.checked = false;
}

function resetImageDel(formName, blockName, fieldName, i) {
	resetFileDel(formName, blockName, fieldName, i)
}

function getCountWord(count, form1, form2, form3) {

	var last_digit = count % 10;

	if (count >= 11 && count <= 19 || last_digit >= 5 && last_digit <=9 || last_digit == 0) {
		return form3;
	} else if (last_digit >= 2 && last_digit <= 4) {
		return form2;
	} else if (last_digit == 1) {
		return form1;
	}
}

function toggle(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = '';
	}
}

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

function toggle_filter(cookie_name) {
    var filter_body     = $('filter_body');
    var filter_controls = $('filters_controls');
    var filter_collapse_btn = $('filter_collapse_btn');
    var filter_collapse_btn_hide = $('filter_collapse_btn_hide');
    var filter_collapse_btn_open = $('filter_collapse_btn_open');

	if ( filter_body.style.display != 'none' ) {
        filter_body.style.display = 'none';
        filter_controls.style.display = 'none';
        filter_collapse_btn_hide.style.display = 'none';
        filter_collapse_btn_open.style.display = 'block';
        setCookie(cookie_name, 'hidden');
    } else {
        filter_body.style.display = '';
        filter_controls.style.display = '';
        filter_collapse_btn_hide.style.display = 'block';
        filter_collapse_btn_open.style.display = 'none';
        setCookie(cookie_name, 'visible');
    }
}

function clear_filter() {
	var argv = clear_filter.arguments;
	if (argv.length > 0) {
		var form_name = argv[0];
		var o = document.forms[form_name].elements;
		for (a in o) {
			switch (o[a].type) {
				case 'text':
					o[a].value = '';
					break;
				case 'select-one':
					o[a].selectedIndex = 0;
					break;
				case 'checkbox':
				case 'radio':
					o[a].checked = false;
					break;
			}
		}
	}
}

/**
 *	id - id of select
 *	site_methods - input arr
 *	def_val - last selected value
 */
function create_list(id, site_methods, def_val){
	var o = document.getElementById(id);
	o.length = 0;	
	
	for(i in site_methods) {
		if(typeof site_methods[i]['items'] == 'object'){
			var el   = document.createElement("OPTGROUP");
			el.label = site_methods[i]['name'];
			for(f1 in site_methods[i]['items']) {
				var ol   = document.createElement("OPTION");
				ol.innerHTML = f1;
				ol.value  = site_methods[i]['items'][f1];
				if(ol.value == def_val) {
					ol.selected = 'selected';
				}
				el.appendChild(ol);									
			}
			o.appendChild(el);
		} else {
			var ol   = document.createElement("OPTION");
			ol.innerHTML = site_methods[i]['name'];
			ol.value  = site_methods[i]['items'];
			if(ol.value == def_val) {
				ol.selected = 'selected';
			}				
			o.appendChild(ol);					
		}
	}	
};	