
/* Open a popup browser window and display widget preview */
var WTE_WidgetPreview_Popup = Class.create();
WTE_WidgetPreview_Popup.prototype = 
{
  popBox: null,

  initialize: function(options)
  {
    this.options = {
      html: 'No link to display. Please close this window and try again!',
	  name: 'wte_link_preview_popup',
      width: 500,
      height: 300
    }
    Object.extend(this.options, options || {});
    this.popBox = window.open('#', this.options.name, 'width='+this.options.width+',height='+this.options.height);
	try {
      this.popBox.document.open();
      this.popBox.document.clear();
      this.popBox.window.document.write(this.options.html);
      this.popBox.document.close();
      this.popBox.focus();
    } catch(err) { /* error */ }
  }
}


/* calculate absolute left and top positioning for a given object */
function findPos(obj) {
	var obj = obj || {};
	if (obj.parentNode && obj.parentNode.className.indexOf('wte_link_item') != -1) {
		obj = obj.parentNode;
	}
	var pScroll = pageSize();
	var pos = pScroll;
	var popupWidth = 410;
	if (obj.offsetParent) {
		odims = {offsetLeft:obj.offsetLeft, scrollWidth:obj.scrollWidth};
		pos = [obj.offsetLeft+obj.scrollWidth,obj.offsetTop+obj.scrollHeight];
		while (obj = obj.offsetParent) {
			pos[0] += obj.offsetLeft;
			pos[1] += obj.offsetTop;
		}
		pos[0] -= odims.scrollWidth;
		if (pos[0] + popupWidth > document.body.scrollWidth) {
			pos[0] -= popupWidth - odims.scrollWidth;
		}
	}
	return pos;
}

/* Calculate and return the page size (used in findPos) */
function pageSize() {
        var pScroll = [0,0];
        if (typeof(window.pageYOffset) == 'number') {
            //Netscape compliant
            pScroll = [window.pageXOffset, window.pageYOffset];
        } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
            //DOM compliant
            pScroll = [document.body.scrollLeft, document.body.scrollTop];
        } else if (document.documentElement
          && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
            //IE6 standards compliant mode
            pScroll = [document.documentElement.scrollLeft,
                       document.documentElement.scrollTop];
        }
        return pScroll;
}



// wte_link_box functionality
Event.observe(window, 'load', function() {

        Event.observe('wte_link', 'click', function(){
			/* Hide/Show box depending on current state */
			if($('wte_link_box').visible()){	
				$('wte_link_box').style.display = 'none';	
				$('wte_link_box').hide();
			} else {
				/* Position the link overlay box below link element */
				var coords = findPos($('wte_link'));
				$('wte_link_box').style.left = coords[0] + 'px';
				$('wte_link_box').style.top = coords[1] + 'px';
				$('wte_link_box').style.display = 'block';
				$('wte_link_box').show();
			}
        });

        Event.observe('wte_link_general', 'click', function(){
			// select text and copy to clip board automatically
			$('wte_link_general').focus();
			$('wte_link_general').select();
        });
        Event.observe('wte_link_widget', 'click', function(){
			// select text and copy to clip board automatically
			$('wte_link_widget').focus();
			$('wte_link_widget').select();
        });
        Event.observe('wte_link_preview', 'click', function(){
			new WTE_WidgetPreview_Popup({html:"<html>\n<head>\n\t<title>MyTime Widget Preview</title>\n</head>\n<body>\n<p align=\"center\">\n\t" + $('wte_link_widget').value + ' &lt;-- click me to test!\n\n</p></body>\n</html>'});
        });
});
