﻿/**************************************************************************
COPYRIGHT          : CWC
**************************************************************************
Page               : CommonFunctions.js
**************************************************************************
Purpose            :.Js file which provides javascript functions for showing layer
Author             : Pavithra
Date of Creation   : 8-12-2009
*************************************************************************
Revision History Date of Modification Done By  Changes
*************************************************************************

**************************************************************************/

function getStyleObject(objectId) {

    // cross-browser function to get an object's style object given its id

    if (document.getElementById && document.getElementById(objectId)) {

        // W3C DOM

        return document.getElementById(objectId).style;

    } else if (document.all && document.all(objectId)) {

        // MSIE 4 DOM

        return document.all(objectId).style;

    } else if (document.layers && document.layers[objectId]) {

        // NN 4 DOM.. note: this won't find nested layers

        return document.layers[objectId];

    } else {

        return false;

    }

} // getStyleObject



function changeObjectVisibility(objectId, newVisibility) {

    // get a reference to the cross-browser style object and make sure the object exists

    var styleObject = getStyleObject(objectId);

    if (styleObject) {

        styleObject.visibility = newVisibility;

        return true;

    } else {

        // we couldn't find the object, so we can't change its visibility

        return false;

    }

} // changeObjectVisibility



function moveObject(objectId, newXCoordinate, newYCoordinate) {

    // get a reference to the cross-browser style object and make sure the object exists

    var styleObject = getStyleObject(objectId);

    if (styleObject) {

        var clientWidth = document.body.clientWidth;

        if (newXCoordinate + 336 > clientWidth) {

            newXCoordinate = clientWidth - 386;

        }

        styleObject.left = newXCoordinate + "px";

        styleObject.top = newYCoordinate + "px";

        return true;

    } else {
        // we couldn't find the object, so we can't very well move it

        return false;
    }

} // moveObject



var xOffset = 30;

var yOffset = 5;

function ShowToolTipImageForTireDetails(targetObjectId, eventObj, Div, AttributeType) {

    xOffset = 10;
    yOffset = 20;
    
    if (eventObj) 
    {
        // hide any currently-visible popups
        hideCurrentPopup();

        // stop event from bubbling up any farther
        eventObj.cancelBubble = true;
        // move popup div to current cursor position
        // (add scrollTop to account for scrolling for IE)

        var newXCoordinate = (eventObj.pageX) ? (eventObj.pageX + xOffset) : (eventObj.clientX + xOffset);

        var newYCoordinate = (eventObj.pageY) ? (eventObj.pageY + yOffset) : (eventObj.clientY + yOffset + ((document.documentElement.scrollTop) ? document.documentElement.scrollTop : 0));

        moveObject(targetObjectId, newXCoordinate , newYCoordinate);
        document.getElementById(targetObjectId).style.display = 'block';
        if (changeObjectVisibility(targetObjectId, 'visible')) 
        {
            // if we successfully showed the popup store its Id on a globally-accessible object
            window.currentlyVisiblePopup = targetObjectId;
            return false;
        }
        else 
        {
            return false;
        }
    }
    else 
    {
        return false;
    }
}


function ShowToolTipImage(targetObjectId, eventObj, Div, AttributeType) {

    //xOffset = -50;
    //yOffset = 20;
    
    if (eventObj) {

        // hide any currently-visible popups
        hideCurrentPopup();

        // stop event from bubbling up any farther
        eventObj.cancelBubble = true;
        // move popup div to current cursor position
        // (add scrollTop to account for scrolling for IE)
        var newXCoordinate = (eventObj.pageX) ? (eventObj.pageX + xOffset) : (eventObj.clientX + xOffset);
        var newYCoordinate = (eventObj.pageY) ? (eventObj.pageY + yOffset) : (eventObj.clientY + yOffset + ((document.documentElement.scrollTop) ? document.documentElement.scrollTop : 0));

        //alert("X=" + newXCoordinate, ",Y=" + newYCoordinate);
        //alert(newYCoordinate);
        moveObject(targetObjectId, newXCoordinate, newYCoordinate);
        document.getElementById(targetObjectId).style.display = 'block';
        if (changeObjectVisibility(targetObjectId, 'visible')) {
            // if we successfully showed the popup
            // store its Id on a globally-accessible object
            window.currentlyVisiblePopup = targetObjectId;
            return false;
        }
        else {
            // we couldn't show the popup, boo hoo!
            return false;
        }

    }
    else {
        // there was no event object, so we won't be able to position anything, so give up
        return false;
    }
}

function showToolTip(targetObjectId, eventObj, Div, AttributeType, URL) {

    xOffset = 30;
    yOffset = 5;
    
    if (eventObj) {

        // hide any currently-visible popups

        hideCurrentPopup();

        // stop event from bubbling up any farther

        eventObj.cancelBubble = true;

        // move popup div to current cursor position

        // (add scrollTop to account for scrolling for IE)

        var newXCoordinate = (eventObj.pageX) ? (eventObj.pageX + xOffset) : (eventObj.clientX + xOffset);

        var newYCoordinate = (eventObj.pageY) ? (eventObj.pageY + yOffset) : (eventObj.clientY + yOffset + ((document.documentElement.scrollTop) ? document.documentElement.scrollTop : 0));


        moveObject(targetObjectId, newXCoordinate, newYCoordinate);


        var xml = DoCallback(AttributeType, URL);
        //Place data in a string
        var Response = xml.responseText;

        if (Response.length == 0) {
            document.getElementById(targetObjectId).style.display = 'none';
        }
        else {
            document.getElementById(targetObjectId).style.display = 'block';
            document.getElementById(Div).innerHTML = xml.responseText;
        }
        if (changeObjectVisibility(targetObjectId, 'visible')) {

            // if we successfully showed the popup

            // store its Id on a globally-accessible object

            window.currentlyVisiblePopup = targetObjectId;

            return false; ;

        } else {

            // we couldn't show the popup, boo hoo!

            return false;

        }

    } else {

        // there was no event object, so we won't be able to position anything, so give up

        return false;

    }

}



function moveImage(objectId, PageSize, PageScoll) {

    // Xwidth is the width of the div, Yheight is the height of the
    // div passed as arguments to the function:

    var leftoffset = PageScoll[0] + (PageSize[2] - 350) / 2;
    var topoffset = PageScoll[1] + (PageSize[3] - 400) / 2;
    // the initial width and height of the div can be set in the 
    // style sheet with display:none; divid is passed as an argument to // the function
    var styleObject = document.getElementById(objectId);
    var r = styleObject.style;
    r.top = topoffset + 'px';
    r.left = leftoffset + 'px';
}

function showEnlargeImage(FadeDiv, targetObjectId, event, Image, URL, hdnTireName, lblName) {
    document.getElementById(lblName).innerHTML = document.getElementById(hdnTireName).value;
    var arrayPageSize = getPageSize();
    var PageScoll = getPageScroll();
    document.getElementById(Image).src = URL;
    URL = document.getElementById(Image).src.replace('~/', '');
    document.getElementById(Image).src = URL;
    document.getElementById(FadeDiv).style.display = 'block';
    moveImage(targetObjectId, arrayPageSize, PageScoll);
    document.getElementById(FadeDiv).style.height = arrayPageSize[1] + "px";
    document.getElementById(targetObjectId).style.display = 'block';
    return false;
}

function CloseEnlargeImage(FadeDiv, targetObjectId) {
    document.getElementById(FadeDiv).style.display = 'none';
    document.getElementById(targetObjectId).style.display = 'none';

    return false;
}

function hideCurrentPopup() {

    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup

    if (window.currentlyVisiblePopup) {

        changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');

        window.currentlyVisiblePopup = false;

    }

} // hideCurrentPopup





// initialize hacks whenever the page loads

window.onload = initializeHacks;



// setup an event handler to hide popups for generic clicks on the document

document.onclick = hideCurrentPopup;



function initializeHacks() {

    // this ugly little hack resizes a blank div to make sure you can click

    // anywhere in the window for Mac MSIE 5

    if ((navigator.appVersion.indexOf('MSIE 5') != -1)

            && (navigator.platform.indexOf('Mac') != -1)

            && getStyleObject('blankDiv')) {

        window.onresize = explorerMacResizeFix;

    }

    resizeBlankDiv();

    // this next function creates a placeholder object for older browsers

    createFakeEventObj();

}



function createFakeEventObj() {

    // create a fake event object for older browsers to avoid errors in function call

    // when we need to pass the event object to functions

    if (!window.event) {

        window.event = false;

    }

} // createFakeEventObj



function resizeBlankDiv() {

    // resize blank placeholder div so IE 5 on mac will get all clicks in window

    if ((navigator.appVersion.indexOf('MSIE 5') != -1)

            && (navigator.platform.indexOf('Mac') != -1)

            && getStyleObject('blankDiv')) {

        getStyleObject('blankDiv').width = document.body.clientWidth - 20;

        getStyleObject('blankDiv').height = document.body.clientHeight - 20;

    }

}



function explorerMacResizeFix() {

    location.reload(false);

}


function DoCallback(AttributeType, URL) {

    var pageUrl = URL + "&AttributeType=" + AttributeType;
    try {
        //Mozilla Browsers
        xmlRequest = new XMLHttpRequest();
    }
    catch (e) {
        try {
            //IE

            xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
            // Branch for native XMLHttpRequest object
        }
        catch (e) {
            //Something else that won't work with this code...
            xmlRequest = false;
        }
    }
    // Post our XmlRequest and get our desired string
    xmlRequest.open("GET", pageUrl, false);
    xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlRequest.send(null);
    // Return the XmlHttp object

    return xmlRequest;
}








//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll() {

    var yScroll;

    if (self.pageYOffset) {
        yScroll = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
        yScroll = document.documentElement.scrollTop;
    } else if (document.body) {// all other Explorers
        yScroll = document.body.scrollTop;
    }

    arrayPageScroll = new Array('', yScroll)
    return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize() {


    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;
    if (self.innerHeight) {	// all except Explorer
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }

    // for small pages with total height less then height of the viewport
    if (yScroll < windowHeight) {
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if (xScroll < windowWidth) {
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }


    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
    return arrayPageSize;
}


