/**
 * Created by guosen on 2016/03/31.
 * Dialog类库
 * 依赖Base.js
 */
;(function (W) {
    'use strict';

    //定义一个临时对象d
    var d = function () { };
    
    //继承Base
    var _d = d.prototype;
    
    var source = '<div id="modalbg" class="dialog modalbg">'
			+ '<div class="dialog_box" id="dialogBox">'
			+ '<div id="dialog_div" class="dialog_c">'
			+ '<div class="c_txt" id="c_txt"><h2 id="m_title">{{title}}</h2><div id="m_content">{{content}}</div>'
			+ '</div>'
			+ '<div class="btn_box" id="btn_box">'
			+ '<div class="btn btn_l ">'
			+ '<a class="btn btn_inner dialog_btn_a" style="cursor:pointer;" id="m_btn" href="{{href}}">{{btn_txt}}</a>'
			+ '</div>'
			+ '</div>'
			+ '</div>'
			+ '</div>'
			+ '</div>';
    
    var doublebtn = '<div id="modalbg" class="dialog modalbg">'
		+ '<div class="dialog_box" id="dialogBox">'
		+ '<img src="../weixin/images/close.png" style="display:block;width:20px;height:20px;float:right;margin-right:7%;" onclick="javascript:Dialog.close();">'
		+ '<div id="dialog_div" class="dialog_d"><!--a href="javascript:Dialog.close();" class="dialog_close"></a-->'
		+ '<div class="c_txt" id="c_txt"><h2 id="m_title">{{title}}</h2><div id="m_content">{{content}}</div>'
		+ '</div>'
		/*+ '<div class="btn_box" >'*/
		+ '<div class="btnwrapper" id="btn_box">'
		+ '<div class="leftbtn"><a  style="cursor:pointer;color:#ffffff;" id="m_btn_left" href="{{href}}"></a></div><div class="btnspace"></div>'
		+ '<div class="rightbtn"><a  style="cursor:pointer;color:#ffffff;" id="m_btn_right" href="{{href}}"></a></div>'
		/*+ '</div>'*/
		+ '</div>'
		+ '</div>'
		+ '</div>'
		+ '</div>';
    
    /**
     * dialog模态弹出窗
     * options参数对象
     * options.content : 提示内容
     * options.btn_txt : 按钮文字
     * options.href : 点击按钮跳转链接 默认是void(0)
     * options.callback : 点击按钮回调 默认是Dialog.close() 同时有href和callback的情况下优先使用callback
     */
    _d.dialog = function (options){
    	var dialoglist = document.querySelectorAll("#dialog");
        if(dialoglist.length > 0){
            return;
        }
    	var opt = { 
    			content:"dialog...", 
    			btn_txt:"确定", 
    			href:"javascript:void(0);", 
    			callback:function (){
    				Dialog.close();
    			},
    			needbtn:"0",
    			extratop:"0",
    			isok:"0",
    			activity:"",
    			actmsg:"",
    			top_p:0,
    			doublebtn:0,
    			callbackright:function (){
    				Dialog.close();
    			},
    			btn_txt_right:'',
    			hrefright:"javascript:void(0);", 
    		}
    	
    	if(typeof options != "undefined"){
			opt.title = typeof options.title == "undefined"? opt.title:options.title;
        	opt.content = typeof options.content == "undefined"? opt.content:options.content;
        	opt.btn_txt = typeof options.btn_txt == "undefined"? opt.btn_txt:options.btn_txt;
        	opt.btn_txt_right = typeof options.btn_txt_right == "undefined"? opt.btn_txt:options.btn_txt_right;
        	opt.href = typeof options.href == "undefined"? opt.href:options.href;
        	opt.hrefright = typeof options.hrefright == "undefined"? opt.hrefright:options.hrefright;
        	opt.callback = typeof options.callback == "undefined"? opt.callback : options.callback;
        	opt.callbackright = typeof options.callbackright == "undefined"? opt.callbackright : options.callbackright;
        	opt.needbtn = typeof options.needbtn == "undefined"? opt.needbtn : options.needbtn;
        	opt.extratop = typeof options.extratop == "undefined"? opt.extratop : options.extratop;
        	opt.isok = typeof options.isok == "undefined"? opt.isok : options.isok;
        	opt.dialogcallback = typeof options.dialogcallback == "undefined"? opt.dialogcallback : options.dialogcallback;
        	opt.activity = typeof options.activity == "undefined"? opt.activity : options.activity;
        	opt.actmsg = typeof options.actmsg == "undefined"? opt.actmsg : options.actmsg;
        	opt.top_p = typeof options.top_p == "undefined"? opt.top_p : options.top_p;
        	opt.doublebtn = typeof options.doublebtn == "undefined"? opt.doublebtn : options.doublebtn;
    	}
    	
    	//var render = template.compile(source);
    	//var render = _.template(source);
        //var html = render(opt);
    	
        var e = document.createElement("DIV");
        e.setAttribute("id", "dialog");
        if (opt.doublebtn=='1'){
        	e.innerHTML = doublebtn;
        }else{
        	e.innerHTML = source;
        }
        e.querySelector("#m_title").innerHTML = opt.title;
        e.querySelector("#m_content").innerHTML = opt.content;
    	if (opt.needbtn=='1'){
    		if (opt.doublebtn ==0){
    			e.querySelector("#m_btn").innerHTML = opt.btn_txt;
    	        e.querySelector("#m_btn").href = opt.href;
    	        e.querySelector("#btn_box").style.display="";
    		}else{
    			e.querySelector("#m_btn_left").innerHTML = opt.btn_txt;
    			e.querySelector("#m_btn_right").innerHTML = opt.btn_txt_right;
    			e.querySelector("#m_btn_right").href = opt.hrefright;
    			e.querySelector("#m_btn_left").href = opt.href;
    		}
        }else{
        	e.querySelector("#btn_box").style.display="none";
        }
        document.body.appendChild(e);
        var assigned = false;
        if (opt.doublebtn ==0){
	        var dialog_btn = e.querySelector(".dialog_btn_a");
	        dialog_btn.onclick = function(){
	        	if (opt.callback && typeof opt.callback === 'function') {
	        		assigned = true;
	        		opt.callback();
	            }else{
	            	Dialog.close();
	            }
	        }
        }else{
        	var dialog_left = e.querySelector(".leftbtn");
        	dialog_left.onclick = function(){
	        	if (opt.callback && typeof opt.callback === 'function') {
	        		opt.callback();
	        		Dialog.close();
	            }else{
	            	Dialog.close();
	            }
	        }
	        var dialog_right = e.querySelector(".rightbtn");
	        dialog_right.onclick = function(){
	        	if (opt.callbackright && typeof opt.callbackright === 'function') {
	        		opt.callbackright();
	        		Dialog.close();
	            }else{
	            	Dialog.close();
	            }
	        	if (opt.callbackright && typeof opt.callbackright === 'function') {
	        		opt.callbackright();
	        		Dialog.close();
	            }else{
	            	Dialog.close();
	            }
	        }
        }
        var dialogBox = document.querySelector("#dialogBox");
        dialogBox.onclick = function(){
        	if (opt.callback && typeof opt.callback === 'function' && (!assigned)) {
        		if (opt.doublebtn==0){
        			opt.callback();
        		}
            }else{
            	Dialog.close();
            }
        }
        var h1 = document.body.clientHeight >= document.body.scrollHeight? document.body.clientHeight : document.body.scrollHeight;
        var h2 = $(window).height();
        var h = h1 >= h2? h1 : h2;
    	if(opt.top_p!=0){
        	document.getElementById("dialogBox").style.top = opt.top_p+"px";
    	}else{
    		var dia = $(window).height()*0.4 + document.documentElement.scrollTop;
			console.log(document.documentElement.scrollTop)
            document.getElementById("dialogBox").style.top=dia+"px";
    	}
    	document.getElementById("modalbg").style.height=h+"px";
    }
    
    //读取cookie
    _d.getCookie = function(name){
    	var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    	if(arr=document.cookie.match(reg))
    	return unescape(arr[2]);
    	else
    	return null;
    }
    
    _d.modal = function(html){
    	
    	var e = document.createElement("DIV");
        e.setAttribute("id", "dialog");
        e.innerHTML = html;
    	
    	document.body.appendChild(e);
    	var dialog_btn = document.querySelector(".dialog_btn_a");
    	if(dialog_btn){
	        dialog_btn.onclick = function(){
	        	Dialog.close();
	        }
        }
    	var h = document.body.clientHeight >= document.body.scrollHeight? document.body.clientHeight : document.body.scrollHeight;
    	document.getElementById("modalbg").style.height=h+"px";
    	
    }
    
    /**
     * alert提示
     * @param msg
     * @box_class  弹框种类,'tips_boxui'正确提示框,'tips_boxui_2'警告提示框
     */
    _d.toast = function(msg){
        //清除定时器
        if (typeof toast_timer != "undefined"){
            window.clearTimeout(toast_timer);
        }

        var toast = document.querySelectorAll(".toast_box");
        if(toast.length > 0){
            for(var i=0; i < toast.length; i++){
                document.body.removeChild(toast[i]);
            }
        }
        var html =  '<div class="tip_box">'
                + '<p>' + msg + '</p>'
                + '</div>';
       
        var h_node = document.createElement("div");
        h_node.setAttribute("id","toast");
        h_node.setAttribute("class","toast_box");
        h_node.innerHTML = html;
        
        var dia = $(window).height()*0.5;
        document.body.appendChild(h_node);
        document.querySelector("#toast").style.top=dia+"px";

        window.toast_timer = setTimeout(function(){
            var toast = document.querySelectorAll(".toast_box");
            if(toast.length > 0){
                for(var i=0; i < toast.length; i++){
                    document.body.removeChild(toast[i]);
                }
            }
        },3000)
    }

    //关闭弹出框
    _d.close = function(){
    	if(document.getElementById("dialog")!=null){
    		document.getElementById("dialog").remove();
    	}
    }
    //
    _d.closeWindow = function(){
        WeixinJSBridge.call('closeWindow');
    }
    

    /******update end*******/

    //创建Base对象暴露以上定义的接口
    window.Dialog = new d;

})(window);