if (typeof(rpc_host) != "undefined") {
	var jsonrpc	= importModule("jsonrpc");
	var server = new jsonrpc.ServerProxy(rpc_host, [
		"admin.editor.typograph",
		"admin.editor.set_lock"
	].concat(jsonrpc_user_methods));
}

/* == 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(lang['records_select']);
    } 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 + ' ' + get_count_word(count, lang);
    msg2 	= is_delete ? lang['records_delete'] : lang['records_archive'];
    msg3	= del_add_msg ? '\n' + del_add_msg : '';
    return confirm(lang['records_question'] + 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";
        } else if(mode == 'preview'){
        	document.forms[formName].preview.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 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, start_option){
	var o = document.getElementById(id);
	o.length = 0;	
	if(start_option){
		var ol   = document.createElement("OPTION");
		ol.innerHTML = '-- '+start_option+' --';
		ol.value  = '';
		o.appendChild(ol);
	}

	for(i in site_methods) {
		if(typeof site_methods[i] != 'function'){
			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);					
			}
		}	
	}	
};	

function confirmDialogEmptyHandler() {
	return false;
}

function confirmDialog(message, handler_yes, handler_no) {

	if (!handler_no) {
		handler_no = confirmDialogEmptyHandler;
	}

	var confirmDialog = YAHOO.onix.container.confirmDialog;
	confirmDialog.setHeader(lang['warning']);
	confirmDialog.setBody(message);

	var buttons = [
					{
						text: lang['ok_btn'],
						handler: function () {
							this.hide();
							handler_yes();
						}
					},
					{
						text: lang['cancel_btn'],
						handler: function() {
							this.hide();
							handler_no();
						},
						isDefault:true
					}
	              ]

	confirmDialog.cfg.queueProperty("buttons", buttons);
	confirmDialog.render(document.body);
	confirmDialog.show();
}

function change_display(val, val_change){
	if(val.checked){
		document.getElementById(val_change).style.display='';
	}else{
		document.getElementById(val_change).style.display='none';
	}
}	
