/***********************************************************************
 * Copyright (C) 2005-2006, Microsoft Corporation. All rights reserved.
 * MS Shopping, Fremont Team.
 * 
 * cDialogWindow Utility JavaScript Class
 *
 * Developed by Aidyn Chekikhanov
 *
 ***********************************************************************/

function cDialogWindow(instanceName, hpos, vpos)
{
   // *** private data members

	var _oDialogWindowPlaceHolder = null; // to be <div> element after instantiation
	var _X0 = hpos + 15; 
	var _Y0 = vpos + 15;  
	var _mouseX = 0;
	var _mouseY = 0;
	var _deltaX0 = 0;
	var _deltaY0 = 0;

	var _isDialogWindowOpen = false;
	var _isDragging = false;
	//
	var _arrBtns=["Close=0", "OK=1", "Yes=2,NO=3", "Yes=4,NO=5,Cancel=6", "He-He"];

   // *** public data members

	this.instanceName = instanceName || ( "dlgWin" + (new Date()).getTime() ); // making intanceName random
	this.Title = "";
	this.MessageBody = "";
		
	this.winWidth = "185px";
	this.winHeight = "50px";
	//
	this.cssBox = "";
	cssTitle = "";

   // *** public class methods

	this.handleDWButtonClick = handleDWButtonClick;	// virtual "empty" method to be overridden by derived class
							// to bubble processing outside the cDialogWindow() class
	this.showDialogWindow = showDialogWindow;
	this.hideDialogWindow = hideDialogWindow;
	this.dwButtonHandler = dwButtonHandler;

	// *** private methods

	function Init()
	{
	  addDialogWindowPlaceHolder(); // <div> element dynamically added to DOM

	  attachEventHandler(_oDialogWindowPlaceHolder, "onmousedown", "handleDialogWindowMouseDown"); 
	  attachEventHandler(_oDialogWindowPlaceHolder, "onmouseup", "handleDialogWindowMouseUp"); 
	}

	Init();

	function addDialogWindowPlaceHolder()
	{
	  _oDialogWindowPlaceHolder = document.createElement("div");
	  _oDialogWindowPlaceHolder.setAttribute('id',"div_" + instanceName);
	  _oDialogWindowPlaceHolder.style.position ="absolute";
	  _oDialogWindowPlaceHolder.style.visibility = "visible"; 
	  _oDialogWindowPlaceHolder.style.left = _X0 + "px"; // 225; 
	  _oDialogWindowPlaceHolder.style.top  = _Y0 + "px" ; // 150;  
	  	 
	  document.body.appendChild(_oDialogWindowPlaceHolder);
	}

	function attachEventHandler(oTarget, eventName, eventHandlerName)
	{
	   eval("oTarget." + eventName + " = " + eventHandlerName + ";");  // like: oTarget.onclick = handleMouseDown;
	}

	function detachEventHandler(oTarget, eventName)
	{
	   eval("oTarget." + eventName + " = new Function('return false');");  // assigns void function as eventhandler
	}

	function handleDialogWindowDrag(e)
	{
	   if(!_isDragging) return false; // not a dragging

	   var displayTarget = _oDialogWindowPlaceHolder; 	
	   
	   displayTarget.style.visibility="visible";
	   displayTarget.style.left=_mouseX-_deltaX0; 
	   displayTarget.style.top=_mouseY-_deltaY0; 
	}

	function handleDialogWindowMouseDown(e)
	{	   

	   _isDragging = true;
	   attachEventHandler(_oDialogWindowPlaceHolder, "onmousemove", "handleDialogWindowDrag"); 
	}
	
	function handleDialogWindowMouseUp(e)
	{
	   _isDragging = false;
	   detachEventHandler(_oDialogWindowPlaceHolder, "onmousemove"); 
	}
	
	// *** end of private methods section

     //
     
	function showDialogWindow()
	{
	   var dW = "<table class='dlgWinTblMain' cellpadding='3px' width='" + this.winWidth + "'>";
	   dW += "<tr class='noticegreen'><td style='font-weight:bold;'>" + this.Title + "</td></tr>";	   
	   dW += "<tr><td class='noticegreen'>" + this.MessageBody + "</td></tr>";	   
	   dW += "</table>";

	   _oDialogWindowPlaceHolder.innerHTML = dW; 
	} 

	function hideDialogWindow()
	{
	   _oDialogWindowPlaceHolder.innerHTML = ""; 
	} 	

	function dwButtonHandler(which)
	{
	   this.usersResponse = which.id;
	   hideDialogWindow();

	   this.handleDWButtonClick();
	   document.getElementById("usersResponse").innerHTML = "<b>ButtonID clicked:</b> " + this.usersResponse;
	}

	function handleDWButtonClick()
	{
	   // void function - bubbles event to parent web page;
	}

} // end of cDialogWindow() class

