/**********************************************************
* SFX (tm) Searchable A-Z common javascript file.
* Copyright Ex Libris, Inc.
* Version: $Id: common.js,v 1.11 2005/08/30 06:52:12 dz_3 Exp $
***********************************************************/

var recordDisplayed = null;

//---------------------------------------------------------
function OpenWindow(url,winname,w,h,needChild) {
//---------------------------------------------------------
// Standard function for opening an sfx menu window
//---------------------------------------------------------
    if (typeof winname == 'undefined' || ! winname.length) winname = 'openwin';
    if (typeof url     == 'undefined' || ! url.length) url = '';
    var child;
    if (!w && !h){
        child = window.open(url,winname,'width=700,height=500,scrollbars=yes,resizable=yes');
    }else{
        child = window.open(url,winname,"width="+w+",height="+h);
    }
    child.focus();
    if (needChild) return child;
}

//---------------------------------------------------------
function gotoPage(pageNumber,perform_tab) {
//---------------------------------------------------------
// Resubmits the query but first specifies the desired page
// number.
//---------------------------------------------------------
	if (perform_tab == 'searchCategories') {
		document.az_result_form.perform.value = 'searchCategories';
	}
	else if (perform_tab == 'locate') {
		document.az_result_form.perform.value = 'locate';
	}
    if (pageNumber) {
        document.az_result_form.jumpToPage.value = pageNumber;
    }
    if (!document.az_result_form.jumpToPage.value) {
        alert('No page number specified.');
    }
    else {
        if (!IsNumeric(document.az_result_form.jumpToPage.value)) {
            alert('Page number is invalid.');
            document.az_result_form.jumpToPage.value = 1;
        }
        if (document.az_result_form.current_view) {
             document.az_result_form.current_view.value =  document.az_user_form.current_view.value;
        }
        document.az_result_form.submit();
    }
}

//---------------------------------------------------------
function showTable() {
//---------------------------------------------------------
// Shows table view by changing its visibility.
//---------------------------------------------------------
    var detail = getStyleObject('detailView');
    var table = getStyleObject('tableView');
    var detailRequester = getStyleObject('detailViewRequester');
    var tableRequester = getStyleObject('tableViewRequester');
    if (detail && table) {
        detail.visibility = 'hidden';
        detail.display = 'none';
        tableRequester.visibility = 'hidden';
        tableRequester.display = 'none';

        table.visibility = 'visible';
        table.display = '';
        detailRequester.visibility = 'visible';
        detailRequester.display = '';
    }

    document.az_user_form.current_view.value = 'table';
    if (document.az_result_form.current_view) {
        document.az_result_form.current_view.value = 'table';
    }
}

//---------------------------------------------------------
function showDetail() {
//---------------------------------------------------------
// Shows detail view by changing its visibility.
//---------------------------------------------------------
    var detail = getStyleObject('detailView');
    var table = getStyleObject('tableView');
    var detailRequester = getStyleObject('detailViewRequester');
    var tableRequester = getStyleObject('tableViewRequester');
    if (detail && table) {
        table.visibility = 'hidden';
        table.display = 'none';
        detailRequester.visibility = 'hidden';
        detailRequester.display = 'none';

        detail.visibility = 'visible';
        detail.display = '';
        tableRequester.visibility = 'visible';
        tableRequester.display = '';
    }

    document.az_user_form.current_view.value = 'detail';
    if (document.az_result_form.current_view) {
        document.az_result_form.current_view.value = 'detail';
    }
}

//---------------------------------------------------------
function showRecordInfo(record,eventObj) {
//---------------------------------------------------------
//---------------------------------------------------------
    if (recordDisplayed) {
        hideRecordInfo(recordDisplayed);
    }

    try {
        var xOffset = 30;
        var yOffset = -5;
        eventObj.cancelBubble = true;

        var newXCoordinate = (eventObj.pageX) ?
                                 eventObj.pageX + xOffset :
                                 eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
        var newYCoordinate = (eventObj.pageY) ?
                                 eventObj.pageY + yOffset :
                                 eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
        moveObject(record,newXCoordinate,newYCoordinate);
    } catch(e) {alert(e);}

    changeObjectVisibility(record,'visible');
    recordDisplayed = record;
    return true;
}

//---------------------------------------------------------
function hideRecordInfo(record) {
//---------------------------------------------------------
//---------------------------------------------------------
    changeObjectVisibility(record,'hidden');
    recordDisplayed = null;
}

//---------------------------------------------------------
function getStyleObject(objectId) {
//---------------------------------------------------------
// Gets an object's style object by its id.
//---------------------------------------------------------
    if(document.getElementById && document.getElementById(objectId)) {
        return document.getElementById(objectId).style;
    }
    else if (document.all && document.all(objectId)) {
        return document.all(objectId).style;
    }
    else if (document.layers && document.layers[objectId]) {
        return document.layers[objectId];
    }
    else {
        return false;
    }
}

//---------------------------------------------------------
function changeObjectVisibility(objectId, newVisibility) {
//---------------------------------------------------------
// Changes an object's visibility by its id.
//---------------------------------------------------------
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
      styleObject.visibility = newVisibility;
      return true;
    }
    else {
      return false;
    }
}

//---------------------------------------------------------
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) {
        styleObject.left = newXCoordinate;
        styleObject.top = newYCoordinate;
        return true;
    } else {
        // cannot find the object, so cannot move it
        return false;
    }
}

//---------------------------------------------------------
function IsNumeric(sText) {
//---------------------------------------------------------
// This function checks whether the entered page number is
// numeric or not.
//---------------------------------------------------------
   var ValidChars = "0123456789";
   var Char;

   for (i = 0; i < sText.length; i++) {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1) {
         return false;
      }
   }
   return true;
}
