(function(a){
	var b=null;
	a.jqDialog={
		escape_callback:null,
		enter_callback:null,
		labels:{
			ok:"Да",
			yes:"Да",
			no:"Нет",
			cancel:"Отмена"
		},
		ids:{
			div_box:"jqDialog_box",
			div_content:"jqDialog_content",
			div_options:"jqDialog_options",
			bt_yes:"jqDialog_yes",
			bt_no:"jqDialog_no",
			bt_ok:"jqDialog_ok",
			bt_ancel:"jqDialog_ok",
			input:"jqDialog_input"
		},
		confirm: function(message, callback_yes, callback_no) {
			b.create(message);

			b.parts.bt_ok.hide();
			b.parts.bt_cancel.hide();

			b.parts.bt_yes.show();
			b.parts.bt_no.show();
			b.parts.bt_yes.focus();

			b.parts.bt_yes.unbind().click( function() {
				b.cleanKeypressCallbacks();
				b.close();
				if(callback_yes) callback_yes();
			});
			b.enter_callback = function() {
				if(callback_yes) callback_yes();
			};
			b.parts.bt_no.unbind().click( function() {
				b.cleanKeypressCallbacks();
				b.close();
				if(callback_no) callback_no();
			});
			b.escape_callback = function() {
				if(callback_no) callback_no();
			};
		},
		basket:function(a,c,d,labels){
			//this.labels = labels;
			for (key in labels) {
				eval('b.parts.bt_'+key+'.html(labels.'+key+')');
			}
			b.create(a);
			b.parts.bt_ok.hide();
			b.parts.bt_cancel.show();
			b.parts.bt_yes.show();
			b.parts.bt_no.show();
			b.parts.bt_yes.focus();
			b.parts.bt_cancel.unbind().click(function(){
				b.cleanKeypressCallbacks();
				b.close();
			});
			b.escape_callback=function(){
				if(f)f()
			};
					
			b.parts.bt_yes.unbind().click(function(){
				b.cleanKeypressCallbacks();
				b.close();
				if(c)c()
			});
			b.enter_callback=function(){
				if(c)c()
			};
					
			b.parts.bt_no.unbind().click(function(){
				b.cleanKeypressCallbacks();
				b.close();
				if(d)d()
			});
			b.escape_callback=function(){
				if(d)d()
			}
		}
		,
		prompt:function(c,d,e,f){
			b.create(a("<div>").append(c).append(a("<div>").append(b.parts.input.val(d))));
			b.parts.bt_yes.hide();
			b.parts.bt_no.hide();
			b.parts.bt_ok.show();
			b.parts.bt_cancel.show();
			b.parts.input.focus();
			b.parts.bt_ok.unbind().click(function(){
				b.cleanKeypressCallbacks();
				b.close();
				if(e)e(b.parts.input.val())
					});
			b.enter_callback=function(){
				if(e)e(b.parts.input.val())
					};
					
			b.parts.bt_cancel.unbind().click(function(){
				b.cleanKeypressCallbacks();
				b.close();
				if(f)f()
					});
			b.escape_callback=function(){
				if(f)f()
					}
				},
	alert:function(a,c){
		b.create(a);
		b.parts.bt_cancel.hide();
		b.parts.bt_yes.hide();
		b.parts.bt_no.hide();
		b.parts.bt_ok.show();
		b.parts.bt_ok.focus();
		b.parts.bt_ok.unbind().click(function(){
			b.cleanKeypressCallbacks();
			b.close();
			if(c){
				c()
				}
			});
	b.escape_callback=function(){
		if(c){
			c()
			}
		}
},
content:function(a,c){
	b.create(a);
	b.parts.div_options.hide()
	},
notify:function(a,c){
	b.content(a);
	if(c){
		b.close_timer=setTimeout(function(){
			b.close()
			},c*1e3)
		}
	},
create:function(a){
	b.check();
	b.maintainPosition(b.parts.div_box);
	clearTimeout(b.close_timer);
	b.parts.div_content.html(a);
	b.parts.div_options.show();
	b.parts.div_box.fadeIn("fast")
	},
close:function(){
	b.parts.div_box.fadeOut("fast");
	b.clearPosition()
	},
clearPosition:function(){
	a(window).unbind("scroll.jqDialog")
	},
makeCenter:function(b){
	b.css({
		top:a(window).height()/2-b.height()/2+a(document).scrollTop()+"px",
		left:a(window).width()/2-b.width()/2+a(document).scrollLeft()+"px"
		})
	},
maintainPosition:function(c){
	b.makeCenter(c);
	a(window).bind("scroll.jqDialog",function(){
		b.makeCenter(c)
		})
	},
init_done:false,
check:function(){
	if(b.init_done)return;
	else{
		b.init_done=true
		}
		a("body").append(b.parts.div_box)
	},
init:function(){
	b.parts={};
	
	b.parts.div_box=a("<div>").attr({
		id:b.ids.div_box
		});
	b.parts.div_content=a("<div>").attr({
		id:b.ids.div_content
		});
	b.parts.div_options=a("<div>").attr({
		id:b.ids.div_options
		});
	b.parts.bt_yes=a("<button>").attr({
		id:b.ids.bt_yes
		}).append(b.labels.yes);
	b.parts.bt_no=a("<button>").attr({
		id:b.ids.bt_no
		}).append(b.labels.no);
	b.parts.bt_ok=a("<button>").attr({
		id:b.ids.bt_ok
		}).append(b.labels.ok);
	b.parts.bt_cancel=a("<button>").attr({
		id:b.ids.bt_cancel
		}).append(b.labels.cancel);
	b.parts.input=a("<input>").attr({
		id:b.ids.input
		});
	b.parts.div_box.append(b.parts.div_content).append(b.parts.div_options.append(b.parts.bt_yes).append(b.parts.bt_no).append(b.parts.bt_ok).append(b.parts.bt_cancel));
	b.parts.div_box.hide();
	a(document).keyup(function(a){
		if(a.altKey)return;
		if(a.keyCode==13){
			b.enterPressed()
			}
			if(a.keyCode==27){
			b.escapePressed()
			}
		})
},
cleanKeypressCallbacks:function(){
	b.enter_callback=null;
	b.escape_callback=null
	},
escapePressed:function(){
	b.close();
	if(b.escape_callback){
		b.enter_callback=null;
		b.escape_callback();
		b.escape_callback=null
		}
	},
enterPressed:function(){
	b.close();
	if(b.enter_callback){
		b.escape_callback=null;
		b.enter_callback();
		b.enter_callback=null
		}
	}
};

b=a.jqDialog;
a.jqDialog.init()
})(jQuery)
