// global variables //
var TIMER = 5;
var SPEED = 100;
var WRAPPER = 'wrapper';
var XPosition  = 0;
var YPosition = 0;

// calculate the current window width //
function pageWidth() {
  return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
}

// calculate the current window height //
function pageHeight() {
  return window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}

// calculate the current window vertical offset //
function topPosition() {
  return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
}

// calculate the position starting at the left of the window //
function leftPosition() {
  return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
}

// build/show the dialog box, populate the data and call the fadeDialog function //
function showDialog(title,message,type,autohide) {
var canUseScript = CanUseScriptBrowser();
  if(!type) {
    type = 'error';
  }
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('dialog')) {
    dialog = document.createElement('div');
    dialog.id = 'dialog';
    dialogheader = document.createElement('div');
    dialogheader.id = 'dialog-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'dialog-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'dialog-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'dialog-content';
    dialogmask = document.createElement('div');
    dialogmask.id = 'dialog-mask';
    document.body.appendChild(dialogmask);
    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hideDialog()');
    dialogclose.onclick = hideDialog;
  } else {
    dialog = document.getElementById('dialog');
    dialogheader = document.getElementById('dialog-header');
    dialogtitle = document.getElementById('dialog-title');
    dialogclose = document.getElementById('dialog-close');
    dialogcontent = document.getElementById('dialog-content');
    dialogmask = document.getElementById('dialog-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }
  dialog.style.opacity = .00;
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=0)';
  }
  dialog.alpha = 0;
  var pWidth = pageWidth();
  var pHeight = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var tPosition;
  var lPosition;
  
  //ダイアログ情報取得
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  
  YPosition = 0; //大きなダイアログは位置固定とする
  XPosition = 0;
  if(YPosition == 0 && XPosition == 0){
	  tPosition = ((pHeight / 2) - (dialogheight / 2)) + top;
	  lPosition = ((pWidth / 2) - (dialogwidth / 2)) + left;
  }else{
	  //ダイアログ表示位置のデフォルト
	  tPosition = YPosition - dialogheight + top;
	  lPosition = XPosition + left;
	  
	  //ダイアログが画面より上に突き出た場合は下にする
	  if((tPosition - top)  < 0)
	  {
		  tPosition = tPosition + dialogheight;
	  }
	  //ダイアログが画面より右に突き出た場合は左にする
	  if((lPosition + dialogwidth)  > pWidth)
	  {
		  lPosition = XPosition - dialogwidth;
	  }
  }
  dialog.style.top = tPosition + 'px' ;
  dialog.style.left = lPosition + 'px';
  dialogheader.className = type + "header";
  dialogtitle.innerHTML = title;
  dialogcontent.className = type;
  dialogcontent.innerHTML = message;
  var content = document.getElementById(WRAPPER);
  dialogmask.style.height = content.offsetHeight + 'px';
  dialog.timer = setInterval("fadeDialog(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hideDialog()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the dialog box //
function hideDialog() {
  var dialog = document.getElementById('dialog');
  var canUseScript = CanUseScriptBrowser();

  if(canUseScript == true){
	var dialogclose = document.getElementById('dialog-close');  
  	dialogclose.style.visibility = "hidden";
  }
    
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadeDialog(0)", TIMER);
}

// fade-in the dialog box //
function fadeDialog(flag) {
  if(flag == null) {
    flag = 1;
  }
  var canUseScript = CanUseScriptBrowser();
  var dialog = document.getElementById('dialog');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=' + value + ')';
  }

  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('dialog-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
  }
}




////
function CanUseScriptBrowser()
{
    var appname = navigator.appName;
    var ua = navigator.userAgent;
    if(appname == "Microsoft Internet Explorer"){
        var appver = navigator.appVersion;
        var p = appver.indexOf("MSIE",0);
        if(p >= 0){
            var p2 = appver.indexOf(";",p);
            if(p2 >= 0){
                var iever = appver.substring(p + 5, p2);
                // IEのバージョンが抽出できた。
                if(iever >= 7){    // IE6以降
                    return true;
                }
            }
        }
    }else if(ua.indexOf("Gecko/") >= 0){
        var p = ua.indexOf("Gecko/");
        var p2 = ua.indexOf(" ", p);
        if(p2 >= 0){
            var ver = ua.substring(p + 6, p2);
            if(ver >= 20060308){// Firefox 1.5以降(メジャーバージョン)
                return true;
            }
        }
    }
    return false;
}
/**
 * クリックイベントのセット
 */
function setClickEvent(){
	//Ｘ座標とＹ座標を取得
	if (document.addEventListener) {
		//IE
		document.addEventListener("click", setClickPosition, true);
	} else {
		//IE
		document.attachEvent("onclick", setClickPosition, true); 
	}

}
/**
 *  クリック時のX座標を取得   
 * @param event
 */
function setClickPosition(event){
	YPosition = document.body.scrollTop + event.clientY;
	XPosition = document.body.scrollLeft + event.clientX;
//	YPosition = 0;
//	XPosition = 0;
}

/**
 * 画像ダイアログ対応
 */
function showPicDialog(title,message,type,autohide) {
var canUseScript = CanUseScriptBrowser();
  if(!type) {
    type = 'error';
  }
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('pic-dialog')) {
    dialog = document.createElement('div');
    dialog.id = 'pic-dialog';
    dialogheader = document.createElement('div');
    dialogheader.id = 'pic-dialog-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'pic-dialog-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'pic-dialog-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'pic-dialog-content';
    dialogmask = document.createElement('div');
    dialogmask.id = 'pic-dialog-mask';
    document.body.appendChild(dialogmask);
    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hidePicDialog()');
    dialogclose.onclick = hidePicDialog;
  } else {
    dialog = document.getElementById('pic-dialog');
    dialogheader = document.getElementById('pic-dialog-header');
    dialogtitle = document.getElementById('pic-dialog-title');
    dialogclose = document.getElementById('pic-dialog-close');
    dialogcontent = document.getElementById('pic-dialog-content');
    dialogmask = document.getElementById('pic-dialog-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }
  dialog.style.opacity = .00;
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=0)';
  }
  dialog.alpha = 0;
  var pWidth = pageWidth();
  var pHeight = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var tPosition;
  var lPosition;
  
  //ダイアログ情報取得
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  
  if(YPosition == 0 && XPosition == 0){
	  tPosition = ((pHeight / 2) - (dialogheight / 2)) + top;
	  lPosition = ((pWidth / 2) - (dialogwidth / 2)) + left;
  }else{
	  //ダイアログ表示位置のデフォルト
	  tPosition = YPosition - dialogheight + top;
	  lPosition = XPosition + left;
	  
	  //ダイアログが画面より上に突き出た場合は下にする
	  if((tPosition - top)  < 0)
	  {
		  tPosition = tPosition + dialogheight;
	  }
	  //ダイアログが画面より右に突き出た場合は左にする
	  if((lPosition + dialogwidth)  > pWidth)
	  {
		  lPosition = XPosition - dialogwidth;
	  }
  }
  dialog.style.top = tPosition + 'px' ;
  dialog.style.left = lPosition + 'px';
  dialogheader.className = type + "header";
  dialogtitle.innerHTML = title;
  dialogcontent.className = type;
  dialogcontent.innerHTML = message;
  var content = document.getElementById(WRAPPER);
  dialogmask.style.height = content.offsetHeight + 'px';
  dialog.timer = setInterval("fadePicDialog(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hidePicDialog()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the dialog box //
function hidePicDialog() {
  var dialog = document.getElementById('pic-dialog');
  var canUseScript = CanUseScriptBrowser();

  if(canUseScript == true){
	var dialogclose = document.getElementById('pic-dialog-close');  
  	dialogclose.style.visibility = "hidden";
  }
    
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadePicDialog(0)", TIMER);
}

// fade-in the dialog box //
function fadePicDialog(flag) {
  if(flag == null) {
    flag = 1;
  }
  var canUseScript = CanUseScriptBrowser();
  var dialog = document.getElementById('pic-dialog');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=' + value + ')';
  }

  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('pic-dialog-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
  }
}


//--------------------

/**
 * htmlダイアログ対応
 */
function showHtmlDialog(path,autohide,center) {
var canUseScript = CanUseScriptBrowser();
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('html-dialog')) {
    dialog = document.createElement('div');
    dialog.id = 'html-dialog';
    dialogheader = document.createElement('div');
    dialogheader.id = 'html-dialog-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'html-dialog-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'html-dialog-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'html-dialog-content';
    //差込むhtmlを同期処理で読み込み
    $.ajax({
	  url: path,
	  dataType: "html",
	  cache: false,
	  async: false,
	  success: function(data){
		$(dialogcontent).append(data);
	  }
	});

    dialogmask = document.createElement('div');
    dialogmask.id = 'html-dialog-mask';
    document.body.appendChild(dialogmask);
    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hideHtmlDialog()');
    dialogclose.onclick = hideHtmlDialog;
  } else {
    dialog = document.getElementById('html-dialog');
    dialogheader = document.getElementById('html-dialog-header');
    dialogtitle = document.getElementById('html-dialog-title');
    dialogclose = document.getElementById('html-dialog-close');
    dialogcontent = document.getElementById('html-dialog-content');
    dialogmask = document.getElementById('html-dialog-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }

  dialog.style.opacity = .00;
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=0)';
  }
  dialog.alpha = 0;
  var pWidth = pageWidth();
  var pHeight = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var tPosition;
  var lPosition;
  
  //ダイアログ情報取得
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  
  if(YPosition == 0 && XPosition == 0 || center == true){
	  tPosition = ((pHeight / 2) - (dialogheight / 2)) + top;
	  lPosition = ((pWidth / 2) - (dialogwidth / 2)) + left;
  }else{
	  //ダイアログ表示位置のデフォルト
	  tPosition = YPosition - dialogheight + top;
	  lPosition = XPosition + left;
	  
	  //ダイアログが画面より上に突き出た場合は下にする
	  if((tPosition - top)  < 0)
	  {
		  tPosition = tPosition + dialogheight;
	  }
	  //ダイアログが画面より右に突き出た場合は左にする
	  if((lPosition + dialogwidth)  > pWidth)
	  {
		  lPosition = XPosition - dialogwidth;
	  }
  }
  dialog.style.top = tPosition + 'px' ;
  dialog.style.left = lPosition + 'px';
  var content = document.getElementById(WRAPPER);
  dialogmask.style.height = content.offsetHeight + 'px';
  dialog.timer = setInterval("fadeHtmlDialog(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hideHtmlDialog()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the dialog box //
function hideHtmlDialog() {
  var dialog = document.getElementById('html-dialog');
  var canUseScript = CanUseScriptBrowser();

  if(canUseScript == true){
	var dialogclose = document.getElementById('html-dialog-close');  
  	dialogclose.style.visibility = "hidden";
  }
    
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadeHtmlDialog(0)", TIMER);
}

// fade-in the dialog box //
function fadeHtmlDialog(flag) {
  if(flag == null) {
    flag = 1;
  }
  var canUseScript = CanUseScriptBrowser();
  var dialog = document.getElementById('html-dialog');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  if(canUseScript == false){
  	dialog.style.filter = 'alpha(opacity=' + value + ')';
  }

  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('html-dialog-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
  }
}




//--------------------

$(document).ready(function(){
      setClickEvent();
  });

