// Copyright 1998-2006 XCENT - Common JavaScript Library
gsCommonLibVersion = '1.0.1';
giHelpWindowWidth = 450;
giHelpWindowHeight = 450;
glMouseX = 50; //Default mouse position
glMouseY = 50;

gbBrowserIE = false;
gbBrowserNS = false;
gsBrowserVersion = null;
gsBroswerUserAgent = navigator.userAgent;
if ((i = gsBroswerUserAgent.indexOf('MSIE')) >= 0) {
    gbBrowserIE = true;
    gsBrowserVersion = parseFloat(gsBroswerUserAgent.substr(i + 'MSIE'.length));
}
if ((i = gsBroswerUserAgent.indexOf('Netscape6/')) >= 0) {
    gbBrowserNS = true;
    gsBrowserVersion = parseFloat(gsBroswerUserAgent.substr(i + 'Netscape6/'.length));
}

var gobjDragger = new Object();
gobjDragger.zIndex = 0;



function xcShowHelp( psFile ) {
    window.open('' + psFile,'ShowHelp','toolbar=0,width=' + giHelpWindowWidth + ',height=' + giHelpWindowHeight + ',resizable=yes,scrollbars=yes');
}

function ShowPreviewPopUp( psFile ) {
    if (psFile.length > 0) {
        window.open('AUCPreviewLinkImage.asp?IMG=' + escape(psFile),'ImagePreview','toolbar=0,width=' + giHelpWindowWidth + ',height=' + giHelpWindowHeight + ',resizable=yes,scrollbars=yes');
    }
}


function xcShowUserImage( psSystem, psFile, psTitle ) { 
    if (psFile.length > 0) { 
        window.open(psSystem + 'ShowUserImage.asp?IMG=' + escape(psFile) + '&TITLE=' + escape(psTitle),'ImagePreview','toolbar=0,width=' + giHelpWindowWidth + ',height=' + giHelpWindowHeight + ',resizable=yes,scrollbars=yes');
        } 
} 

function xcGetCurrentMousePosition(pEvent) {
    if (pEvent) { var oEvent = pEvent } else { var oEvent = window.event };
    if (oEvent.clientX || oEvent.clientY) {
 	    glMouseX = oEvent.clientX;
 	    glMouseY = oEvent.clientY;
        glMouseX = oEvent.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        glMouseY = oEvent.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    } else if (oEvent.clientX || oEvent.clientY) {
        glMouseX = oEvent.clientX + window.scrollX;
        glMouseY = oEvent.clientY + window.scrollY;
 	} else if (oEvent.pageX || oEvent.pageY) {
 	    glMouseX = oEvent.pageX;
 	    glMouseY = oEvent.pageY;
 	}
}


function xcDialogShowItem(psDialogIDname){
    //alert('xcDialogShowItem(' + psDialogIDname + ',' + pbCloseAll + ')' );
 	//if (pbCloseAll) xcDialogCloseAll();
 	xcGetCurrentMousePosition(window.event);
 	
    var oDialog = document.getElementById(psDialogIDname);
    if (oDialog) {
        oDialog.style.position = 'absolute';
        lPositionX = glMouseX;
        lPositionY = glMouseY;
        //if (lPositionX > ScreenWidth-oDialog.style.width) lPositionX = ScreenWidth-oDialog.style.width;
        //if (lPositionY > ScreenHeight-oDialog.style.height) lPositionY = ScreenHeight-oDialog.style.height;
        oDialog.style.left = lPositionX;
        oDialog.style.top = lPositionY;
        oDialog.style.visibility = "visible";
        oDialog.style.zIndex = ++oDialog.style.zIndex;
    }
}

//function to close all open dialogs
function xcDialogCloseAll(psDialogBoxClass){
    //alert('xcDialogCloseAll(' + psDialogBoxClass + ')');
    if (document.all) {
		var objDivsCollection = document.all.tags("DIV");
		for(x=0;x<objDivsCollection.length;x++) {
			if (objDivsCollection[x].className==psDialogBoxClass) { objDivsCollection[x].style.visibility = "hidden"; }
		}
    }
}

//function to close a specific dialog
function xcDialogCloseItem(psDialogIDname){
    var oDialog = document.getElementById(psDialogIDname);
    if (oDialog) {
        oDialog.style.visibility = "hidden";
    }
}



//function to allow user to drag an element around the page
function xcDialogDragStart(event, psDialogIDName) {
    //if element ID specified
    if (psDialogIDName) {  
        gobjDragger.ElementNode = document.getElementById(psDialogIDName);
    } else {
        //otherwise try to detect calling element
        if (window.event.srcElement) {
            gobjDragger.ElementNode = window.event.srcElement;
        } else if (event.target) {
            gobjDragger.ElementNode = event.target;
        }
        // If element is a text node, use its parent element.
        if (gobjDragger.ElementNode.nodeType == 3)
            gobjDragger.ElementNode = objDragger.ElementNode.parentNode;
    }
    
    xcGetCurrentMousePosition(event);
    //alert('mouse:' + glMouseX + ',' + glMouseY);
    
    //if we got a valid element reference
    if (gobjDragger.ElementNode) {
        //window.status = 'x:' + glMouseX + ' y:' + glMouseY;
        //window.status = 'x:' + gobjDragger.ElementNode.style.left + ' y:' + gobjDragger.ElementNode.style.top;
        gobjDragger.DragStartedMouseX = glMouseX; //save mouse starting position
        gobjDragger.DragStartedMouseY = glMouseY;
        gobjDragger.DragStartedElementX = parseInt(gobjDragger.ElementNode.style.left, 10); //save element starting position
        gobjDragger.DragStartedElementY = parseInt(gobjDragger.ElementNode.style.top, 10);
        if (isNaN(gobjDragger.DragStartedElementX)) gobjDragger.DragStartedElementX = 0; //if element position NaN, set to valid numeric value
        if (isNaN(gobjDragger.DragStartedElementY)) gobjDragger.DragStartedElementY  = 0;
        gobjDragger.ElementNode.style.zIndex = ++gobjDragger.zIndex; //increment zIndex to make sure item in front
        
        //setup mouse events for dragging
        if (document.attachEvent) {
            document.attachEvent("onmousemove", xcDialogDragMove);
            document.attachEvent("onmouseup", xcDialogDragStop);
            window.event.cancelBubble = true;
            window.event.returnValue = false;
        } else if (document.addEventListener) {
            document.addEventListener("mousemove", xcDialogDragMove, true);
            document.addEventListener("mouseup", xcDialogDragStop, true);
            event.preventDefault();
        }
    }
}

//setup from xcDialogDragStart and internally called from attached event handler
function xcDialogDragMove(event) {
    xcGetCurrentMousePosition(event);
    //window.status = 'x:' + gobjDragger.DragStartedElementX + ' y:' + gobjDragger.DragStartedElementY;
    //window.status = 'x:' + gobjDragger.DragStartedMouseX + ' y:' + gobjDragger.DragStartedMouseY;
    iNewX = gobjDragger.DragStartedElementX + glMouseX - gobjDragger.DragStartedMouseX;
    iNewY = gobjDragger.DragStartedElementY  + glMouseY - gobjDragger.DragStartedMouseY;
    
    gobjDragger.ElementNode.style.left = iNewX + "px";
    gobjDragger.ElementNode.style.top  = iNewY + "px";
    if (window.event) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    } else if (event.preventDefault) {
        event.preventDefault();
    }
}

//setup from xcDialogDragStart and internally called from attached event handler
function xcDialogDragStop(event) {
    if (document.detachEvent) {
        document.detachEvent("onmousemove", xcDialogDragMove);
        document.detachEvent("onmouseup",   xcDialogDragStop);
    } else if (document.removeEventListener) {
        document.removeEventListener("mousemove", xcDialogDragMove,   true);
        document.removeEventListener("mouseup",   xcDialogDragStop, true);
    }
}


function xcGetURLParameterValue(psURL, psParameter) {
    var sData = '';
    var sTemp;
    var iTokenIndex;
    var iValueIndex;
    var iValueTermIndex;
    if (psURL.indexOf('?') < psURL.indexOf('&') || psURL.indexOf('?')==-1 || psURL.indexOf('&')==-1) {
        iTokenIndex = psURL.toUpperCase().indexOf(psParameter.toUpperCase() );
        if (iTokenIndex>=0) {
            iValueIndex = iTokenIndex + psParameter.length + 1;
            if (iValueIndex<psURL.length) {
                sTemp = psURL.substring(iValueIndex, psURL.length) + '&';
                iValueTermIndex = sTemp.indexOf('&');
                //alert(psParameter + '\npsURL.length:' + psURL.length + '\niTokenIndex:' + iTokenIndex + '\niValueIndex:' + iValueIndex + '\niValueTermIndex:' + iValueTermIndex + '\nsTemp:' + sTemp);
                if (iValueTermIndex>0) {
                    sData = sTemp.substring(0, iValueTermIndex);
                }
            }
        }
    }
    return sData;
}
