function usJsonParse(str) {
	return eval('('+str+')');
}

function setInitValue(elem) {
	if(elem.value=='' && elem.hasAttribute('init_value')){
		elem.value = elem.getAttribute('init_value');
		YAHOO.util.Dom.addClass(elem, 'initValueGrayed');
	}
}

function clearInitValue(elem) {
	if(YAHOO.util.Dom.hasClass(elem, 'initValueGrayed')) {
		elem.value='';
		YAHOO.util.Dom.removeClass(elem, 'initValueGrayed');
	}
}

function onInitValueFocus(e) {
	clearInitValue(this);
}

function onInitValueBlur(e) {
	setInitValue(this);
}

function addListenersToInitValues() {
	var initValueFields = YAHOO.util.Dom.getElementsByClassName('initValue');
	for(var i=initValueFields.length; i--;){
/*
		if(initValueFields[i].value=='') {
			initValueFields[i].value = initValueFields[i].getAttribute('init_value');
		}
*/
		if(initValueFields[i].value == initValueFields[i].getAttribute('init_value')) {
			YAHOO.util.Dom.addClass(initValueFields[i], 'initValueGrayed');
		}
		YAHOO.util.Event.addListener(initValueFields[i], 'focus', onInitValueFocus);
		YAHOO.util.Event.addListener(initValueFields[i], 'blur', onInitValueBlur);
	}
}

function initApp() {
	var oMenuBar = new YAHOO.widget.MenuBar("main_menu", { autosubmenudisplay:true, hidedelay:750, lazyload:true });
	oMenuBar.render();

	//var at = new AjaxUpdater(document.getElementById('ajaxtest'), '/a.php', {frequency:2000});
	//YAHOO.util.Event.on(document.getElementById('ajaxtestctrl'), 'click', at.stop, at, true);
	addListenersToInitValues();
	if(!document.activeElement.form) {
		elems = YAHOO.util.Dom.getElementsBy(function(el){return el.getAttribute('init_focus');});
		if(!elems.length){
			elems = YAHOO.util.Dom.getElementsBy(function(el){return (el.type=='text');}, 'input');
		}
		if(!elems.length){
			elems = YAHOO.util.Dom.getElementsBy(function(el){return true;}, 'textarea');
		}
		if(elems.length){
			elems[0].focus();
		}
	}
   YAHOO.util.Dom.batch(YAHOO.util.Dom.getElementsByClassName('mhAutoHide', 'div', 'mhAutoHideRoot'),
		YAHOO.util.Dom.addClass, 'hidden_text_par', false);
}


function mhIsValidEmail(email) {
	return null !== email.match(/[a-zA-Z0-9_+-]+[a-zA-Z0-9._+-]*@[a-zA-Z0-9_-]*(\.[a-zA-Z0-9_-]([a-zA-Z0-9_-]+))*\.([a-zA-Z]{2,4})/);
}

function addTitleToImages() {
	if (document.images) {
		for (var i = 0; i < document.images.length; i++) {
			var img = document.images[i];
			if (img.alt && !img.title) {
        img.title = img.alt;
			}
			if (img.title && !img.alt) {
        img.alt = img.title;
			}
		}
	}
}

function mhGetStdResultDlg(name, header, successRedirectUrl) {
	if(!this.mhStdDialogs) {
		this.mhStdDialogs = {};
	}
	if(!this.mhStdDialogs[name]) {
		this.mhStdDialogs[name] = new YAHOO.widget.Dialog(name, {
			width:'320px',
			draggable:true,
			visible: false,
			modal:true,
			fixedcenter:true,
			buttons: [{text:mhMsg.close_button, handler:function(){this.hide()}, isDefault:true}]
		});
		var klEsc = new YAHOO.util.KeyListener(document, { keys:27 },
			{ fn:this.mhStdDialogs[name].hide, scope:this.mhStdDialogs[name], correctScope:true }, "keyup" );
		this.mhStdDialogs[name].cfg.queueProperty("keylisteners", klEsc);
		this.mhStdDialogs[name].hideEvent.subscribe(function() {
			if(this.mhSuccess && this.mhSuccessRedirectUrl) {
				window.location.assign(this.mhSuccessRedirectUrl);
				return false;
			}
		}, this.mhStdDialogs[name]);

		this.mhStdDialogs[name].mhSuccessRedirectUrl = successRedirectUrl;
		if(header) {
			this.mhStdDialogs[name].setHeader(header);
		}
	}
	this.mhStdDialogs[name].setBody('');
	return this.mhStdDialogs[name];
}

function mhStdDlgCallback(dlg) {
	var onFailure = function(o) {
		try {
			var json = usJsonParse(o.responseText);
			if(typeof(json.error)=='undefined') {
				json = null;
			}
		}
		catch(e) {
			json = null;
		}
		dlg.setBody('<div class="popup_dlg_text warning_text"><p>' + mhMsg.send_error
			+(json ? "</p><p>"+json.error : '') + '</p></div>');
	}

	var onSuccess = function(o) {
		try {
			var json = usJsonParse(o.responseText);
			if(typeof(json.error)!='undefined') {
				return onFailure(o);
			}
			dlg.mhSuccess = true;
		}
		catch(e) {
			return onFailure(o);
		}
		dlg.setBody('<div class="popup_dlg_text"><p>'+json.result+'</p></div>');
	}
	return { success: onSuccess, failure: onFailure };
}

/**
*
* @param cfg object
* @param cfg.args(
* @param cfg.start()
* @param cfg.success(o) function 
* @param cfg.failure(o)
*/
function AjaxRequest(cfg) {
	var callback = {};
	if (!!cfg && cfg.args) {
    callback.argument = cfg.args;
	}
	if (!!cfg && cfg.success) {
		callback.success = cfg.success;
	} else {
		callback.success = function(o) {
			if (o.responseText !== undefined) { 
			  alert('Ajax response: ' .o.responseText);
			}
		}
	}
	if (!!cfg && cfg.failure) {
		callback.failure = cfg.failure;
	} else {
		callback.failure = function(o) {alert('Ajax request failed')}
	}
	if (!!cfg && cfg.timeout) {
		callback.timeout = +cfg.timeout;
	} else {
		callback.timeout = 30000;
	}
	if (!!cfg && cfg.frequency && +cfg.frequency > 0) {
		this.timer = setInterval(
			function() {
				if (!!cfg && cfg.start) {
					cfg.start();
				}
				YAHOO.util.Connect.asyncRequest('GET', cfg.url, callback)
			},
		+cfg.frequency)
		this.stop = function() {clearInterval(this.timer)};
	} else {
		if (!!cfg && cfg.start) {
			cfg.start();
		}
		var request = YAHOO.util.Connect.asyncRequest('GET', cfg.url, callback);
	}
}

//returns boolean new state
function mhToggleBlock(id, dispType) {
	var elem;
	if(!dispType) {
		dispType='block';
	}
	if(typeof(id)=='object') {
		elem = id;
	}
	else {
		elem = document.getElementById(id);
	}

	if(elem && typeof(elem.style)!='undefined') {
		elem.style.display = (elem.style.display==dispType) ? 'none' : dispType;
		return elem.style.display!='none';
	}
	return false;
}


function mhToggleFieldset(sender,relatedElementName) {
	var f = YAHOO.util.Dom.getAncestorByTagName(sender, 'fieldset');
	var frm = YAHOO.util.Dom.getAncestorByTagName(sender, 'form');
	if (!f || !frm) return;
	var n = YAHOO.util.Dom.getChildrenBy(f, function(n) {return (n.className && n.className == 'content');});
	if (!!n[0]) {
		var state = mhToggleBlock(n[0]);
		if (!!frm.elements[relatedElementName]) frm.elements[relatedElementName].value = +state;
	}  
}

function getNextSibling(el) {
	if (!!el && el.nextSibling) {
		var ns = el.nextSibling;
		while (ns.nodeType != 1) {
			ns = ns.nextSibling;
		}
		return ns;
	}
}

YAHOO.util.Event.onDOMReady(function() {
	addTitleToImages();
	initApp();
});


function newWindow(url, width, height) {
	var size = '';
	if(width && height) {
		size = ',width=' + width + ',height=' + height;
	}
	var strInitParam='directories=no,status=yes,scrollbars=yes,resizable=yes,menubar=no,toolbar=no';
	var wndname = genRandomStr(10);
	var wnd = window.open('', wndname, strInitParam+size);
	if (wnd != null) {
		wnd.document.write(
			(mhMsg.please_wait ? mhMsg.please_wait : 'Пожалуйста, подождите. Идет загрузка...')
			+'<script type="text/javascript">window.focus();</script>');
		if (url) {
			wnd.document.location=url;
		}
		wnd.focus();
		setTimeout(function() {
			if (wnd && wnd.focus && !wnd.closed) {
				wnd.focus();
			}
		}, 1500);
	}
	return wnd;
}

function genRandomStr(strlen) {
	var str = '';
	for (var i = 0; i < strlen; i++) {
		str += String.fromCharCode(Math.random()*25 + 97);
	}
	return str;
}

function myFileBrowser(field_name, url, type, win) {
	_tinyMCECallerDialogWindow = win;
	var bwin = newWindow('/file_browser?from_dlg=' + encodeURIComponent(field_name), 870, 550);
}
