﻿// JavaScript Document

/*
弹出层-提示框 调用方法：
	$.popupAlert(info[,title[,width[,height[,callback]]]])
	info:提示内容 eg:"保存成功",
	title:提示标题 eg:"错误提示",
	width:提示框宽度 小于250自动改为250 eg:300,
	height:提示框高度 小于160自动改为160 eg:300,
	callback:关闭提示框后调用的回调函数 eg:function(){alert("关闭");}
	$.popupAlert("保存成功","错误提示",300,300,function(){
		alert("关闭");
	})
	//ps:子窗口iframe里调用父窗口内弹出层: parent.$.popupAlert(info[,title[,width[,height[,callback]]]])
	
关闭弹出层 调用方法：
	$.closePopup([callback])
	callback:关闭提示框后调用的回调函数 使用方法同上
	//ps:一般用于子页面内按钮手动关闭,parent.$.closePopup([callback])
	
弹出层-子页面 调用方法：
	$.popupIframe(url[,title[,width[,height[,callback]]]])
	url:子页面路径 eg:"edit.html",
	title:窗口标题 eg:"修改页面",
	width:窗口宽度 小于250自动改为250 eg:300,
	height:窗口高度 小于160自动改为160 eg:300,
	callback:关闭窗口后调用的回调函数 eg:function(){$.popupAlert("修改成功");}
	$.popupIframe("edit.html","修改页面",500,300,function(){
		$.popupAlert("修改成功");
	})
	//ps:子窗口iframe里调用父窗口内弹出层: parent.$.popupIframe(url[,title[,width[,height[,callback]]]])
*/
var posX;
var posY;
var overflow;

var popupMove=function(obj){
	var mobj=obj.parent().parent();
	obj.mousedown(function(e){
		if(this.setCapture){
			this.setCapture();
		}else if(window.captureEvents){
			window.captureEvents(Event.mousemove|Event.mouseup);
		}
		posX = e.clientX - mobj.offset().left;
		posY = e.clientY - mobj.offset().top;
		$(document).mousemove(function(e){
			window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
			mobj.css({
				"left":(e.clientX - posX>0?e.clientX - posX:0) + "px",
				"top":(e.clientY - posY>0?e.clientY - posY:0) + "px"
			});
			
		})
	});
	$(document).mouseup(function(){
		if(this.releaseCapture){
			this.releaseCapture();
		}else if(window.captureEvents){
			window.captureEvents(Event.mousemove|Event.mouseup);
		}
		$(document).unbind("mousemove");
	})
}


var createShading = function(){
	$("body").append("<div id='popup_shading'></div><div id='popup_loading'><span></span>加载中...</div>");
}
var createAlert = function(){
	$("body").append("<div id='popup_alert' class='popup_container'><div class='popup_line_outbox_r outbox_r_1'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_7'><b class='header_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='header_r_2'></b></div><div class='popup_line_outbox_r outbox_r_9'><b class='header_r_3'></b></div><div class='popup_line_outbox_main'><div id='popup_alert_header'><span class='popup_title'></span><span class='popup_close btn_close'></span></div><div id='popup_alert_main' class='popup_content_main'><div class='popup_content_main_topline'></div><div class='popup_content_main_leftline'></div><div class='popup_content_main_rightline'></div><div id='popup_alert_content'></div><span class='popup_define btn_close'></span></div></div><div class='popup_line_outbox_r outbox_r_9'><b class='bottom_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='bottom_r_2'></b></div><div class='popup_line_outbox_r outbox_r_7'><b class='bottom_r_3'></b></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_1'></div></div>");
	popupMove($("#popup_alert_header"))
}
var createIframe = function(){
	$("body").append("<div id='popup_iframe' class='popup_container'><div class='popup_line_outbox_r outbox_r_1'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_7'><b class='header_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='header_r_2'></b></div><div class='popup_line_outbox_r outbox_r_9'><b class='header_r_3'></b></div><div class='popup_line_outbox_main'><div id='popup_iframe_header'><span class='popup_title'></span><span class='popup_close btn_close'></span></div><div id='popup_iframe_main' class='popup_content_main'><div class='popup_content_main_topline'></div><div class='popup_content_main_leftline'></div><div class='popup_content_main_rightline'></div><iframe id='popupFrm' name='popupFrm' frameborder='0' scrolling='auto' ></iframe></div></div><div class='popup_line_outbox_r outbox_r_9'><b class='bottom_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='bottom_r_2'></b></div><div class='popup_line_outbox_r outbox_r_7'><b class='bottom_r_3'></b></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_1'></div></div>");
	popupMove($("#popup_iframe_header"))
}
var createConfirm = function(){
	$("body").append("<div id='popup_confirm' class='popup_container'><div class='popup_line_outbox_r outbox_r_1'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_7'><b class='header_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='header_r_2'></b></div><div class='popup_line_outbox_r outbox_r_9'><b class='header_r_3'></b></div><div class='popup_line_outbox_main'><div id='popup_confirm_header'><span class='popup_title'>来自网页的消息</span><span class='popup_close btn_close'></span></div><div id='popup_confirm_main' class='popup_content_main'><div class='popup_content_main_topline'></div><div class='popup_content_main_leftline'></div><div class='popup_content_main_rightline'></div><div id='popup_confirm_content'></div><a class='popup_canel btn_close'></a><a class='popup_ok btn_close'></a></div></div><div class='popup_line_outbox_r outbox_r_9'><b class='bottom_r_1'></b></div><div class='popup_line_outbox_r outbox_r_8'><b class='bottom_r_2'></b></div><div class='popup_line_outbox_r outbox_r_7'><b class='bottom_r_3'></b></div><div class='popup_line_outbox_r outbox_r_6'></div><div class='popup_line_outbox_r outbox_r_5'></div><div class='popup_line_outbox_r outbox_r_4'></div><div class='popup_line_outbox_r outbox_r_3'></div><div class='popup_line_outbox_r outbox_r_2'></div><div class='popup_line_outbox_r outbox_r_1'></div></div>");
	popupMove($("#popup_confirm_header"))
}


var bindclick=function(obj,callback,closeflag){
	obj.find(".btn_close").click(function(){
		$(document).unbind("keyup");
		$.closePopup(callback,closeflag);
	});
}
var setCSS = function(obj,width,height,callback){
	if(width){
		width = width<250? 250 : width;
		obj.css({
			"width":width+"px"
		})
	}else{
		width=parseInt(obj.width());
	}
	if(height){
		height = height<160? 160 : height;
		obj.find(".popup_content_main").css({
			"height":height+"px"
		})
		height=height+32;
	}else{
		height=parseInt(obj.height());	
	}
	var scrollLeft=0;
	var scrollTop=0;
	if(document.documentElement&&document.documentElement.scrollTop){
		scrollLeft=document.documentElement.scrollLeft;
		scrollTop=document.documentElement.scrollTop;
	}else{
		scrollLeft=document.body.scrollLeft;
		scrollTop=document.body.scrollTop;
	}
	
	obj.css({
		"left":($("html").get(0).clientWidth - width)/2 + scrollLeft +"px",
		"top":($("html").get(0).clientHeight - height)/2 + scrollTop +"px"
	}).show();
	$("#popup_loading").css({
		"left":($("html").get(0).clientWidth - 100)/2 + scrollLeft +"px",
		"top":($("html").get(0).clientHeight - 20)/2 + scrollTop +"px"
	});
	$("#popup_shading").css({"width":"100%","height":"100%"}).show();
	$(document).bind("keyup",function(event){
		if(event.keyCode == 27){ // close
			$.closePopup(callback);
			$(document).unbind("keyup");
		}
	})
}
jQuery.extend({
    popupAlert: function(info, title, width, height, callback, closeflag) {
        overflow = $("html").css("overflow");
        $("html").css("overflow", "hidden"); //hidden scroll
        if (!$("#popup_shading").length) {
            createShading();
        }
        if (!$("#popup_alert").length) {
            createAlert();
        }
        bindclick($("#popup_alert"), callback, closeflag);
        setCSS($("#popup_alert"), width, height, callback);
        if (title) {
            $("#popup_alert .popup_title").text(title);
        } else {
            $("#popup_alert .popup_title").remove();
        }

        $("#popup_alert_content").text(info);
    },
    closePopup: function(callback, closeflag) {
        if (closeflag == false) { return false; }
        //document.frames["popupFrm"].location="about:blank";
        if ($("#popup_iframe:visible").length) {
            $("#popupFrm").contents().find("body").html("");
            $("#popup_iframe")[0].style.visibility = "hidden";
        }
        $(".popup_container:visible").hide().find(".btn_close").unbind("click");
        $("#popup_shading").hide();
        $("html").css("overflow", overflow);
        if (callback) {
            callback();
        }
    },
    popupConfirm: function(info, obj, isParent) {
        overflow = $("html").css("overflow");
        $("html").css("overflow", "hidden"); //hidden scroll
        if (!$("#popup_shading").length) {
            createShading();
        }
        if (!$("#popup_confirm").length) {
            createConfirm();
        }
        bindclick($("#popup_confirm"));
        $(".popup_ok").attr("href", isParent ? obj.href.replace(/javascript:/i, "javascript:window.frames[0].") : obj.href);

        setCSS($("#popup_confirm"), 0, 0);

        $("#popup_confirm_content").text(info);
    },
    popupIframe: function(url, title, width, height, callback, closeflag) {
        overflow = $("html").css("overflow");
        $("html").css("overflow", "hidden"); //hidden scroll
        if (!$("#popup_shading").length) {
            createShading();
        }
        if (!$("#popup_iframe").length) {
            createIframe();
            $("#popupFrm").load(function() {
                $("#popup_loading").hide();
                $("#popup_iframe")[0].style.visibility = "visible";
            })
        }
        bindclick($("#popup_iframe"), callback, closeflag);
        setCSS($("#popup_iframe"), width, height, callback);
        $("#popup_loading").show();
        if (title) {
            $("#popup_iframe .popup_title").text(title);
        } else {
            $("#popup_iframe .popup_title").remove();
        }
        $("#popupFrm").attr("src", url);
    }
})
