var planner_launch_locked = false;
var planner_lock_timeout = 5 * 1000;
var planner_last_lauch = 0;

var planner_width_fraction = 0.8;
var planner_height_fraction = 0.8;
var planner_width_min = 1024;
var planner_height_min = 620;

function openPlanner(baseurl, ctxt, language, pid, lkey) {
  if (!baseurl) {
    baseurl = "http://planner.roomsketcher.com/";
  }
  /*
  if (!ctxt) {
    ctxt = "rs_com";
  }
  */
  if (ctxt) {
    baseurl += "?ctxt=" + ctxt;
    if (language) {
      baseurl += "&language=" + language;
    }
  } else {
    if (language) {
      baseurl += "?language=" + language;
    }
  }
  
  var params = "";
  var sep = "#?";
  if (pid) {
    params = sep + "pid=" + pid;
    sep = "&";
    if (lkey) {
      params += $sep + "lkey=" + lkey; 
      sep = "&";
    }
  } 

  url = baseurl + params;
  openPlannerUrl(url);
}

function openPlannerUrl(url) {
  // Locking flag with timeout to prevent multiple opens on doubleclick
  now = new Date().getTime();
  if (planner_launch_locked==true){
    // A launch is already underway.
    if (now - planner_last_lauch < planner_lock_timeout){
      // And it's not stale either, Ignore this request.
      return;
    }
  }
  // Get the lock:
  planner_launch_locked = true;
  planner_last_lauch = now;
  
  var w = screen.availWidth * planner_width_fraction;
  if (w < planner_width_min) w = planner_width_min;
  if (w > screen.availWidth) w = screen.availWidth;
  
  var h = screen.availHeight * planner_height_fraction;
  if (h < planner_height_min) h = planner_height_min;
  if (h > screen.availheight) h = screen.availHeigth;
  
  var top = (screen.availHeight-h) /2;
  var left = (screen.availWidth-w) /2;
  
  plannerwindow = window.open(url, "planner", "resizable, width="+w+",height="+h+",left="+left+",top="+top);
  try {
    plannerwindow.focus();
  } catch (e) {
  }
  // Unlock, open requests are allowed again.
  planner_launch_locked = false;
}


