window.Modals = {
  modalList: [],
  add: function(modal) {
   this.modalList.push(modal); 
  }
};

Modal = function(id,height,width,url) {
 var myElement = $(document.createElement("div"));
  myElement.addClass("modal");
  //myElement.height(height);
  //myElement.width(width);
  myElement.append("<iframe src='"+url+"' height='100%' width='100%' style='border: 0px;'></iframe>");
  myElement.css({"position": "relative", "top": 0-$("#container").height()+"px", "left": "0px" ,"z-index":"1000"});
  myElement.attr("id", "modal_"+id);
  myElement.draggable({ containment: "#container" })
  $("#container").append(myElement);
  //myElement.resizable({animate: true});
  return this;
}

function CreateModal(url) {
  myModal = new Modal(1,600,1200,url);
  window.Modals.add(myModal);
  
}

RunSearch = function(e, inputObj,searchUrl) {
  $(Shared.GetTargetElement(e)).attr("url",searchUrl + "?search="+inputObj.val());
  $OpenUrl(e,{'title':'Search Results'});
}
  OpenModal = function(event, properties) {
    if(event!={}) { Shared.CancelEvent(event); }
    var uId = new Date();
    uId = uId.getTime().toString()+"_title";
    var target = $(Shared.GetTargetElement(event));
    var url = null;
    if(target.attr("url")==null && target.attr("href")==null && event!={}) {
      var parent = target.parent();
      if(parent.length>0 && parent[0].tagName=="SPAN") { parent = parent.parent(); }
      url = parent.attr("externalUrl") || parent.attr("url") || parent.attr("href");
    } else if(target.attr("url")!=null && properties.url==null) {
      url=target.attr("url");
    } else if(target.attr("href")!=null && properties.url==null) {
      url=target.attr("href");
    } else if(properties.url!=null) {
      url=properties.url;
    }
    target.attr("Url",url); 
    properties.title = "<div style='display:none' id='"+uId+"'>PDoran</div>";
    if(url!=null) {  properties.url = url; }
    if(properties.isSearch==null || !properties.isSearch) {
      properties.loadHandler = function(event) { ModalLoadHandler(event,uId); };
    }
    if(event!= {} || (target!=null && (target[0].tagName=="SPAN" || target[0].tagName=="H3") )) { event={}; }
    if(top==null) {
      $OpenUrl(event, properties);
    } else {
     top.$OpenUrl(event, properties);
    }
    
  }

  ModalLoadHandler = function(event,id) {
    try {
   var doc = Shared.GetFrameDocument(event.target);
   var title = doc.title;
   var modalHandleObj = $("#"+id);
   var modalHandleObjParent = modalHandleObj.parent();
    /*if(modalHandleObjParent[0].tagName!="LI") {
     throw("Not an LI for id " + id + " " +  modalHandleObjParent[0].tagName);
    }*/
    var history_count = modalHandleObj.attr("history_count");
    if(history_count!=null && history_count>0 && title) {
      if(modalHandleObj.attr("url")!=doc.location.href) {
        history_count++;
       modalHandleObjParent.html("<a href='#' onclick='ModalBack(event);' class='modal_back'>< Back <div  class='hidden_modal_handler' style='display:none' url='"+doc.location.href+"' id='"+id+"' history_count='"+history_count+"'></div></a>");
      }
    } else if(modalHandleObj.attr("url")!=null && modalHandleObj.attr("url")!=doc.location.href && modalHandleObj.attr("is_back")!="1") {
        history_count++;
        modalHandleObjParent.html("<a href='#' onclick='ModalBack(event);' class='modal_back'>< Back <div  class='hidden_modal_handler' style='display:none' url='"+doc.location.href+"' id='"+id+"' history_count='"+history_count+"'></div></a>");
    }
    else {
      modalHandleObjParent.html("<div class='hidden_modal_handler' style='display:none' id='"+id+"' url='"+doc.location.href+"' history_count='0'></div></a>");
    }
  } catch(e) {
    alert("Error loading modal. " + e.toString());    
  }

  }
  ModalBack = function(event) {
      
      Shared.CancelEvent(event);
      var doc = $(Shared.GetTargetElement(event));
      var iframe = doc.parents("div.wl_modal").find("iframe");
      var div = doc.children(".hidden_modal_handler");
      var history_count= div.attr("history_count")-1;
      div.attr("history_count",history_count);
      div.attr("is_back","1");
      Shared.GetDocumentWindow(Shared.GetFrameDocument(iframe[0])).history.back();
      
  } 

