function updateAjaxMagicBox(elemID, prefix)
{
    if (document.forms['magicBoxForm'].magicBoxUrlBox.value == '')
    {
        if (elemID != null)
        {
            if (isNaN(elemID)) //button ref
            {
                var div = document.getElementById('buttondiv');
                div.style.visibility = 'hidden';
            }
            else
            {
                if (prefix != null)
                {
                    var idAdd = 'add_'+prefix+elemID;
                    var idRem = 'rem_'+prefix+elemID;
                }
                else
                {
                    var idAdd = 'add_'+elemID;
                    var idRem = 'rem_'+elemID;
                }

                var elemAdd = document.getElementById(idAdd);
               	var elemRem = document.getElementById(idRem);
                	
            	if (document.forms['magicBoxForm'].magicBoxIsFavorite.value != '')
            	{


            	 	if (document.forms['magicBoxForm'].magicBoxIsFavorite.value == 'yes')
            		{
            			//elem.className = 'addtofavorites';
            			elemAdd.style.display = 'none';
            			elemRem.style.display = 'inline';
            		}
            		else
            		{
            			elemAdd.style.display = 'inline';
            			elemRem.style.display = 'none';
            		}
        	   }
            }
        }
        
    	PPrompt.alert(document.forms['magicBoxForm'].magicBoxMessage.value);
    }
    else 
    {
        
       	PPrompt.linkconfirm(document.forms['magicBoxForm'].magicBoxMessage.value, document.forms['magicBoxForm'].magicBoxUrlBox.value);
    }
    
}

function updateAjaxMagicBox2(token)
{
    PPrompt.alert(document.forms[token].magicBoxMessage.value);
}

function updateAjaxMagicBox3(elemID)
{
    PPrompt.close();
    if (document.forms['magicBoxForm'].magicBoxUrlBox.value == '')
    {        
        if (elemID != null)
        {
        	if ($('error').value != 1)
        	{
        	    var elemLink = document.getElementById('link_'+elemID);
            	elemLink.style.display = 'none';
        		var elemSpan = document.getElementById(elemID);
        		elemSpan.style.display = 'block';
            }
        }
        
    	PPrompt.alert(document.forms['magicBoxForm'].magicBoxMessage.value);
    }
    else 
    {
        
       	PPrompt.linkconfirm(document.forms['magicBoxForm'].magicBoxMessage.value, document.forms['magicBoxForm'].magicBoxUrlBox.value);
    }
    
}

var PPrompt = {

  choose: function(ogId, type, reloadPage, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    var ul = document.createElement('ul');
	ul.style.display='block';
	pwindow.appendChild(ul);

    var li = document.createElement('li');
    var li2 = document.createElement('li');
    switch (type)
    {
        case 'investor':
            var tn = document.createTextNode('I would like to add this investor to my watch list');
            var tn2 = document.createTextNode('I work for this investor');
            break;
        case 'company':
            var tn = document.createTextNode('I would like to add this company to my watch list');
            var tn2 = document.createTextNode('I work for this company');
            break;
        case 'provider':
            var tn = document.createTextNode('I would like to add this service provider to my watch list');
            var tn2 = document.createTextNode('I work for this service provider');
            break;
    }
    
	ul.appendChild(li);
    ul.appendChild(li2);
    
    try
    {
         pimg1 = document.createElement('<input type="radio" name="teammember" checked />');
         pimg2 = document.createElement('<input type="radio" name="teammember" />');
    }
    catch(err)
    {
      pimg1 = document.createElement('input');
      pimg2 = document.createElement('input');
    }
    pimg1.setAttribute('type','radio');
    pimg1.setAttribute('name','teammember');
    pimg1.setAttribute('checked','checked');
    pimg1.id = 'option1';
    pimg1.value = 1;
    pimg1.style.border = 0;
    
    pimg2.setAttribute('type','radio');
    pimg2.setAttribute('name','teammember');
    pimg2.id = 'option2';
    pimg2.value = 0;
    pimg2.style.border = 0;
    
    var lbl = document.createElement('label');
	// set the label in IE..
	lbl.setAttribute('htmlFor','option1');
	// set the label for other browsers
	lbl.setAttribute('for','option1');
	lbl.appendChild(tn);
	li.appendChild(pimg1);

	li.appendChild(lbl);

    var lb2 = document.createElement('label');
	// set the label in IE..
	lb2.setAttribute('htmlFor','option2');
	// set the label for other browsers
	lb2.setAttribute('for','option2');
	lb2.appendChild(tn2);
	li2.appendChild(pimg2);

	li2.appendChild(lb2);


    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';

    // accept
    var pbuttonAccept = document.createElement('button');
    pbuttonAccept.className = 'pbutton';
    pbuttonAccept.appendChild(document.createTextNode(options.labelAccept));
    

    // cancel
    var pbuttonCancel = document.createElement('button');
    pbuttonCancel.className = 'pbutton';
    pbuttonCancel.appendChild(document.createTextNode(options.labelCancel));
    pbuttonCancel.onclick = options.onCancel;

    pbuttons.appendChild(pbuttonAccept);
    pbuttons.appendChild(pbuttonCancel);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);

    pbuttonAccept.onclick = function()
                            {
                                var TM = $('option2').checked ? 'TM' : 'F';
                                if (reloadPage)
                                    becomeFollower(ogId,TM,reloadPage);
                                else becomeFollower(ogId,TM);
                            }
  },

  chooseOld: function(ogId, type, reloadPage, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    var pimg=document.createElement('a');
    
    pimg.setAttribute('href','#');
    if (reloadPage) pimg.setAttribute('onclick','becomeFollower("'+ogId+'","F","'+reloadPage+'")');
    else pimg.setAttribute('onclick','becomeFollower("'+ogId+'","F")');
    pimg.setAttribute('style','clear:both;');
    pimg.style.margin = '5px';
    pimg.style.display = 'block';
    switch (type)
    {
        case 'investor':
            pimg.appendChild(document.createTextNode('I would like to add this investor to my watch list'));
            break;
        case 'company':
            pimg.appendChild(document.createTextNode('I would like to add this company to my watch list'));
            break;
        case 'provider':
            pimg.appendChild(document.createTextNode('I would like to add this service provider to my watch list'));
            break;
    }
    pwindow.appendChild(pimg);
    //pwindow.appendChild(document.createElement('br'));

    var pimg=document.createElement('a');
    pimg.setAttribute('href','#');
    if (reloadPage) pimg.setAttribute('onclick','becomeFollower("'+ogId+'","TM","'+reloadPage+'")');
    else pimg.setAttribute('onclick','becomeFollower("'+ogId+'","TM")');
    pimg.style.margin = '5px';
    pimg.style.display = 'block';
    switch (type)
    {
        case 'investor':
            pimg.appendChild(document.createTextNode('I work for this investor'));
            break;
        case 'company':
            pimg.appendChild(document.createTextNode('I work for this company'));
            break;
        case 'provider':
            pimg.appendChild(document.createTextNode('I work for this service provider'));
            break;
    }

    pwindow.appendChild(pimg);

    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';

    // cancel
    var pbuttonCancel = document.createElement('button');
    pbuttonCancel.className = 'pbutton';
    pbuttonCancel.appendChild(document.createTextNode(options.labelCancel));
    pbuttonCancel.onclick = options.onCancel;
    pbuttons.appendChild(pbuttonCancel);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);

  },

  alert: function(msg, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    // msg
    var pmsg = document.createElement('div');
    pmsg.className = 'pmsg';
    pmsg.style.padding = '6px';
    pmsg.appendChild(document.createTextNode(msg));

    pwindow.appendChild(pmsg);

    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';
    pbuttons.style.padding = '6px';

    // ok
    var pbuttonOk = document.createElement('button');
    pbuttonOk.className = 'pbutton';
    pbuttonOk.appendChild(document.createTextNode(options.labelOk));
    pbuttonOk.onclick = options.onOk;
    pbuttons.appendChild(pbuttonOk);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);
    pbuttonOk.focus();
  },
  alertHtmlNotice: function(msg, extraButton_html, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    // msg
    var pmsg = document.createElement('div');
    pmsg.className = 'pmsg';
    pmsg.style.padding = '6px';
    pmsg.innerHTML = msg;

    pwindow.appendChild(pmsg);

    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';
    pbuttons.style.padding = '6px';

    if (extraButton_html)
    {
        var pmsg = document.createElement('div');
        pmsg.innerHTML = extraButton_html;
        pbuttons.appendChild(pmsg);
    }
    
    // ok
    var pbuttonOk = document.createElement('button');
    pbuttonOk.className = 'pbutton';
    pbuttonOk.appendChild(document.createTextNode(options.labelClose));
    pbuttonOk.onclick = options.onOk;
    pbuttons.appendChild(pbuttonOk);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);
    pbuttonOk.focus();
  },
  notice: function(msg, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    // msg
    var pmsg = document.createElement('div');
    pmsg.className = 'pmsg';
    pmsg.style.padding = '6px';
    
    var pimg=document.createElement('img');
    pimg.setAttribute('src','/images/ajax-loader.gif');
    pimg.style.margin = '3px';
    pmsg.appendChild(pimg);
    pmsg.appendChild(document.createTextNode(msg));
    pwindow.appendChild(pmsg);

   
    if (options.putCancelButton == true)
    {
        var pbuttons = document.createElement('div');
        pbuttons.id = 'pbuttons';
        pbuttons.style.padding = '6px';
        
        var pbuttonCancel = document.createElement('button');
        pbuttonCancel.className = 'pbutton';
        pbuttonCancel.appendChild(document.createTextNode(options.labelCancel));
        pbuttonCancel.onclick = options.onCancel;
        pbuttons.appendChild(pbuttonCancel);
        
        pwindow.appendChild(pbuttons);
    }

    document.body.appendChild(pwindow);
  },
  
     linkconfirm: function(msg, url, options) {
        var options = this._extend(this.getOptions(), options || {});
        this.addOverlay();

        var pwindow = this.getWindow(options.height, options.width);

        // msg
        var pmsg = document.createElement('div');
        pmsg.className = 'pmsg';
        pmsg.style.padding = '6px';

        var pbuttons = document.createElement('div');
        pbuttons.id = 'pbuttons';
        pbuttons.style.padding = '6px';


        var pimg=document.createElement('a');
        pimg.setAttribute('href',url);
        pimg.style.margin = '3px';
        pimg.appendChild(document.createTextNode('OK'));

        pmsg.appendChild(document.createTextNode(msg));
        
        pbuttons.appendChild(pimg);
        //pmsg.appendChild(pimg);
        pwindow.appendChild(pmsg);
        pwindow.appendChild(pbuttons);
        document.body.appendChild(pwindow);

  },
  
  
  
  
  
  confirm: function(msg, options) {
    var options = this._extend(this.getOptions(), options || {});
    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    // msg
    var pmsg = document.createElement('div');
    pmsg.className = 'pmsg';
    pmsg.style.padding = '6px';
    pmsg.appendChild(document.createTextNode(msg));
    pwindow.appendChild(pmsg);

    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';
    pbuttons.style.padding = '6px';

    // ok
    var pbuttonOk = document.createElement('button');
    pbuttonOk.className = 'pbutton';
    pbuttonOk.appendChild(document.createTextNode(options.labelOk));
    pbuttonOk.onclick = options.onOk;
    pbuttons.appendChild(pbuttonOk);

    // cancel
    var pbuttonCancel = document.createElement('button');
    pbuttonCancel.className = 'pbutton';
    pbuttonCancel.appendChild(document.createTextNode(options.labelCancel));
    pbuttonCancel.onclick = options.onCancel;
    pbuttons.appendChild(pbuttonCancel);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);
    pbuttonOk.focus();
  },
  prompt: function(msg, options) {
    var opt = this.getOptions();
    opt.height = 100;
    var options = this._extend(opt, options || {});

    this.addOverlay();

    var pwindow = this.getWindow(options.height, options.width);

    // msg
    var pmsg = document.createElement('div');
    pmsg.className = 'pmsg';
    pmsg.style.padding = '6px';
    pmsg.appendChild(document.createTextNode(msg));
    pwindow.appendChild(pmsg);

    // buttons
    var pbuttons = document.createElement('div');
    pbuttons.id = 'pbuttons';
    pbuttons.style.padding = '6px';

    // input
    var pinput = document.createElement('input');
    pinput.id = 'pinput';
    pinput.style.width = '260px';
    pinput.setAttribute('type', 'text');
    pwindow.appendChild(pinput);

    // ok
    var pbuttonOk = document.createElement('button');
    pbuttonOk.className = 'pbutton';
    pbuttonOk.appendChild(document.createTextNode(options.labelOk));
    pbuttonOk.onclick = function() {
        options.onOk(pinput.value);
    };
    pbuttons.appendChild(pbuttonOk);

    // cancel
    var pbuttonCancel = document.createElement('button');
    pbuttonCancel.className = 'pbutton';
    pbuttonCancel.appendChild(document.createTextNode(options.labelCancel));
    pbuttonCancel.onclick = options.onCancel;
    pbuttons.appendChild(pbuttonCancel);

    pwindow.appendChild(pbuttons);
    document.body.appendChild(pwindow);
    pinput.focus();
  },
  addOverlay: function() {
    var poverlay = document.createElement('div');
    poverlay.id = 'poverlay';
    poverlay.style.top = '0px';
    poverlay.style.left = '0px';
    poverlay.style.position = 'absolute';
    poverlay.style.background = '#000';

    this._setOpacity(poverlay, 0.5);
    var pageSize = this._getPageSize();
    poverlay.style.height = pageSize.pageHeight+'px';
    poverlay.style.width = '100%';
    document.body.appendChild(poverlay);
  },
  removeOverlay: function() {
    document.body.removeChild(document.getElementById('poverlay'));
  },
  getWindow: function(height, width) {
    document.body.style.padding = '0';
    var pwindow = document.createElement('div');
    pwindow.id = 'pwindow';
    var pageSize = this._getPageSize();
    var pos = this._realOffset(document.body);
    pwindow.style.top = (pageSize.windowHeight/2 - height/2 + pos[1])+'px';
    pwindow.style.left = (pageSize.windowWidth/2 - width/2 + pos[0])+'px';
    pwindow.style.height = height+'px';
    pwindow.style.width = width+'px';
    pwindow.style.position = 'absolute';
    pwindow.style.background = '#fff';
    pwindow.style.border = '6px solid #ccc';
    pwindow.style.padding = '6px';
    pwindow.style.textAlign = 'center';
    return pwindow;
  },
  close: function() {
    if(document.getElementById('pwindow') != null)
    {
    this.removeOverlay();
    document.body.removeChild(document.getElementById('pwindow'));
    }
  },
  getOptions: function() {
    return {
      'height'      : 70,
      'width'       : 300,
      'labelOk'     : 'OK',
      'labelCancel' : 'Cancel',
      'labelAccept' : 'Accept',
      'labelClose'  : 'Close',
      'onOk'        : function() {
        PPrompt.close();
      },
      'onCancel'    : function() {
        PPrompt.close();
      },
      'onAccept'    : function(ogId,reloadPage) {
        //PPrompt.close();
        TM = ($('option2')) ? $('option2').checked : 0;
        alert(TM);
        if (reloadPage)
            becomeFollower(ogId,TM,reloadPage);
        else becomeFollower(ogId,TM);
      },
      'extraButton' : false
    };
  },
  _extend: function(destination, source) {
    for (var property in source) {
      destination[property] = source[property];
    }
    return destination;
  },
  _realOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.scrollTop  || 0;
      valueL += element.scrollLeft || 0;
      element = element.parentNode;
    } while (element);
    return [valueL, valueT];
  },
  _setOpacity: function(element, value){
    if (typeof element == 'string')
      element= $(element);
    if (value == 1){
      element.style.opacity = (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0 ;
      if(/MSIE/.test(navigator.userAgent) && !window.opera)
        element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi,'');
    } else {
      if(value < 0.00001) value = 0;
      element.style.opacity = value;
      if(/MSIE/.test(navigator.userAgent) && !window.opera)
        element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi,'') + 'alpha(opacity='+value*100+')';
    }
    return element;
  },
  _getPageSize: function() {
    var xScroll, yScroll;
    if (window.innerHeight && window.scrollMaxY) {
      xScroll = document.body.scrollWidth;
      yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight){
      // all but Explorer Mac
      xScroll = document.body.scrollWidth;
      yScroll = document.body.scrollHeight;
    } else {
      // Explorer Mac...would also work in Explorer 6 Strict,
      // Mozilla and Safari
      xScroll = document.body.offsetWidth;
      yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;
    if (self.innerHeight) {      // all except Explorer
      windowWidth = self.innerWidth;
      windowHeight = self.innerHeight;
    } else if (document.documentElement
    && document.documentElement.clientHeight) {
      // Explorer 6 Strict Mode
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
    }

    // for small pages with total height less then height of the viewport
    if(yScroll < windowHeight){
      pageHeight = windowHeight;
    } else {
      pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if(xScroll < windowWidth){
      pageWidth = windowWidth;
    } else {
      pageWidth = xScroll;
    }

    return {
      'pageWidth':pageWidth,
      'pageHeight':pageHeight,
      'windowWidth':windowWidth,
      'windowHeight':windowHeight,
      'yScroll':yScroll,
      'xScroll':xScroll
    };
  }
};
