var JSP_URL  = BASE_DOMAIN + 'jsp/watl/rainfall/exceedance.jsp';
var MAP_MINI = 'http://www.bom.gov.au/web01/ncc/www/brs/rain/points/plumes/';

var zoomLocation = EMPTY_STRING;
var mapImage     = new Image();

function xmlHttpStatusProceed() {
    var xmlDoc = getXmlTree();

    var mainHeadingElement = xmlDoc.getElementsByTagName('headings')[0];
    document.getElementById('mainHeading').innerHTML
        = mainHeadingElement.firstChild.nodeValue;

    var dataviewElement = xmlDoc.getElementsByTagName('controls')[0];
    document.getElementById('fieldsets').innerHTML
        = dataviewElement.firstChild.nodeValue;

    var locatorElement = xmlDoc.getElementsByTagName('controls')[1];
    document.getElementById('maplocator').innerHTML
        = locatorElement.firstChild.nodeValue;

    var mapElement = xmlDoc.getElementsByTagName('controls')[2];
    document.getElementById('dynamicProductFrame').innerHTML
        = mapElement.firstChild.nodeValue;

    zoomLocation = getURLParam('zoomlocation');

    if (zoomLocation == EMPTY_STRING) {
        zoomLocation = 'aus';
    }

    document.getElementById('locator-image').src
        = MAP_MINI + zoomLocation + '/' + zoomLocation + '_inset.gif';

    if (zoomLocation == 'aus') {
        document.getElementById('zoom-out').style.visibility = 'hidden';            
    }
    else {
        document.getElementById('zoom-out').style.visibility = 'visible';            
    }

    mapImage = document.getElementById('map-image');

    return;
}

function xmlHttpStatusError() {
    
    return;
}

function loadBookmarkedProduct(paramType) {
    var docHref = document.location.href.split('#')[0];
    var query   = 'basedomain=' + BASE_DOMAIN + '&';
    
    if (docHref.indexOf('?') > -1) {
        query += docHref.substr(docHref.indexOf('?') + 1);
    }

    formatPage();
    sendRequest(JSP_URL + '?' + query, 'text/xml');

    return;
}

function formatPage() {
    var mapImageHolder = document.getElementById('map-image-holder');

    if (mapImageHolder != null && mapImage.height > 0) {
        mapImageHolder.style.height = eval('\'' + mapImage.height + 'px\'');
    }

    setTimeout('formatPage()', 250);

    return;
}

function setAddressBar(radioInput) {
    var saveHref = document.location.href.split('#')[0];
    saveHref     = saveHref.split('?')[0];
    var dataviewSelected      = EMPTY_STRING;
    var excpercentageSelected = EMPTY_STRING;
    var excamountSelected     = EMPTY_STRING;
    var tabletypeSelected     = EMPTY_STRING;
    var tablelocationSelected = EMPTY_STRING;
    var zoomlocationSelected  = zoomLocation;
    
    if (document.getElementsByName('dataview').length == 0) {
        dataviewSelected = getURLParam('dataview');
    }
    else {
        
        for (var i = 0;
             i < document.getElementsByName('dataview').length; i++) {
        
            if (document.getElementsByName('dataview')[i].checked) {
                dataviewSelected
                    = document.getElementsByName('dataview')[i].value;
            }
        }
    }
    
    if (document.getElementsByName('excpercentage').length == 0) {
        excpercentageSelected = getURLParam('excpercentage');
    }
    else {
        
        for (var i = 0;
             i < document.getElementsByName('excpercentage').length; i++) {
        
            if (document.getElementsByName('excpercentage')[i].checked) {
                excpercentageSelected
                    = document.getElementsByName('excpercentage')[i].value;
            }
        }
    }
    
    if (document.getElementsByName('excamount').length == 0) {
        excamountSelected = getURLParam('excamount');
    }
    else {

        for (var i = 0;
             i < document.getElementsByName('excamount').length; i++) {
        
            if (document.getElementsByName('excamount')[i].checked) {
                excamountSelected
                    = document.getElementsByName('excamount')[i].value;
            }
        }
    }

    if (document.getElementsByName('tabletype').length == 0) {
        tabletypeSelected = getURLParam('tabletype');
    }
    else {
        
        for (var i = 0;
             i < document.getElementsByName('tabletype').length; i++) {
        
            if (document.getElementsByName('tabletype')[i].checked) {
                tabletypeSelected
                    = document.getElementsByName('tabletype')[i].value;
            }
        }
    }    

    if (document.getElementsByName('tablelocation').length == 0) {
        tablelocationSelected = getURLParam('tablelocation');

        if (zoomlocationSelected == 'aus') {
            tablelocationSelected = 'cap';
        }
        else {
            tablelocationSelected = zoomlocationSelected;
        }
    }
    else {
        
        for (var i = 0;
             i < document.getElementsByName('tablelocation').length; i++) {
        
            if (document.getElementsByName('tablelocation')[i].checked) {
                tablelocationSelected
                    = document.getElementsByName('tablelocation')[i].value;

                if (radioInput == null){
                    
                    if (zoomlocationSelected == 'aus') {
                        tablelocationSelected = 'cap';
                    }
                    else {
                        tablelocationSelected = zoomlocationSelected;
                    }
                }
                else {
                    
                    if (tablelocationSelected == 'all' ||
                        tablelocationSelected == 'cap') {
                        
                        zoomlocationSelected = 'aus';
                    }
                    else {
                        zoomlocationSelected = tablelocationSelected;
                    }
                }
            }
        }
    }

    if (dataviewSelected == 'median') {
        zoomlocationSelected = 'aus';
    }

    document.location.href
        = saveHref + '?' +
          'dataview='       + dataviewSelected      +
          '&excpercentage=' + excpercentageSelected +
          '&excamount='     + excamountSelected     +
          '&tabletype='     + tabletypeSelected     +
          '&tablelocation=' + tablelocationSelected +
          '&zoomlocation='  + zoomlocationSelected;

    return;
}

function setZoomLocation(location) {
    zoomLocation = location;
    setAddressBar(null);
    
    return;
}

function zoomOut() {
    zoomLocation = 'aus';
    setAddressBar(null);

    return;
}

