
MSGV.StyledPopup = function(settings){

  var log = KenzanDebug.NamedLogger("StyledPopup");
  log.debug("begin StyledPopup");

  var self = {};

  var popup = settings.popup;
  var popupPosition;
  var defaultSettings = {
    margin: 50
  }

   // settings.locationTarget is a dom element you want
   // to locate the popup near. For example, a link you click
   // on to launch the popup
   // alternatively, position it absolutely using settings.pos, which looks like this:
   // settings.pos = {
   //  left: 100,
   //  top: 100
   // }
   var pos;
   if(settings.locationTarget){
      pos = settings.locationTarget.position();
    }else{
      pos = settings.pos;
    }
    if(settings.popupPosition) {
        popupPosition = settings.popupPosition;
    } else {
        popupPosition = {
          top: Math.max(
            defaultSettings.margin,
            pos.top - popup.height() / 2
          ),
          left:  Math.max(
             defaultSettings.margin,
            pos.left - popup.width() / 2
          )
        }
    }

	var getCanvas = function(elem){ // get a jquery wrapper for whichever canvas element was drawn with liquid-canvas plugin
	  return    jq14(  elem.data("liquid-canvas")? elem.data("liquid-canvas").canvas : null );
	}

  var init = function(){
    popup.css("left", popupPosition.left).css("top", popupPosition.top);
    // round corners, dropdown, gradient with liquid canvas plugin
	  popup.liquidCanvas(
    "[gradient{from:'#f1f1f1'; to:'#a9a9a9'}] => roundedRect{radius:5}"
    );

    getCanvas(popup).hide();

    popup.find(".closeLink").click(function(){
 	    self.hide();
    });
  }

	self.show = function(){
      popup.css("display", "block");
      getCanvas(popup).css("display", "block");
      popup.css("visibility", "visible");
      getCanvas(popup).css("visibility", "visible");
      self.refresh();
	}

	self.hide = function(){

    popup.css("visibility", "hidden");
    getCanvas(popup).css("visibility", "hidden");
    popup.find(".noShowOnLoad").hide();
    popup.find("input").val("");
	}

	self.remove = function(){
    getCanvas(popup).remove();
	  popup.remove();
	}

	self.refresh = function(){
    popup.data("liquid-canvas").refresh()
	}

	init();

	return self;

}

