﻿/*****************************************************************
 * Copyright (c) 2006 BP Studios, Inc. - All Rights Reserved
 *
 * @Author:        Ben Shatley
 * @Date:          05/2006
 *
 * Development Life Cycle:
 * 07/2006 – Original - BTS
 */

var IFrameManager = {
  GetAllDocuments:function(){
    var arr = new Array();
    f_get_iframedocuments_recurse(
          window.top.document, arr);
    return arr;
  },
  GetAllFrames:function(){
    var arr = new Array();
    f_get_iframes_recurse(window.top.document, arr);
    return arr;
  },
  AttachDocumentEventGlobal:function(eType, fn){
    f_iframes_attach_doc_event_recurse(
      window.top.document,eType,fn);
  },
  DetachDocumentEventGlobal:function(eType,fn){
    f_iframes_detach_doc_event_recurse(
      window.top.document,eType,fn);
  },
  GetEventDocument:function(event){
    var targ = getEventTarget(event);
    return targ.ownerDocument;
  },
  FindFrameByTarget:function(event){
    var frms = IFrameManager.GetAllFrames();
    var pos = GetMousePosition(event);
    var targ = getEventTarget(event);
    for(i = 0; i < frms.length; i++){
      var doc = getDoc(frms[i]);
      var el = doc.elementFromPoint(pos.X,pos.Y)
      if(el == targ) return frms[i];
    }
    return null;
  },
  FindTargetWindow:function(event){
    var frm = IFrameManager.FindFrameByTarget(event);
    var framewin = window.top;
    if(frm != null) framewin = frm.contentWindow;
    return framewin;
  }
};

function getDoc(frm){
			if(document.attachEvent){
				return frm.contentWindow.document;
			}else if(document.getElementById && !document.all){
				return frm.contentWindow;
			}else{ 
				return frm.contentDocument;
			}
}

function f_get_iframedocuments_recurse(doc, resArray){
  resArray.push(doc);
	var frs = doc.getElementsByTagName("iframe");
	for (var i = 0; i < frs.length; i++)
	{
		var d = getDoc(frs[i]);
		f_get_iframedocuments_recurse(d, resArray);
	}
}

function f_get_iframes_recurse(doc, resArray){
	var frs = doc.getElementsByTagName("iframe");
	for (var i = 0; i < frs.length; i++)
	{
	  resArray.push(frs[i]);
		var d = getDoc(frs[i]);
		f_get_iframes_recurse(d, resArray);
	}
}

function f_iframes_attach_doc_event_recurse(doc, eType, callback){
	if (typeof callback != 'function') return;
	if(!doc) return;
  attachEventHandler(doc,eType,callback);
	var frs = doc.getElementsByTagName("iframe");
	for (var i = 0; i < frs.length; i++)
	{
		var d = getDoc(frs[i]);
		f_iframes_attach_doc_event_recurse(d, eType, callback);
	}
}

function f_iframes_detach_doc_event_recurse(doc, eType, callback){
	if (typeof callback != 'function') return;
  detachEventHandler(doc,eType,callback);
	var frs = doc.getElementsByTagName("iframe");
	for (var i = 0; i < frs.length; i++)
	{
		var d = getDoc(frs[i]);
		f_iframes_detach_doc_event_recurse(d, eType,callback);
	}
}

