﻿//*********************************************************//
// Author:  Salma                                       //
// Date:    18/08/2008                                     //
// Purpose: Open new window for Clickback                   //
//*********************************************************//
// Author: Gundlapalli Mohan
// Modified the function to make the clickback work for 
// computed as well.
//*********************************************************//

function OpenClickBack(link, element)
{
    
    //To Generate the URL dynamically
    //var temp = document.URL;
    //var index = temp.lastIndexOf("/");
    //var temp2 = temp.substring(0,index);
    
    //var link = temp2+"/ClickBack.aspx?irow="+irow
   
    //alert(link);
    if(link !="")
    {
        //The tooltip should be hidden once the pop-up box is open
        OnHideShoreToolTip();
        // Check whether the link starts with a table.
        var searchText = null;
        searchText = link.substring(0, 7);
        //alert(searchText);
        if(searchText == "<table>")
        {
            // The link starts with the table. That means
            // the pop up window should be displayed.
            // This pop up in turn will have the links
            // to the documents from which the values are collected.
             //popCalculation(element, link);
            
            ShowShorePopUp(element, null, link);
            
        }
        else
        {
          //alert(link);
          var temp = document.URL;
          var index = temp.lastIndexOf("/");
          var temp2 = temp.substring(0,index);
          link=temp2+link;
          //alert(link);
          var newwindow = window.open(link,'cbwindow','width=1020 resizable=no location=yes scrollbars=yes');
          if (window.focus){newwindow.focus();}
      }
  }

  

}



function createCSSClass(inDocument, selector, style) {
    // using information found at: http://www.quirksmode.org/dom/w3c_css.html
    // doesn't work in older versions of Opera (< 9) due to lack of styleSheets support
    if (!inDocument.styleSheets) return;
    if (inDocument.getElementsByTagName("head").length == 0) return;
    var stylesheet;
    var mediaType;
    if (inDocument.styleSheets.length > 0) {
        for (i = 0; i < inDocument.styleSheets.length; i++) {
            if (inDocument.styleSheets[i].disabled) continue;
            var media = inDocument.styleSheets[i].media;
            mediaType = typeof media;
            // IE
            if (mediaType == "string") {
                if (media == "" || media.indexOf("screen") != -1) {
                    styleSheet = inDocument.styleSheets[i];
                }
            }
            else if (mediaType == "object") {
                if (media.mediaText == "" || media.mediaText.indexOf("screen") != -1) {
                    styleSheet = inDocument.styleSheets[i];
                }
            }
            // stylesheet found, so break out of loop
            if (typeof styleSheet != "undefined") break;
        }
    }
    // if no style sheet is found
    if (typeof styleSheet == "undefined") {
        // create a new style sheet
        var styleSheetElement = inDocument.createElement("style");
        styleSheetElement.type = "text/css";
        // add to <head>
        inDocument.getElementsByTagName("head")[0].appendChild(styleSheetElement);
        // select it
        for (i = 0; i < inDocument.styleSheets.length; i++) {
            if (inDocument.styleSheets[i].disabled) continue;
            styleSheet = inDocument.styleSheets[i];
        }
        // get media type
        var media = styleSheet.media;
        mediaType = typeof media;
    }
    // IE
    if (mediaType == "string") {
        for (i = 0; i < styleSheet.rules.length; i++) {
            // if there is an existing rule set up, replace it
            if (styleSheet.rules[i].selectorText.toLowerCase() == selector.toLowerCase()) {
                styleSheet.rules[i].style.cssText = style;
                return;
            }
        }
        // or add a new rule
        styleSheet.addRule(selector, style);
    }
    else if (mediaType == "object") {
        for (i = 0; i < styleSheet.cssRules.length; i++) {
            // if there is an existing rule set up, replace it
            if (styleSheet.cssRules[i].selectorText.toLowerCase() == selector.toLowerCase()) {
                styleSheet.cssRules[i].style.cssText = style;
                return;
            }
        }
        // or insert new rule
        styleSheet.insertRule(selector + "{" + style + "}", styleSheet.cssRules.length);
    }
}
//

function setDomain() {
    if (this.domain) {
        this.domain = 'www.companyguidance.com';
    }
}


//TOD: delete the following functions

function getSelectionHTML()
	{
	if (window.getSelection && (window.getSelection()).rangeCount == 1)
		{
		var selection_text = (window.getSelection()).toString();
		var range = (window.getSelection()).getRangeAt(0);
		var parent_html = range.commonAncestorContainer.innerHTML;
		//var b = document.createElement("b");
		//b.innerHTML = parent_html;
		//var parent_text = b.innerText || b.textContent;
		var first_text = range.startContainer.nodeValue.substr(range.startOffset);
		var last_text = (range.endContainer.nodeValue).substring(0,range.endOffset);
		var start = parent_html.indexOf(first_text);
		var end = parent_html.indexOf(last_text,start+1)+last_text.length;
		return parent_html.substring(start,end);
		}
	else if (document.selection && document.selection.createRange) return (document.selection.createRange()).htmlText;
	return null;
	}


function getRangeNode(frame) {
    var node = null;
    if (window.getSelection) {
        node = window.getSelection().anchorNode.parentNode;
    }
    else if (window.document.selection) {
        var range = frame.document.selection.createRange();
        if (range) {
            node = range.parentElement();
        }
    }
    return node;
}
function showSelectionParent(frame) {
    alert(getRangeNode(frame).innerHTML)
}
function changeText(frame, tag) {
    var range = null;
    if (window.getSelection) { // FF 
        range = window.getSelection().getRangeAt(0);
        var node = document.createElement(tag);
        node.innerHTML = range;
        range.deleteContents();
        range.insertNode(node);
    }
    else if (frame.document.selection) {
        range = frame.document.selection.createRange();
        var newText = '<' + tag + '>' + range.text + '</' + tag + '>'
        alert(newText)
        range.pasteHTML(newText)
    }
}

var __isIE = navigator.appVersion.match(/MSIE/);
var __userAgent = navigator.userAgent;
var __isFireFox = __userAgent.match(/firefox/i);
var __isFireFoxOld = __isFireFox && (__userAgent.match(/firefox\/2./i) || __userAgent.match(/firefox\/1./i));
var __isFireFoxNew = __isFireFox && !__isFireFoxOld;


function __parseBorderWidth(width) {
    var res = 0;
    if (typeof (width) == "string" && width != null && width != "") {
        var p = width.indexOf("px");
        if (p >= 0) {
            res = parseInt(width.substring(0, p));
        }
        else {
            //do not know how to calculate other values (such as 0.5em or 0.1cm) correctly now  
            //so just set the width to 1 pixel  
            res = 1;
        }
    }
    return res;
}


//returns border width for some element  
function __getBorderWidth(element) {
    var res = new Object();
    res.left = 0; res.top = 0; res.right = 0; res.bottom = 0;
    if (window.getComputedStyle) {
        //for Firefox  
        var elStyle = window.getComputedStyle(element, null);
        res.left = parseInt(elStyle.borderLeftWidth.slice(0, -2));
        res.top = parseInt(elStyle.borderTopWidth.slice(0, -2));
        res.right = parseInt(elStyle.borderRightWidth.slice(0, -2));
        res.bottom = parseInt(elStyle.borderBottomWidth.slice(0, -2));
    }
    else {
        //for other browsers  
        res.left = __parseBorderWidth(element.style.borderLeftWidth);
        res.top = __parseBorderWidth(element.style.borderTopWidth);
        res.right = __parseBorderWidth(element.style.borderRightWidth);
        res.bottom = __parseBorderWidth(element.style.borderBottomWidth);
    }

    return res;
}

//returns absolute position of some element within document  
function getAbsolutePos(element) {
    var res = new Object();
    res.x = 0; res.y = 0;
    if (element !== null) {
        res.x = element.offsetLeft;
        res.y = element.offsetTop;

        var offsetParent = element.offsetParent;
        var parentNode = element.parentNode;
        var borderWidth = null;

        while (offsetParent != null) {
            res.x += offsetParent.offsetLeft;
            res.y += offsetParent.offsetTop;

            var parentTagName = offsetParent.tagName.toLowerCase();

            if ((__isIE && parentTagName != "table") || (__isFireFoxNew && parentTagName == "td")) {
                borderWidth = __getBorderWidth(offsetParent);
                res.x += borderWidth.left;
                res.y += borderWidth.top;
            }

            if (offsetParent != document.body && offsetParent != document.documentElement) {
                res.x -= offsetParent.scrollLeft;
                res.y -= offsetParent.scrollTop;
            }

            //next lines are necessary to support FireFox problem with offsetParent  
            if (!__isIE) {
                while (offsetParent != parentNode && parentNode !== null) {
                    res.x -= parentNode.scrollLeft;
                    res.y -= parentNode.scrollTop;

                    if (__isFireFoxOld) {
                        borderWidth = kGetBorderWidth(parentNode);
                        res.x += borderWidth.left;
                        res.y += borderWidth.top;
                    }
                    parentNode = parentNode.parentNode;
                }
            }

            parentNode = offsetParent.parentNode;
            offsetParent = offsetParent.offsetParent;
        }
    }
    return res;  
}  

function getElementsByClassName(classname, node) {
    if (!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for (var i = 0, j = els.length; i < j; i++)
    //if (re.test(els[i].className)) a.push(els[i]);
        if (els[i].className == classname) a.push(els[i]);
    return a;
}

function findPosY(obj) {
    var pos = new Object();
    pos.y = 0;
    pos.x = 0;
    if (obj.offsetParent)
        while (1) {
        pos.y += obj.offsetTop;
        pos.x += obj.offsetLeft;
        obj = obj.offsetParent;
        if (!obj.offsetParent)
            break;
    }
    else if (obj.y) {
        pos.y += obj.y;
        pos.x += obj.x;
    }
    return pos;
}

function getElementPos(el, doc) {
    var pos = new Object();
    pos.y = 0;
    pos.x = 0;

    if (doc.getBoxObjectFor) {
        var bo = doc.getBoxObjectFor(el);
        pos.y = bo.y;
        pos.x = bo.x;
    }
    else {
        var rect = el.getBoundingClientRect();
        pos.y = rect.top;
        pos.x = rect.left;
    }
    
    return pos;
}


function getScrollXY(wind, doc) {
    myDoc = doc || document;
    myWind = wind || window;
    var x = 0, y = 0;
    if (typeof (myWind.pageYOffset) == 'number') {
        // Netscape
        x = myWind.pageXOffset;
        y = myWind.pageYOffset;
    } else if (myDoc.body && (myDoc.body.scrollLeft || myDoc.body.scrollTop)) {
        // DOM
        x = myDoc.body.scrollLeft;
        y = myDoc.body.scrollTop;
    }
    else if (myDoc.documentElement && 
    (myDoc.documentElement.scrollLeft || myDoc.documentElement.scrollTop)) {
        // IE6 standards compliant mode
        x = myDoc.documentElement.scrollLeft;
        y = myDoc.documentElement.scrollTop;
    }

    var obj = new Object();
    obj.x = x;
    obj.y = y;

    return obj;
}

function getMousePosition(e, doc) {
    doc = doc || document;
    var posx = 0;
    var posy = 0;
    
    e = e || window.event;
    if (e.pageX || e.pageY) {
        posx = e.pageX;
        posy = e.pageY;
    }
    else if (e.clientX || e.clientY) {
        posx = e.clientX + doc.body.scrollLeft
			+ doc.documentElement.scrollLeft;
        posy = e.clientY + doc.body.scrollTop
			+ doc.documentElement.scrollTop;
    }

    var posObj = new Object();
    posObj.x = posx;
    posObj.y = posy;

    return posObj;
}

function GetWindowSize() {
    var width = null, height = null;
    if (parseInt(navigator.appVersion) > 3) {
        if (navigator.appName == "Netscape") {
            width = window.innerWidth;
            height = window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft") != -1) {
            width = document.body.offsetWidth;
            height = document.body.offsetHeight;
        }

        var sizeObj = new Object();
        sizeObj.width = width;
        sizeObj.height = height;

        return sizeObj;
    }
}