/* RR Javascript
   Copyright 2009 RR - AMM

   Version:
   1.0 - 1 May 2009
   
   Dependencies: 
   none   
*/

// Globals
var stageWinWidth = 0;
var stageWinHeight = 0;
var stageLeft = 0;
var stageTop = 0;
var stageImages = new Array();
var stageContent = new Array();
var stageImagesExt = 'jpg';
var stageImgPath = "";
var stageExpire = 0;
var stageButton = 0;
var stageView = 0;

// Stage objects array
// Sub-array object items 
// 0 - Object
// 1 - Window reference
// 2 - Size structure
var stageObjectArray = new Array();

// Stage object events
window.onload = loadStage;
window.onresize = setStageObjectResizeAuto;

// Stage onload
function loadStage() {

    // Init objects
    stageObjectArray[0] = new Array();
    stageObjectArray[0][0] = document.getElementById('stage');
    stageObjectArray[0][1] = ''; 
    stageObjectArray[0][2] = '1024,793,0,0';
    
    // Set static stage
    runStageFunc('','hideload','');
    runStageFunc('','showstage','');
    
    if (stageView == 0) {
        // Set dynamic stage
        setDynamicStage();
        
        // Run page load if required
        if (typeof(pageLoad) == 'function') pageLoad();

        // View scrolled regions
        viewScrollRegions();
    }
    else {
        var id = document.getElementById('viewpage');
        if (id) document.getElementById('viewpage').style.visibility = 'visible';
    }
    
    // Run secondary page load if required
    if (typeof(pageLoad2) == 'function') pageLoad2();
}

// View stage scrolled regions 
function viewScrollRegions() {

    var viewscroll = document.getElementById('contScrolled');
    if (viewscroll) {
        viewscroll.style.visibility = 'visible';
        document.getElementById('bfoot18').style.visibility = 'visible';
        document.getElementById('bfoot19').style.visibility = 'visible';
    }
}

function setDynamicStage() {
    
    var id = null;
    
    // Stage positioning
    document.getElementById('stagefoot').style.top = footTop; 
    document.getElementById('stagecontent').style.height = contHeight;
    // Content graphic visibility
    document.getElementById('leftback').style.visibility = 'visible';
    document.getElementById('rightback').style.visibility = 'visible';
    id = document.getElementById('footback');
    if (id) id.style.visibility = 'visible';
    id = document.getElementById('contentback');
    if (id) id.style.visibility = 'visible';
    if (stagePage != 'introduction' && stagePage != 'index' && stagePage != 'location') {
        id = document.getElementById('viewpage');
        if (id) document.getElementById('viewpage').style.visibility = 'visible';
    }
}

// Preload images
function preloadStageImage(obj, img, mode) {
    
    // Init
    var index = obj.length;
    obj[index] = new Array();
    
    // Off
    obj[index][0] = new Image();
    obj[index][0].src = stageImgPath + img + '_off.' + stageImagesExt;
    
    // On
    obj[index][1] = new Image();
    if (mode == 0) {
        obj[index][1].src = stageImgPath + img + '_on.' + stageImagesExt;
    }
    
    // Over
    obj[index][2] = new Image();
    obj[index][2].src = stageImgPath + img + '_over.' + stageImagesExt;
}

// Change stage images
function changeStageImage(element, but, index) {
    
    var img = document.getElementById(element);    
    if (stageButton == but && index == 0) index = 1;
    img.src = stageImages[but][index].src
}

// Change content images
function changeContentImage(element, but, index) {
    
    var img = document.getElementById(element);    
    img.src = stageContent[but][index].src
}

// Change stage view
function changeStageView(mode) {
    
    var paramsform = document.getElementById('params');
    var paramfunc = document.getElementById('func');
    if (mode == 0) {
        paramfunc.value = 'viewscroll';
    }
    else {
        paramfunc.value = 'viewsingle';
    }
    paramsform.submit();
}

// Run required object function
function runStageFunc(sid, func, data) {

    // Process required function
    switch (func) {
    
        case 'showstage':
            setStageObjectVisibility(0, true);
            break;                         

        case 'hidestage':
            setStageObjectVisibility(0, false);
            break;                         

        case 'hideload':
            document.getElementById('load').style.visibility = 'hidden';  
            break;                         
    }
    
    return true;
}

// Get browser window inner dimensions
function getStageWindowInnerSize() {

    if (typeof( window.innerWidth ) == 'number') {
        //Non-IE
        stageWinWidth = window.innerWidth;
        stageWinHeight = window.innerHeight;
    } 
    else if (document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight )) {
        //IE 6+ in 'standards compliant mode'
        stageWinWidth = document.documentElement.clientWidth;
        stageWinHeight = document.documentElement.clientHeight;
    } 
    else if (document.body && ( document.body.clientWidth || document.body.clientHeight )) {
        //IE 4 compatible
        stageWinWidth = document.body.clientWidth;
        stageWinHeight = document.body.clientHeight;
    }
}

// Automate object resize
function setStageObjectResizeAuto() {

    for (var i = 0; i != stageObjectArray.length; i++) {
    
        if (stageObjectArray[i]) {
            var stobj = stageObjectArray[i][0].style.visibility; 
            if (stobj.toLowerCase() == 'visible') {
                setStageObjectResize(i);
            }
        }    
    }

    return false;        
}

// Resize and center object
function setStageObjectResize(id) {
    
    // Only resize if visible
    var stageObject = stageObjectArray[id];
    if (stageObject[0].style.visibility == 'visible') {
        getStageWindowInnerSize();
        var aobjsize = stageObject[2].split(',');
        if (id >= 0) {
            hoff = 0;
            voff = 0;
            if (stageWinWidth < aobjsize[0]) hoff = ((aobjsize[0] - stageWinWidth) / 2);
            if (stageWinHeight < aobjsize[1]) voff = ((aobjsize[1] - stageWinHeight) / 2);
            stageLeft = ((stageWinWidth - parseInt(aobjsize[0])) / 2) + parseInt(aobjsize[2]) + parseInt(hoff);
            stageTop = ((stageWinHeight - parseInt(aobjsize[1])) / 2) + parseInt(aobjsize[3]) + parseInt(voff);
            stageObject[0].style.left = stageLeft.toString() + 'px';
            stageObject[0].style.top = stageTop.toString() + 'px';            
        }
        else {
            stageLeft = ((stageWinWidth - parseInt(aobjsize[0])) / 2) + parseInt(aobjsize[2]);
            stageTop = ((stageWinHeight - parseInt(aobjsize[1])) / 2) + parseInt(aobjsize[3]);
            stageObject[0].style.left = stageLeft.toString() + 'px';
            stageObject[0].style.top = stageTop.toString() + 'px';            
        }
        stageObject[0].style.width = aobjsize[0] + 'px';
        stageObject[0].style.height = aobjsize[1] + 'px';
        
        // Write cookie
        if (typeof(cookieWrite) == 'function') {
            cookieWrite('rr[stageleft]', stageLeft, stageExpire, '/');
            cookieWrite('rr[stagetop]', stageTop, stageExpire, '/');
        }
    }
}

// Change visibility of object
function setStageObjectVisibility(id, vis) {

    if (stageObjectArray[id]) {
        if (stageObjectArray[id][0]) {
            if (vis) {
                stageObjectArray[id][0].style.visibility = 'visible';
                setStageObjectResize(id);
            }
            else {
                stageObjectArray[id][0].style.visibility = 'hidden';
            }
        }
    }
}
