// Lee dialog 1.0 http://www.xij.cn/blog/?p=68
var count=0;//var dialogFirst=true;
var bgVis=false;
var position=0;
var drag=true;
var mode=0;
function dialog(title,content,width,height,cssName,bgVis,position,id,drag,mode){

jQuery.fn.offset = function(options, returnObject) {
var x = 0, y = 0, elem = this[0], parent = this[0], sl = 0, st = 0, options = jQuery.extend({ margin: true, border: true, padding: false, scroll: true }, options || {});
do {
     x += parent.offsetLeft || 0;
     y += parent.offsetTop     || 0;

     // Mozilla and IE do not add the border
     if (jQuery.browser.mozilla || jQuery.browser.msie) {
      // get borders
      var bt = parseInt(jQuery.css(parent, 'borderTopWidth')) || 0;
      var bl = parseInt(jQuery.css(parent, 'borderLeftWidth')) || 0;

      // add borders to offset
      x += bl;
      y += bt;

      // Mozilla removes the border if the parent has overflow property other than visible
      if (jQuery.browser.mozilla && parent != elem && jQuery.css(parent, 'overflow') != 'visible') {
       x += bl;
       y += bt;
      }
     }

     var op = parent.offsetParent;
     if (op && (op.tagName == 'BODY' || op.tagName == 'HTML')) {
      // Safari doesn't add the body margin for elments positioned with static or relative
      if (jQuery.browser.safari && jQuery.css(parent, 'position') != 'absolute') {
       x += parseInt(jQuery.css(op, 'marginLeft')) || 0;
       y += parseInt(jQuery.css(op, 'marginTop'))     || 0;
      }

      // Exit the loop
      break;
     }

     if (options.scroll) {
      // Need to get scroll offsets in-between offsetParents
      do {
       sl += parent.scrollLeft || 0;
       st += parent.scrollTop     || 0;

       parent = parent.parentNode;

       // Mozilla removes the border if the parent has overflow property other than visible
       if (jQuery.browser.mozilla && parent != elem && parent != op && parent.style && jQuery.css(parent, 'overflow') != 'visible') {
        y += parseInt(jQuery.css(parent, 'borderTopWidth')) || 0;
        x += parseInt(jQuery.css(parent, 'borderLeftWidth')) || 0;
       }
      } while (parent != op);
     } else {
      parent = parent.offsetParent;
     }
} while (parent);

if ( !options.margin) {
     x -= parseInt(jQuery.css(elem, 'marginLeft')) || 0;
     y -= parseInt(jQuery.css(elem, 'marginTop'))     || 0;
}

// Safari and Opera do not add the border for the element
if ( options.border && (jQuery.browser.safari || jQuery.browser.opera) ) {
     x += parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0;
     y += parseInt(jQuery.css(elem, 'borderTopWidth'))     || 0;
} else if ( !options.border && !(jQuery.browser.safari || jQuery.browser.opera) ) {
     x -= parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0;
     y -= parseInt(jQuery.css(elem, 'borderTopWidth'))     || 0;
}

if ( options.padding ) {
     x += parseInt(jQuery.css(elem, 'paddingLeft')) || 0;
     y += parseInt(jQuery.css(elem, 'paddingTop'))     || 0;
}

// Opera thinks offset is scroll offset for display: inline elements
if (options.scroll && jQuery.browser.opera && jQuery.css(elem, 'display') == 'inline') {
     sl -= elem.scrollLeft || 0;
     st -= elem.scrollTop     || 0;
}

var returnValue = options.scroll ? { top: y - st, left: x - sl, scrollTop:     st, scrollLeft: sl }
            : { top: y, left: x };

if (returnObject) { jQuery.extend(returnObject, returnValue); return this; }
else                 { return returnValue; }
};

if(count>0){
	$("#floatBox").remove();

	}
	//var temp_float=new String;

if(mode==0){
	var temp_float=new String;
  	temp_float="<div id=\"floatBoxBg\" style=\"height:"+$(document).height()+"px;filter:alpha(opacity=0);opacity:0;\"></div>";
  	temp_float+="<div id=\"floatBox\" class=\"floatBox\">";
  	temp_float+="<div class=\"title\"><h4></h4><a title=\"关闭\"></a></div>";
  	temp_float+="<div class=\"content\"></div>";
  	temp_float+="</div>";
  	$("body").append(temp_float);

	}
	else if(mode==1){
	var temp_float=new String;
	temp_float="<div id=\"floatBoxBg\" style=\"height:"+$(document).height()+"px;filter:alpha(opacity=0);opacity:0;\"></div>";
  	temp_float+="<div id=\"floatBox\" class=\"floatBox\">";
  	temp_float+="<div class=\"content\"></div>";
  	temp_float+="</div>";
  	$("body").append(temp_float);

}

$("#floatBox .title a").click(function(){
  $("#floatBoxBg").animate({opacity:"0"},"normal",function(){$(this).remove();});
  $("#floatBox").animate({top:($(document).scrollTop()-(height=="auto"?300:parseInt(height)))+"px"},"normal",function(){$(this).remove();;});
  
});

$("#floatBox .title h4").html(title);
contentType=content.substring(0,content.indexOf(":"));
content=content.substring(content.indexOf(":")+1,content.length);
switch(contentType){
  case "url":
  var content_array=content.split("?");
  $("#floatBox .content").ajaxStart(function(){
    $(this).html("loading...");
  });
  $.ajax({
    type:content_array[0],
    url:content_array[1],
    data:content_array[2],
	error:function(){
	  $("#floatBox .content").html("error...");
	},
    success:function(html){
      $("#floatBox .content").html(html);
    }
  });
  break;

  case "text":
  $("#floatBox .content").html(content);
  break;
  case "id":
  $("#floatBox .content").html($("#"+content+"").html());
  break;
  case "iframe":
  $("#floatBox .content").html("<iframe id=\"myiframe\" src=\""+content+"\" width=\"100%\" scrolling=\"no\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" ></iframe>");
  break;
}

var elePos=$(id).offset();
var elePosTop=elePos.top;
var elePosLeft=elePos.left;

if(bgVis==true){
	$("#floatBoxBg").show();
	$("#floatBoxBg").animate({opacity:"0.5"},"normal");
		
	}
else {
	$("#floatBoxBg").remove();
	}
$("#floatBox").attr("class","floatBox "+cssName);

switch(position){
	case 0:
	$("#floatBox").css({display:"block",left:(($(document).width())/2-(parseInt(width)/2))+"px",top:($(document).scrollTop()-(height=="auto"?300:parseInt(height)))+"px",width:width,height:height});
	$("#floatBox").animate({top:($(document).scrollTop()+50)+"px"},"normal"); 
	count=count+1;
	break;
	case 1:
	$("#floatBox").css({display:"block",left:elePosLeft+"px",top:elePosTop+15+"px",width:width,height:height});
	count=count+1;
	}
	
if(drag==true){
	$(document).click(function(){$("#floatBox").draggable();});
    }

}
function hideDialog(){
    $("#floatBox").click(function(){$(this).remove();});
	$("#floatBoxBg").remove();
}