// JavaScript Document
var topZ = 100;
var startX;
var startY;
startX = 100;
startY = 100;
nextID = 1;

function findParentDiv(obj) {
    while (obj) {
        if (obj.tagName.toUpperCase() == "DIV") {
            return obj;
        }

        if (obj.parentElement) {
            obj = obj.parentElement;
        }
        else {
            return null;
        }
    }
    return null;
}

function findParentTagById(obj, parentname) {
    while (obj) {
        if (obj.id.match(parentname)) {
            return obj;
        }

        if (obj.parentElement) {
            obj = obj.parentElement;
        }
        else {
            return null;
        }
    }
    return null;
}

function AddPx(num) {
    return String(num) + "px";
}



/*
	resloc - url to resource
	isdoc - is this resource viewed inside the popup or loaded externally
	warning - if isdoc=true then what type of file did we open? pdf, general,
	isgated - is this resource gated
	these 3 are passed through popwindow to getview()
*/
function popwindow(resloc,isdoc,warning,isgated) {
    var newdiv;
    newdiv = document.createElement("div");
    newdiv.id = "dynPoppedWindow";
    newdiv.className = "dynPoppedWindow";
    newdiv.style.width = "130px";
    newdiv.style.left = AddPx(startX);
    newdiv.style.top = AddPx(startY);
    newdiv.style.zIndex = topZ;
    newdiv.innerHTML =
		'<div class="popup_tl"><img border="0" src="http://www.pentaho.com/images/spacer.png" class="popup_spacer_top" /></div>' +
		'<div class="popup_tmdl" id="popuptitle">&nbsp;</div>' +
		'<div class="popup_tr"><img border="0" src="http://www.pentaho.com/images/spacer.png" class="popup_spacer_top" /></div>';

	// IE doesn't support addEventListener, so check for its presence
	if (newdiv.addEventListener) {
		// firefox, etc.
		newdiv.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
		newdiv.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
		newdiv.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
	}
	else {
		// IE
		newdiv.attachEvent("onmousemove", function(e) { return mouseMove(e) });
		newdiv.attachEvent("onmousedown", function(e) { return mouseDown(e) });
		newdiv.attachEvent("onmouseup", function(e) { return mouseUp(e) });
	}
	document.body.appendChild(newdiv);

    var newdiv2;
    newdiv2 = document.createElement("div");
    newdiv2.id = "dynPoppedWindowContent";
    newdiv2.className = "dynPoppedWindowContent";
    newdiv2.style.width = "130px";
    newdiv2.style.left = AddPx(startX);
    newdiv2.style.top = AddPx(startY + 28);
    newdiv2.style.zIndex = topZ;
    newdiv2.innerHTML =
		'<div class="dynPoppedWindowContainer" id="dynPoppedWindowContainer""><iframe src="" name="viewframe" id="viewframe" class="viewframe" frameborder="0" scrolling="no" style="margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; width:120px;"></iframe></div>' +
		'<div class="popup_bl"><img border="0" src="http://www.pentaho.com/images/spacer.png" class="popup_spacer_float" /></div>' +
		'<div class="popup_bmdl" id="popupfooter"><img border="0" src="http://www.pentaho.com/images/spacer.png" class="popup_spacer_float" /></div>' +
		'<div class="popup_br"><img border="0" src="http://www.pentaho.com/images/spacer.png" class="popup_spacer_float" /></div>';

	if (newdiv2.addEventListener) {
		// firefox, etc.
		newdiv2.addEventListener("mousedown", function(e) { return contentMouseDown(e) }, true);
	}
	else {
		// IE
		newdiv2.attachEvent("onmousedown", function(e) { return contentMouseDown(e) });
	}
    document.body.appendChild(newdiv2);

    // Save away the content DIV into the title DIV for
    // later access, and vice versa
    newdiv.content = newdiv2;
    newdiv2.titlediv = newdiv;

    topZ += 1;
    startX += 25;
    startY += 28;

	// set source
	if(resloc == "contact") {
		getContact(resloc,isdoc,warning,isgated);
	} else if(resloc == "hosted_demo") {
		getDemo(resloc,isdoc,warning,isgated);
	} else {
		getView(resloc,isdoc,warning,isgated);
	}

}
/*
	passed in from popwindow()
	resloc - url to resource
	isdoc - is this resource viewed inside the popup or loaded externally
	isgated - is this resource gated
	warning - if isdoc=true then what type of file did we open? pdf, general,
*/

function getView(resloc,isdoc,warning,isgated) {
	var viewer = document.getElementById("viewframe");
	var viewerDiv = document.getElementById("dynPoppedWindowContainer");

	var gateCookie = (isgated) ? get_cookie("assetGate"):true; // if resloc isgated check for cookie otherwise set gateCookie true to allow thru - used for after form as well

	if(gateCookie) {
		if(isdoc) {
			if(warning) {
				// show a warning box for the doc were grabbing
				var viewW = 600;
				var viewH = 150;
				var viewTitle = "";

				// be able to pass url with params as param of url
				var resloc_withAND = resloc.replace(/[\&]/g,'__-__');

				switch(warning) {
					case "pdf":
						// for pdf files
						viewTitle = divwindow["pdf-warning-title"];
						viewer.src = "http://www.pentaho.com/" + generalValues["script-lang"] + "warnings/pdf.php?resloc=" + resloc_withAND;
					break;
					case "audio":
						// generic warning
						viewTitle = divwindow["audio-warning-title"];
						viewer.src = "http://www.pentaho.com/" + generalValues["script-lang"] + "warnings/audio.php?resloc=" + resloc_withAND;
					break;
					case "gen":
						// generic warning
						viewTitle = divwindow["generic-warning-title"];
						viewer.src = "http://www.pentaho.com/" + generalValues["script-lang"] + "warnings/gen.php?resloc=" + resloc_withAND;
					break;
					default:
						// generic warning
						viewTitle = divwindow["generic-warning-title"];
						viewer.src = "http://www.pentaho.com/" + generalValues["script-lang"] + "warnings/gen.php?resloc=" + resloc_withAND;
					break;
				}
				buildPopUp(viewTitle,viewW,viewH)
				// trigger doc
				var pagedemo = window.open(resloc, 'pentahoWindow', 'toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1');
			}
		} else {
			viewer.src = resloc;
		}
	} else {
		viewer.src = generalValues["script-lang"] + "forms/controllers/legacy.php?resloc=" + resloc + "&isdoc=" + isdoc + "&warning=" + warning + "&isgated=" + isgated;
		buildPopUp(divwindow["about-you"],640,770);
	}
}

/*
	resloc = contact
	isdoc = not used
	warning = leadsource/type of contact form (sales,media,training,etc)
	isgated = not used
*/

function getContact(resloc,isdoc,warning,isgated) {
	var viewer = document.getElementById("viewframe");
	var viewerDiv = document.getElementById("dynPoppedWindowContainer");

	viewer.src = 'http://www.pentaho.com/' + generalValues["script-lang"] + "forms/controllers/legacy.php?resloc=" + resloc + "&isdoc=" + isdoc + "&warning=" + warning + "&isgated=" + isgated + '&asset=' + warning;
	// popup sizes
	var popupW = 0;
	var popupH = 0;
	switch(warning) {
		case "Contact_Us_Employment":
			popupW = 630;
			popupH = 260;
		break;
		case "Contact_Us_Website":
			popupW = 630;
			popupH = 260;
		break;
		case "Contact_Us_Media":
			popupW = 630;
			popupH = 260;
		break;
		case "Contact_Us_Community":
			popupW = 630;
			popupH = 260;
		break;
		default:
			popupW = 640;
			popupH = 770;
		break;
	}
	buildPopUp(divwindow["about-you"],popupW,popupH);

}

/*
	resloc = hosted_demo
	isdoc = not used yet
	warning = leadsource/type of contact form (sales,media,training,etc)
	isgated = not used
*/

function getDemo(resloc,isdoc,warning,isgated) {
	var gateCookie = (isgated) ? get_cookie("assetGate"):true;
	if(gateCookie) {
		getView('http://www.pentaho.com/confirmed/hosted_demo.php',false,warning,false);
		checkLock();
	} else {
		var viewer = document.getElementById("viewframe");
		var viewerDiv = document.getElementById("dynPoppedWindowContainer");

		viewer.src = generalValues["script-lang"] + "forms/controllers/legacy.php?resloc=" + resloc + "&isdoc=" + isdoc + "&warning=" + warning + "&isgated=" + isgated;

		buildPopUp(divwindow["about-you"],640,770);
	}

}

function browseragain() {
	var bappName = navigator.appName;
	var bappVersion = navigator.appVersion;
	var browserval = false;
	var doctype = "";
	var docversion = 0;
	var docimportance = "";

	if(bappName.indexOf("Microsoft Internet Explorer") > -1) {
		if(bappVersion.indexOf("MSIE 6") > -1) {
			browserval = "MSIE6";
		} else if(bappVersion.indexOf("MSIE 7") > -1) {
			browserval = "MSIE7";
		}
	}
	var myversionInfo=detectDoctype();
	if(myversionInfo != null) {
		doctype = myversionInfo.xhtml;
		docversion = myversionInfo.version;
		docimportance = myversionInfo.importance;
	}
	return { browserval:browserval, doctype:doctype, docversion:docversion, docimportance:docimportance };
}

/******************************
Version info "object"
******************************/
function versionInfo() {
	this.xhtml="";
	this.version="";
	this.importance="";
}
function detectDoctype() {
	var re=/\s+(X?HTML)\s+([\d\.]+)\s*([^\/]+)*\//gi;
	var myversionInfo=new versionInfo();
	/*********************************************
	Just check for internet explorer.
	**********************************************/
	if(typeof document.namespaces != "undefined") {
		if(document.all[0].nodeType==8)
			re.exec(document.all[0].nodeValue);
		else
			return null;
	} else {
		if(document.doctype != null)
			re.exec(document.doctype.publicId);
		else
			return null;
	}
	myversionInfo.xhtml=RegExp.$1;
	myversionInfo.version=RegExp.$2;
	myversionInfo.importance=RegExp.$3;
	return myversionInfo;
}

function buildPopUp(viewTitle,viewW,viewH) {
	var browservals = browseragain();
	var doctype = browservals.doctype.toLowerCase();
	var agent = browservals.browserval;

	var widthAdjustment = 22;

	// set pop title
	var popTitle = document.getElementById("popuptitle");
	popTitle.innerHTML = '<span style="float:left">' + viewTitle +
	'</span><a style="float:right;" href="javascript:dynpopup();" title="' + divwindow["close-popup"] + '" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'closeThis\',\'\',\'http://www.pentaho.com/images/demos/btn_close_float_hover.png\',1)"><img src="http://www.pentaho.com/images/demos/btn_close_float.png" alt="' + divwindow["close-popup"] + '" name="closeThis" width="14" height="14" border="0"></a>';

	// set width of title center slot
		// dynPoppedWindow
		var topContainer = document.getElementById("dynPoppedWindow");
		topContainer.style.display = "block";
		if(agent == "MSIE7") {
			if(doctype == "xhtml") {
				widthAdjustment = 21;
			} else if(doctype == "html") {
				widthAdjustment = 22;
			}
		} else if(agent == "MSIE6") {
			if(doctype == "xhtml") {
				widthAdjustment = 21;
			} else if(doctype == "html") {
				widthAdjustment = 23;
			}
		} else {
			if(doctype == "xhtml") {
				widthAdjustment = 22;
			} else if(doctype == "html") {
				widthAdjustment = 22;
			}
		}
		topContainer.style.width = (viewW + widthAdjustment) + "px";
		// popuptitle
		popTitle.style.width = viewW + "px";

	// set width and height of content area
		// dynPoppedWindowContent
		var mainContainerBox = document.getElementById("dynPoppedWindowContent");
		mainContainerBox.style.display = "block";
		mainContainerBox.style.width = (viewW + 22) + "px";
		mainContainerBox.style.height = (viewH + 19) + "px";
		// dynPoppedWindowContainer
		var mainContainer = document.getElementById("dynPoppedWindowContainer");
		/*mainContainer.style.width = (viewW + 21) + "px";23 23 21*/
		if(agent == "MSIE7") {
			if(doctype == "xhtml") {
				widthAdjustment = 21;
			} else if(doctype == "html") {
				widthAdjustment = 21;
			}
		} else if(agent == "MSIE6") {
			if(doctype == "xhtml") {
				widthAdjustment = 21;
			} else if(doctype == "html") {
				widthAdjustment = 24;
			}
		} else {
			if(doctype == "xhtml") {
				widthAdjustment = 21;
			} else if(doctype == "html") {
				widthAdjustment = 21;
			}
		}
		mainContainer.style.width = (viewW + widthAdjustment) + "px";
		mainContainer.style.height = (viewH + 18) + "px";

	// set width of footer center slot
		// popupfooter
		var popFooter = document.getElementById("popupfooter");
		popFooter.style.width = viewW + "px";

	// set iframe width and height
		// viewframe
		var viewer = document.getElementById("viewframe");
		viewer.style.width = viewW + "px";
		viewer.style.height = viewH + "px";
	// set position in middle of viewable area
		var topWin = document.getElementById("dynPoppedWindow");
		var bottomWin = document.getElementById("dynPoppedWindowContent");
		var docW = document.body.clientWidth || document.width;
		topWin.style.left = (docW/2) - (topWin.offsetWidth/2) + "px";
		bottomWin.style.left = (docW/2) - (bottomWin.offsetWidth/2) + "px";

		var viewerY = self.pageYOffset ? self.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body ? document.body.scrollTop : null;
		topWin.style.top = viewerY + 50 + "px";
		bottomWin.style.top = viewerY + 78 + "px";

	// make the dynpop visible
		var dynPoppedWindow = document.getElementById("dynPoppedWindow");
		dynPoppedWindow.style.visibility = "visible";
		var dynPoppedWindowContent = document.getElementById("dynPoppedWindowContent");
		dynPoppedWindowContent.style.visibility = "visible";
}

// Drag methods
var dragObjTitle = null;
var dragOffsetX = 0;
var dragOffsetY = 0;

function contentMouseDown(e) {
    // Move the window to the front
    // Use a handy trick for IE vs FF
    var dragContent = e.srcElement || e.currentTarget;
    if ( ! dragContent.id.match("dynPoppedWindowContent")) {
        dragContent = findParentTagById(dragContent, "dynPoppedWindowContent");
    }
    if (dragContent) {
        dragContent.style.zIndex = topZ;
        dragContent.titlediv.style.zIndex = topZ;
        topZ++;
    }
}

function mouseDown(e) {
    // These first two lines are written to handle both FF and IE
    //var curElem = e.srcElement || e.target;
	var curElem = document.getElementById("dynPoppedWindow");
    var dragTitle = e.currentTarget || findParentDiv(curElem);
    if (dragTitle) {
        if (dragTitle.className != 'dynPoppedWindow') {
			return;
        }
    }

    // Start the drag, but first make sure neither is null
    if (curElem && dragTitle) {

        // Attach the document handlers. We don't want these running all the time.
        addDocumentHandlers(true);

        // Move this window to the front.
        dragTitle.style.zIndex = topZ;
        dragTitle.content.style.zIndex = topZ;
        topZ++;

        // Check if it's the button. If so, don't drag.
        if (curElem.className != "divTitleButton") {

            // Save away the two objects
            dragObjTitle = dragTitle;

            // Calculate the offset
            dragOffsetX = e.clientX -
                dragTitle.offsetLeft;
            dragOffsetY = e.clientY -
                dragTitle.offsetTop;

            // Don't let the default actions take place
            if (e.preventDefault) {
                e.preventDefault();
            }
            else {
                document.onselectstart = function () { return false; };
                e.cancelBubble = true;
                return false;
            }
        }
    }
}

function mouseMove(e) {
    // If not null, then we're in a drag
    if (dragObjTitle) {

        if (!e.preventDefault) {
            // This is the IE version for handling a strange
            // problem when you quickly move the mouse
            // out of the window and let go of the button.
            if (e.button == 0) {
                finishDrag(e);
                return;
            }
        }

        dragObjTitle.style.left = AddPx(e.clientX - dragOffsetX);
        dragObjTitle.style.top = AddPx(e.clientY - dragOffsetY);
        dragObjTitle.content.style.left = AddPx(e.clientX - dragOffsetX);
        dragObjTitle.content.style.top = AddPx(e.clientY - dragOffsetY + 28);
        if (e.preventDefault) {
            e.preventDefault();
        }
        else {
            e.cancelBubble = true;
            return false;
        }
    }
}

function mouseUp(e) {
    if (dragObjTitle) {
        finishDrag(e);
    }
}

function finishDrag(e) {
    var finalX = e.clientX - dragOffsetX;
    var finalY = e.clientY - dragOffsetY;
    if (finalX < 0) { finalX = 0 };
    if (finalY < 0) { finalY = 0 };

    dragObjTitle.style.left = AddPx(finalX);
    dragObjTitle.style.top = AddPx(finalY);
    dragObjTitle.content.style.left = AddPx(finalX);
    dragObjTitle.content.style.top = AddPx(finalY + 28);

    // Done, so reset to null
    dragObjTitle = null;
    addDocumentHandlers(false);
    if (e.preventDefault) {
        e.preventDefault();
    }
    else {
        document.onselectstart = null;
        e.cancelBubble = true;
        return false;
    }
}
function addDocumentHandlers(addOrRemove) {
    if (addOrRemove) {
        if (document.body.addEventListener) {
            // firefox, etc.
            document.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
            document.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
            document.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
        }
        else {
            // IE
            document.onmousedown = function() { mouseDown(window.event) } ;
            document.onmousemove = function() { mouseMove(window.event) } ;
            document.onmouseup = function() { mouseUp(window.event) } ;
        }
    }
    else {
        if (document.body.addEventListener) {
            // firefox, etc.
            document.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
            document.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
            document.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
        }
        else {
            // IE
            // Be careful here. If you have other code that sets these events,
            // you'll want this code here to restore the values to your other handlers,
            // rather than just clear them out.
            document.onmousedown = null;
            document.onmousemove = null;
            document.onmouseup = null;
        }
    }
}
function dynpopup() {
	// safari leaves the iframe after this call so lets clear the src to prevent that
	var viewer = document.getElementById("viewframe");
	viewer.src = "";

	var dynPoppedWindow = document.getElementById("dynPoppedWindow");
	dynPoppedWindow.style.visibility = "hidden";
	dynPoppedWindow.style.display = "none";
	var dynPoppedWindowContent = document.getElementById("dynPoppedWindowContent");
	dynPoppedWindowContent.style.visibility = "hidden";
	dynPoppedWindowContent.style.display = "none";

}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function checkLock() {
	var x = get_cookie('assetGate');

	var gatedLinks = getElementsByClassName(document, "a", "lockedLink");
	var gatedButtons = getElementsByClassName(document, "a", "button_locked");
	if(x.length < 1) {
		// non tabbed locked links
		for(var g=0; g < gatedLinks.length; ++g) {
			gatedLinks[g].className = "lockedLink";
		}
		// tabbed demos page
		for(var g=0; g < gatedButtons.length; ++g) {
			gatedButtons[g].className = "button_locked";
		}
	} else {
		// non tabbed
		for(var g=0; g < gatedLinks.length; ++g) {
			gatedLinks[g].className = "unlockedLink";
		}
		// tabbed
		for(var g=0; g < gatedButtons.length; ++g) {
			gatedButtons[g].className = "button_unlocked";
		}
	}
}

/*
	getElementsByClassName
	Written by Jonathan Snook, http://www.snook.ca/jonathan
*/

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}



