var startX=0;
var startY=0;
var mformX=0;
var mformY=0;
var moving=false;
var current_dlg_id;

var dlgclass=function(){
	this.title='';
	this.message='';
	this.buttons=1;  //['caption', 'function()', 'caption', 'function()'...]
	this.sclose=1;
	this.focus=0;
	this.top=100;
	this.movable=1;
	this.width='auto';
	this.maxWidth=300;
	this.height=400;
	this.scroll=0;
	this.id=Math.round(Math.random() * 1111) + (9999-1111);
	this.buttons2;
	
	this.show=function(){
		var bodyHeight=document.body.clientHeight;
		var top=document.documentElement.scrollTop+this.top;
		var docScroll=document.documentElement.scrollTop;
		/* 
		var bodyHeight=document.body.scrollHeight;
		var top=document.body.scrollTop+this.top;
		var docScroll=document.body.scrollTop;
		 */
		this.build_buttons();
		
		if(this.sclose==0){
			sbutton='';
		}else{
			if(this.sclose==1){
				sclose="$('div.mform:last').remove();";
			}
			sbutton="<span class='btn-small-close' onclick=\""+sclose+"\"><img src='/img/close.png' alt=''></span>";
		}
		
		if(this.movable){
			cursor='move';
		}else{
			cursor='default';
		}
		
		var scroll_style='';
		if(this.scroll){
			scroll_style=" style='overflow:scroll; height:"+this.height+"px; border:3px double #999999;'";
		}
		
		var dialog=" \
		<div id='dlg_"+this.id+"' class='mform' style='width:100%; height:"+bodyHeight+"px; position:absolute; top:0; left:0; background-image:url(/img/1x1(0).png);'> \
			<table class='mform' id='mdialog_"+this.id+"' border='0' cellpadding='0' cellspacing='0' align='center' style='top:"+top+"px; width:"+this.width+";'> \
				<tr class='mheadrow'> \
					<td style='width:auto;'> \
						<div id='mdialog_head_"+this.id+"' style='position:relative; height:100%; width:100%; background-color:#42609A; cursor:"+cursor+";' class='movable'> \
							 <span style='position:relative; top:5px;'>"+this.title+"</span> "+ sbutton +" \
						</div> \
					</td> \
				</tr> \
				<tr style='background-color:#DDDDDD;'> \
					<td style='padding:20px;border-left:2px solid #808080;border-right:2px solid #808080;'> \
						<div"+scroll_style+" id='mdialog_message_"+this.id+"'> \
							"+this.message+" \
						</div> \
					</td> \
				</tr> \
				<tr style='background-color:#DDDDDD;'> \
					<td style='border-right:2px solid #808080; border-left:2px solid #808080; border-bottom:2px solid #808080; height:30px; vertical-align:middle; text-align:right; padding:0 10px;'> \
						<div style='position:relative;' id='mdialog_buttons_"+this.id+"'>&nbsp; \
							"+this.buttons2+" \
						</div> \
					</td>\
				</tr> \
			</table> \
		<a class='tmp' href='javascript:void(0);'></a> \
		</div> \
		";
		
		$(dialog).appendTo('body');
		
		this.setFocus();
		
		var tbl=get_last_mform_table();
		var bodyWidth=document.body.offsetWidth;
		var tblWidth=tbl.offsetWidth;
		var left=parseInt((bodyWidth-tblWidth)/2);
		$(tbl).css("left",left+"px");
		
		
		if (document.addEventListener) { // FF и другие
			document.addEventListener('keydown', reg_event,false);
		}else if (document.attachEvent) { // специально для MSIE 
			document.attachEvent('onkeydown', reg_event);
		}
		
		if(this.movable){
			$('div.movable').mousedown(mdown);
			document.onmouseup=mup;
			document.onmousemove=mmove;
		}
		window.scrollTo(0,docScroll);
		
	}
	
	this.setFocus=function(){
		if(this.focus==0){
			sfocus='a.tmp:last';
		}else{
			sfocus=this.focus;
		}
		$(sfocus).focus();
	}
	
	this.build_buttons=function(){
		if(this.buttons==0){
			this.buttons2='';
		}else if(this.buttons==1){
			this.buttons2="<a class='btn-ok' href='javascript:void(0);' onclick='btn_click(\"btn_cancel\");'>OK</a>";
		}else{
			this.buttons2='';
			for(i=0;i<this.buttons.length;i+=2){
				caption=this.buttons[i];
				evnt=this.buttons[i+1];
				if(i==0){
					btn_class='btn-ok';
				}else if(i==this.buttons.length-2){
					btn_class='btn-cancel';
				}else{
					btn_class='btn';
				}
				if(evnt=='close' || evnt=='cancel' || evnt==0){
					evnt='$(\"div.mform:last\").remove();';
				}
				this.buttons2+="<a class='"+btn_class+"' href='javascript:void(0);' onclick='"+evnt+"'>"+caption+"</a>\r\n";
			}
		}
	}
	
	this.close=function(){
		if(this.id==0){
			$('div.mform:last').remove();
		}else{
			$("#dlg_"+this.id).remove();
		}
	}
	
	this.update=function(){
		document.getElementById('mdialog_message_'+this.id).innerHTML=this.message;
		this.build_buttons();
		document.getElementById('mdialog_buttons_'+this.id).innerHTML=this.buttons2;
		document.getElementById('mdialog_'+this.id).style.width=this.width;
		this.refresh_center();
		this.setFocus();
	}
	
	this.refresh_center=function(){
		var obj=document.getElementById('mdialog_'+this.id);
		var obj_width=obj.offsetWidth;
		var dlg_width=document.getElementById('dlg_'+this.id).offsetWidth;
		var left=parseInt((dlg_width-obj_width)/2);
		obj.style.left=left+'px';
	}
}

function close_dlg(d){
	$("#dlg_"+d).remove();
}

function get_last_mform_table(){
	var tables=document.getElementsByTagName('TABLE');
	var tables2=new Array();
	for(i=0;i<tables.length;i++){
		if(tables[i].className=='mform'){
			tables2[tables2.length]=tables[i];
		}
	}
	var tbl=tables2[tables2.length-1];
	return tbl;
}

function btn_click(btn){
	if(btn=='btn_cancel'){
		$('div.mform:last').remove();
	}else if(btn=='btn_ok'){
		$("a.btn-ok:last").click();
	}
}

function reg_event(event){//обработка события
	//alert(event.keyCode);
	if(event.keyCode==27){// ESC
		$("span.btn-small-close:last").click();
	}else if(event.keyCode==13){ //Enter
		if(event.target){
			if(event.target.tagName!="TEXTAREA"){
				$("a.btn-ok:last").click();
			}
		}else if(event.srcElement){
			if(event.srcElement.tagName!="TEXTAREA"){
				$("a.btn-ok:last").click();
			}
		}
	}
		//$('div.mform:last').remove();
		
		//event.preventDefault();//запрет на дальнейшее распространение
		//return false;//возвращаем false
}

function child_reg_event(event){
	if(event.keyCode==27){// ESC
		parent.btn_click('btn_cancel');
	}else if(event.keyCode==13){ //Enter
		if(event.target){
			if(event.target.tagName!="TEXTAREA"){
				parent.btn_click('btn_ok');
			}
		}else if(event.srcElement){
			if(event.srcElement.tagName!="TEXTAREA"){
				parent.btn_click('btn_ok');
			}
		}
	}
}

function wait(m){//m: 1-показать, 0-убрать.
	var bodyHeight=document.body.clientHeight;
	var top=document.documentElement.scrollTop+100;
	if(bodyHeight<800){
		bodyHeight=800;
	}
	
	var wait_form=" \
	<div id='waiting' class='mform' style='width:100%; height:"+bodyHeight+"px; position:absolute; top:0; left:0; background-image:url(/img/1x1(0).png);'> \
		<table border='0' cellpadding='0' cellspacing='0' align='center' style='position:absolute; top:"+top+"px; width:40%;left:30%;'> \
			<tr>\
				<td align='center' valign='middle' style='background-color:#ffffff;padding:20px;border:2px solid #666666;'> \
					<img alt='' src='/img/waiting.gif'><div style='font-weight:bold;color:#888888;'>Пожалуйста, подождите...</div> \
				</td> \
			</tr>\
		</table>\
	</div>\
	\
	";
	
	if(m){
		$(wait_form).appendTo("body");
	}else{
		$("#waiting").remove();
	}
}

function mdown(e){
	moving=true;
	if(navigator.appName=='Microsoft Internet Explorer'){
		startX=event.clientX;
		startY=event.clientY;
	}else{
		startX=e.clientX;
		startY=e.clientY;
	}
	current_dlg_id=this.id.substr(13);
	var tbl=document.getElementById('mdialog_'+current_dlg_id);
	mformX=tbl.offsetLeft;
	mformY=tbl.offsetTop;
}
function mup(e){
	moving=false;
}

function mmove(e){	
	if(!moving){
		return false;
	}
	var posX;
	var posY;
	var x;
	var y;
	if(navigator.appName=='Microsoft Internet Explorer'){
		posX=event.clientX;
		posY=event.clientY;
	}else{
		posX=e.clientX;
		posY=e.clientY;
	}
	x=startX-posX;
	y=startY-posY;
	x=mformX-x;
	y=mformY-y;
	var tbl=document.getElementById('mdialog_'+current_dlg_id);
	var bodyWidth=document.body.offsetWidth;
	var bodyHeight=document.body.offsetHeight;
	var tblWidth=tbl.offsetWidth;
	var tblHeight=tbl.offsetHeight;
	if(x<-tblWidth+30 || y<0 || x+30>bodyWidth || y+30>bodyHeight){
		return false;
	}
	$("table.mform:last").css('left',x+'px');
	$("table.mform:last").css('top',y+'px');
}
