﻿//Vars Global
var inputFieldValues;
var scrollX;
var scrollY;
var inputs; 
var scrollXold;
var scrollYold;
var deltaX;
var deltaY;
var animateScrollCount = 0;
var scrollAnimation;

var animateMouseCount = 0;
var deltaXMouse;
var deltaYMouse;
var mouseAnimation;
var mouseXold;
var mouseYold;
var mouseX = 0;
var mouseY = 0;

//var configNuexRoot = "http://localhost/nuex/";
var configNuexRoot = "http://www.nuex.de/";
var coreDomain = "/nuexcore.aspx";
var nsUid;  //Nuex Session UserId
var nsName; //Sessionname
var NuexReq; //Ersatz Requestobjekt
var origRequest; //Kopie des originalen Requestobjekts
var nuidCount = 0;
var movie; //InstantVoice Flash Movie
var org;
var orgHtml;
var gid;

var IE = document.all?true:false; 
var tempX = 0; 
var tempY = 0; 

function startTWatch()
{
    if (!IE) window.frames[0].document.captureEvents(Event.MOUSEMOVE) 
    window.frames[0].document.onmousemove = getMouseXY;
}

function getMouseXY(e) { 
if (IE) { // grab the x-y pos.s if browser is IE 
    tempX = window.frames[0].event.clientX + document.body.scrollLeft; 
    tempY = window.frames[0].event.clientY + document.body.scrollTop; 
    currentPos(window.frames[0].event.srcElement);
} 
else { // grab the x-y pos.s if browser is NS 
    tempX = e.pageX; 
    tempY = e.pageY;
    currentPos(e.target);
} 
if (tempX < 0){tempX = 0;} 
if (tempY < 0){tempY = 0;} 
return true;
}

// This function executes a Web request.
function ExecuteWebRequest(targetUrl)
{
    // Create the WebRequest object.
    wRequest =  new XMLHttpRequest();
    //Escape ? and & character    
    var intIndexOfMatch = targetUrl.indexOf( "&" );
    while (intIndexOfMatch != -1){
        // Relace out the current instance.
        targetUrl = targetUrl.replace( "&", "nuUND" );
        // Get the index of any next matching substring.
        intIndexOfMatch = targetUrl.indexOf( "&" );
    }    
    intIndexOfMatch = targetUrl.indexOf( "?" );
    while (intIndexOfMatch != -1){
        // Relace out the current instance.
        targetUrl = targetUrl.replace( "?", "nuFRZ" );
        // Get the index of any next matching substring.
        intIndexOfMatch = targetUrl.indexOf( "?" );
    }
    
    // Set the request Url.  
    targetUrl = encodeURIComponent(targetUrl);
    wRequest.open("GET", configNuexRoot + "wrapper.aspx?gid=" + gid + "&nuexgoto=" + targetUrl + "&nsuID=" + nsUid);
    wRequest.send(null);
    // To use executeRequest you must instantiate the
    // executor, assign it to the Web request instance,
    // then call the executeRequest function.
    // Note: Normally to make a Web request you use
    // the invoke method of the WebRequest instance.
    //var executor = new Sys.Net.XMLHttpExecutor();
    //wRequest.set_executor(executor); 
    //executor.executeRequest();
    
    //var started = executor.get_started();
}

function currentPos(ziel)
{
    try
    {
        document.getElementById("nuex_otxt").value = ziel.nuid;
    }
    catch(e){}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function replaceHrefs()
{
    ahrefs = window.frames[0].document.getElementsByTagName("a");
    imageMaps = window.frames[0].document.getElementsByTagName("area");
    doReplace(ahrefs, imageMaps);
    replaceInFrames(window.frames[0]);
}

function replaceInFrames(framePage)
{
    checkFrameRights(framePage);
    for (var i = 0; i < framePage.frames.length; i++)
    {
        try
        {
            ahrefs = framePage.frames[i].document.getElementsByTagName("a");
        }
        catch(e){ continue; }
        imageMaps = framePage.frames[i].document.getElementsByTagName("area");
        doReplace(ahrefs, imageMaps);
        if (framePage.frames[i].frames.length > 0)
        {
            replaceInFrames(framePage.frames[i]);
        }
    }
}

function checkFrameRights(framePage)
{
    var iFrames = framePage.document.getElementsByTagName("iframe");
    var Frames = framePage.document.getElementsByTagName("frame");
    if (Frames.length != 0)
    {
        return;
    }
    for (var i = 0; i < framePage.frames.length; i++)
    {
        try
        {
            framePage.frames[i].document.getElementsByTagName("a");
        }
        catch(e)
        {
            iFrames[i].parentNode.removeChild(iFrames[i]);
        }
    }
}

function doReplace(ahrefs, imageMaps)
{
    for (var i=0; i<ahrefs.length; i++)
    {
        try
        {
            var aHref = ahrefs[i];
            if (aHref.attributes["href"] == null)
            {
                continue;
            }
            var aHrefTarget = aHref.attributes["href"].value;
            
            if (aHrefTarget.substring(0,11).toLowerCase() != "javascript:" && aHrefTarget.match("mailto:") != "mailto:" && aHrefTarget.match("#") != "#")
            {        
                if (!aHref.onclick || aHref.getAttribute.onclick == "" && aHref.rp != undefined)
                {
                    aHref.onclick = generateFunc(aHrefTarget);
                    aHref.rp = "1";
                }
                else
                {
                    //aHref.getAttribute("onclick").toString()
                    var tmpTinker = aHref.onclick.toString().replace(/function/, "").replace(/{/, "").replace(/}/, "").replace(/anonymous\(\)/,"");
                    
                    //tmpTinker mit anderen Clients syncen und dort auch ausführen,
                    //die Annahme besteht, dass hRefs mit onclicks höchstwahrscheinlich
                    //KEINE Links sind die zu einem wirklichen Ziel führen (Hoffentlich):)
                    //aHref.onclick = function() { eval(tmpTinker); eval("ExecuteWebRequest(" + aHrefTarget + ");return false;") };
                     aHref.onclick = generateFunc(aHrefTarget);
                     aHref.rp = "1";
                    //aHref.onclick = function() { eval("ExecuteWebRequest('" + aHrefTarget + "');return false;") };
                }
                aHref.target = "_self";
            }
            else if (aHrefTarget.match("#") == "#" && aHref.rp != "1")
            {
                aHref.attributes["href"].value = coreDomain + "?sessionName=" + nsName + aHref.attributes["href"].value.substring(aHref.attributes["href"].value.indexOf("#"));
                aHref.rp = "1";
            }
        }
        catch(e) { }
    }
    //addEvent(aHref, "click", function() {ExecuteWebRequest(aHrefTarget); return false;} );        

    for (var i=0; i<imageMaps.length; i++)
    {
        try
        {
            var imageMap = imageMaps[i];
            var imageMapTarget = imageMap.attributes["href"].value;
            
            if (imageMapTarget.substring(0,11).toLowerCase() != "javascript:" && aHrefTarget.substring(0,1).toLowerCase() != "#")
            {        
                if (!imageMap.onclick || imageMap.getAttribute.onclick == "" && imageMap.rp != undefined)
                {
                    imageMap.onclick = generateFunc(imageMapTarget);
                    imageMap.rp = "1";
                }
                else
                {
                    var tmpTinker = imageMap.onclick.toString().replace(/function/, "").replace(/{/, "").replace(/}/, "").replace(/anonymous\(\)/,"");
                    imageMap.onclick = generateFunc(imageMapTarget);
                    imageMap.rp = "1";
                }
                imageMap.target = "_self";
            }
        }
        catch(e){ }
    }
}

function generateFunc(aHrefTarget)
{
    var myfunc = function() { ExecuteWebRequest(aHrefTarget);document.getElementById('Panel_Loading').style.display = 'block';return false; };
    return myfunc;
}

function searchFlashMovie(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }
  else
  {
    return document.getElementById(movieName);
  }
}
function getMovie()
{
    movie = searchFlashMovie('myflash');
}

function getElementByNuexId(nuid, nodes)
{
    //window.frames[0].document.getElementsByTagName('body')[0].childNodes;
    var rwert = "";
    var cNodes = nodes;
    for (var i = 0;i < cNodes.length; i++)
    {
    	if (cNodes[i].nuid != undefined && cNodes[i].nuid != "" && cNodes[i].nuid == nuid)
        {
            rwert = cNodes[i];
        }
        
        if (cNodes[i].childNodes != null && rwert == "")
        {
            rwert = getElementByNuexId(nuid, cNodes[i].childNodes);
        }
        
        if (rwert != "")
        {
            return rwert;
        }
    }
    return rwert;
}

function showVmouse(nuid)
{
    try
    {
        var domElmnt = getElementByNuexId(nuid, window.frames[0].document.getElementsByTagName('body')[0].childNodes);
        if (domElmnt != null)
        {
            if (findPos(domElmnt)[0] == 0 && findPos(domElmnt)[1] == 0)
                return;
            //domElmnt.innerHTML = 'OVER';
            //window.frames[0].document.getElementById('mouseDiv').style.left = findPos(domElmnt)[0];
            //window.frames[0].document.getElementById('mouseDiv').style.top = findPos(domElmnt)[1];
            setMousePosition(findPos(domElmnt)[0], findPos(domElmnt)[1]);
        }
    }
    catch(e){}
}

function setMousePosition(POSx,POSy)
{    
    if (POSx != mouseXold || POSy != mouseYold)
    {
        window.clearInterval(mouseAnimation);
        animateMouseCount = 0;
        //readScrollPosition();
        if (window.frames[0].document.getElementById('mouseDiv').style.left.replace(/px/g, "") != "")
        {
            mouseX = parseInt(window.frames[0].document.getElementById('mouseDiv').style.left.replace(/px/g, ""));
        }
        if (window.frames[0].document.getElementById('mouseDiv').style.left.replace(/px/g, "") != "")
        {
            mouseY = parseInt(window.frames[0].document.getElementById('mouseDiv').style.top.replace(/px/g, ""));
        }
        deltaXMouse = POSx - mouseX;
        deltaYMouse = POSy - mouseY;
        mouseAnimation = window.setInterval("animateMouseMove()", 25);
        
        //window.frames[0].scrollTo(POSx,POSy);
        mouseXold = POSx;
        mouseYold = POSy;
    }
}

function animateMouseMove()
{
    animateMouseCount++;
    if (animateMouseCount <= 40)
    {
        targetX = mouseX + Math.round(Math.sqrt(Math.sqrt(animateMouseCount / 40)) * deltaXMouse);
        targetY = mouseY + Math.round(Math.sqrt(Math.sqrt(animateMouseCount / 40)) * deltaYMouse);
        window.frames[0].document.getElementById('mouseDiv').style.left = targetX + "px";
        window.frames[0].document.getElementById('mouseDiv').style.top = targetY + "px";
    }
    else
    {        
        window.clearInterval(mouseAnimation);
        animateMouseCount = 0;
    }    
}

//function getElementByText(text, nodes)
//{
//    if (text == "") return;
//    //window.frames[0].document.getElementsByTagName('body')[0].childNodes;
//    var rwert = null;
//    var cNodes = nodes;
//    for (var i = 0;i < cNodes.length; i++)
//    {
//    	if (cNodes[i].innerHTML != undefined && cNodes[i].innerHTML != "" && cNodes[i].innerHTML.substring(0,50) == text)
//        {
//            rwert = cNodes[i];
//        }
//        
//        if (cNodes[i].childNodes != null && rwert == null)
//        {
//            rwert = getElementByText(text, cNodes[i].childNodes);
//        }
//        
//        if (rwert != null)
//        {
//            return rwert;
//        }
//    }
//    return rwert;
//}

function NuexNoticeEvent(eventType, nuid)
{
	window.status = eventType + " " + nuid;
	document.getElementById('nuex_events').value += eventType + "," + nuid + "-";
}

function NuexPlayEvents(events)
{
    var eventQueue = events.split("-");
	for (var i = 0; i < eventQueue.length; i++)
	{
	    var tmpEvent = eventQueue[i].split(",");
	    var eventType = tmpEvent[0];
	    var nuid = tmpEvent[1];
	    window.status = "Playing: " + eventType + " " + nuid;
	    var targetEl = "";
	    for (var j = 0; j < window.frames[0].frames.length; j++)
	    {
	    	targetEl = getElementByNuexId(nuid, window.frames[0].document.getElementsByTagName('body')[0].childNodes);
            if (targetEl != "")
	            break;
	        targetEl = getElementByNuexId(nuid, window.frames[0].frames[j].document.getElementsByTagName('body')[0].childNodes);
	        if (targetEl != "")
	            break;
	    }
	    if (eventType == "onclick")
	    {
	        //setTimeout(targetEl + ".onclick()", 200 * i);
	        targetEl.onclick.call(targetEl);
	    }
	    if (eventType == "onmouseover")
	    {
	        //setTimeout(targetEl + ".onmouseover()", 200 * i);
	        targetEl.onmouseover.call(targetEl);
	    }
	    if (eventType == "onmouseout")
	    {
	        //setTimeout(targetEl + ".onmouseover()", 200 * i);
	        targetEl.onmouseout.call(targetEl);
	    }
	    if (eventType == "onchange")
	    {
	        //setTimeout(targetEl + ".onmouseover()", 200 * i);
	        targetEl.onchange.call(targetEl);
	    }
	    //window.frames[0].document
	}
}

function replaceForms()
{
    var forms = window.frames[0].document.getElementsByTagName("form");
    doFormReplace(forms, window.frames[0]);
    replaceFormsInFrames(window.frames[0]);
    //for (var j = 0; j < window.frames[0].frames.length; j++)
    //{
        //forms = window.frames[0].frames[j].document.getElementsByTagName("form");
        //doFormReplace(forms);
    //}
}

function replaceFormsInFrames(startDocument)
{
    if (startDocument.frames.length > 0)
    {
        for (var i = 0; i < startDocument.frames.length; i++)
        {
            replaceFormsInFrames(startDocument.frames[i]);
        }
    }
    try
    {
        doFormReplace(startDocument.document.getElementsByTagName("form"), startDocument);
    }
    catch(e){}
}

function removeTags(tagname)
{
    org = window.frames[0].document.getElementsByTagName(tagname)
    for (var j = 0; j < org.length; j++)
    {
        var pnode = org[j].parentNode;
        pnode.removeChild(org[j]);
    }
        
    for (var i = 0; i < window.frames[0].frames.length; i++)
    {
        org = window.frames[0].frames[i].document.getElementsByTagName(tagname)
        for (var j = 0; j < org.length; j++)
        {
            var pnode = org[j].parentNode;
            pnode.removeChild(org[j]);
        }
    }
}

function timeNav(point)
{
    document.getElementById('nuex_timemark').value = point; 
}

function toggleSideBar()
{
    if (document.getElementById('Panel_SideBar_Opener').style.visibility != "visible")
    {
        openSideBar();
    }
    else
    {
        closeSideBar();
    }
    NuexUI.changeSideBarState(gid);
}

function openSideBar()
{
    document.getElementById('Panel_SideBar_Opener').style.right = "190px";
    document.getElementById('ImageButton_SidePanelOpen').src = "http://images.nuex.de/sidepanelbar.jpg";
    document.getElementById('Panel_SideBar').style.visibility = "visible";
    document.getElementById('Panel_SideBar_Opener').style.visibility = "visible";   
}

function closeSideBar()
{
    document.getElementById('Panel_SideBar_Opener').style.right = "1px";
    document.getElementById('ImageButton_SidePanelOpen').src = "http://images.nuex.de/sidepanelbar_fi.jpg";
    document.getElementById('Panel_SideBar').style.visibility = "hidden";
    document.getElementById('Panel_SideBar_Opener').style.visibility = "visible";
}

function scrollToChatEnd()
{
    var objDiv = document.getElementById('Panel_ChatOut');
    objDiv.scrollTop = objDiv.scrollHeight;
}
function startScroll() {
    scroll_iframe(0, 5, 'v');
}

var timer_id;
var oldScroll;

function scroll_iframe(frm,inc,dir) {
  if (timer_id) clearTimeout(timer_id);
  if (window.frames[frm]) {
    if (dir == "v") window.frames[frm].scrollBy(0, inc);
    else window.frames[frm].scrollBy(inc, 0);
	if (oldScroll == getIframeScrollPosition(window.frames[0])) return;
	oldScroll = getIframeScrollPosition(window.frames[0]);
    timer_id = setTimeout("scroll_iframe('" + frm + "'," + inc + ",'" + dir + "')", 400);
  }
}

function getIframeHeight(iframeWindow) {
	if (iframeWindow.document.height) {
			height = iframeWindow.document.height;
		} else if (document.all) {
		if (iframeWindow.document.compatMode &&
			iframeWindow.document.compatMode != 'BackCompat') {
			height = iframeWindow.document.documentElement.scrollHeight;
		} else {
			height = iframeWindow.document.body.scrollHeight;
		}
	}
	return height;
}

function getIframeScrollPosition(iframeWindow) {
	if (iframeWindow.document.height) {
			scrollPos = iframeWindow.pageYOffset;
		} else if (document.all) {
		if (iframeWindow.document.compatMode &&
			iframeWindow.document.compatMode != 'BackCompat') {
			scrollPos = iframeWindow.document.documentElement.scrollTop;
		} else {
			scrollPos = iframeWindow.document.body.scrollTop;
		}
	}
	return scrollPos;
}
