//**********************************
//  example frame under frameset:
//  <frameset name="changableFrame" id="changableFrame" cols="*,0%,0%,0%,0%" border="0" bordercolor="#dcdcdc">               
//                <frame src="map.jsp" mainFrame="yes" name="map" changable="yes"  id="map" scrolling="auto" noresize>
//                <frame src="report.jsp" name="report" changable="yes" id="report" scrolling="auto" noresize>
//                <frame src="edit.jsp" name="edit" changable="yes" id="edit" scrolling="auto" noresize>    
//                <frame src="help.jsp" name="help" changable="yes" id="help" scrolling="auto" noresize>
//                <frame src="measure.jsp" name="measure" changable="yes" id="measure" scrolling="auto" noresize>
//                
//  </frameset>
//
//
//
//***********************************
var mainFrameWidth;
var mainFrameHeight;
var frameName;
var frameSize;
// get the original frame setting if attribute originalCols | originalRows are set in the frameset
function getOriginalFrameOrder(){
    var oOrder = null;
    if (parent.window.frames["originalFrame"].cols != null ){
        oOrder = parent.window.frames["originalFrame"].cols.split(",");
    } else if (parent.window.frames["originalFrame"].rows != null ){
        oOrder = parent.window.frames["originalFrame"].rows.split(",");
    } else{
        alert("No Original Frame Avialable!");
        return;
    }
    return oOrder;
}

// get the current frame setting for cols or rows
function getCurrentFrameOrder(){

    var fOrder = null;
    if (parent.window.frames["changableFrame"].cols != null ){
        parent.window.frames["changableFrame"].rows = null;
        fOrder = parent.window.frames["changableFrame"].cols.split(",");
        //alert("hhhhhh");
    } else if (parent.window.frames["changableFrame"].rows != null ){
        parent.window.frames["changableFrame"].cols = null;
        fOrder = parent.window.frames["changableFrame"].rows.split(",");
        //alert("dddddd");
    } else{
        alert("No Frame Avialable!");
        return;
    }
    return fOrder;
}

// get all the frame with in the adjustable frameset as objects
function getFrames(){
    var newFrames = new Array();
    var frames = parent.window.document.getElementsByTagName("frame");
    var count = frames.length;
    var b = 0;
    for( var a = 0; a  < count; a ++){
        if( frames[a].changable == "yes" ){
            newFrames[b] = frames[a];
            b++;
            }
    }
    return newFrames;
}

// build frame order depending on the input array of frame configuration
function buildFrameOrder(tempOrder, isRow){
    if ( isRow == null ){
        
        isRow = false;
    }
    if (parent.window.frames["changableFrame"].cols != null ){
        //alert(parent.window.frames["changableFrame"].cols);
        if ( isRow == true ){
            parent.window.frames["changableFrame"].cols = null;
            //alert("col is :"+parent.window.frames["changableFrame"].cols);
            parent.window.frames["changableFrame"].rows = tempOrder.join(",");
        } else {
            parent.window.frames["changableFrame"].cols = tempOrder.join(",");
        }
    } else if (parent.window.frames["changableFrame"].rows != null ){
        //alert(parent.window.frames["changableFrame"].rows);
        if ( isRow == false ){
            parent.window.frames["changableFrame"].rows = null;
            //alert("row is :"+parent.window.frames["changableFrame"].rows);
            parent.window.frames["changableFrame"].cols = tempOrder.join(",");
        } else {
            parent.window.frames["changableFrame"].rows = tempOrder.join(",");
        }
    } else{
        alert("No Frame Avialable!");
        return;
    }
}

// set the frame order for cols or rows
function setFrameOrder(currFrames, orderArray, fName, fSize){
    var tempOrderArray = orderArray;
    for (var a = 0; a < currFrames.length; a ++ ){
        if (currFrames[a].name == fName){
            tempOrderArray[a] = fSize;
            break;
        }
    }
    return tempOrderArray;
}

// set individual frame size 
// isRow for determine how users wants the layer out to be
// whether it is gonna be row or column
function setFrameSize(newFrameConfig, isRow){

    var currOrder = getCurrentFrameOrder();
    var currFrames = null;
    var tempOrder = null;

    for (var a = 0; a < newFrameConfig.length; a ++ ){
        
        if (tempOrder == null ){
            currFrames = getFrames();
            tempOrder = setFrameOrder(currFrames, currOrder, newFrameConfig[a].frameName, newFrameConfig[a].frameSize);
        } else {
            tempOrder = setFrameOrder(currFrames, tempOrder, newFrameConfig[a].frameName, newFrameConfig[a].frameSize);
        }
    }
    
    buildFrameOrder(tempOrder, isRow);
}
// reset the frame based on the default main frame value
function frameReset(){
    var currOrder = getCurrentFrameOrder();
    var currFrames = getFrames();
    for (var a = 0; a < currFrames.length; a++){
        if(currFrames[a].mainFrame == "yes"){
            currOrder[a] = "*";
        } else {
            currOrder[a] = "0%";
        }
    }
    buildFrameOrder(currOrder);
}

// frame configuration object to allow app to set frame setting
// to individual frames, and store them into array for processing

function frameConfig(fName, fSize){
    this.frameName = fName;
    this.frameSize = fSize;
}

function setResizable(fName, isResizable){
    top.window.frames[fName].noresize = isResizable;
}