// $Author: daniel $
// $Revision: 1.7 $
// $Date: 2009/01/27 15:36:07 $
//------------------------------------------------------------------------------
// COMMENT OUT PROTOTYPE OF JQUERY COMPAT
(function(){

    Object.prototype.isFunction         = function() { return 'function' == typeof this; };
    Object.prototype.isArray            = function() { return this.constructor == Array; };
    Object.prototype.isBoolean          = function() { return this.constructor == Boolean; };
    Object.prototype.isNumber           = function() { return this.constructor == Number && isFinite(this); };
    Object.prototype.isInfinite         = function() { return this.constructor == Number && !( isFinite(this) ); };
    Object.prototype.isDate             = function() { return this.constructor == Date; };
    Object.prototype.isString           = function() { return this.constructor == String; };
    Object.prototype.isDom              = function() { return 'undefined' !== typeof this.nodeName; };
    String.prototype.lc                 = function() { return this.toLowerCase(); };
    String.prototype.uc                 = function() { return this.toUpperCase(); };
    String.prototype.ucfirst            = function() { return this.left(1).uc()+this.right( this.length-1 ); };
    String.prototype.left               = function( amt ) { if( amt <= 0 ) { return ''; } else if( amt > String(this).length ) { return this; } else { return String(this).substring( 0, amt ); } };
    String.prototype.right              = function( amt ) { if( amt <= 0 ) { return ''; } else if( amt > String(this).length ) { return this; } else { return String(this).substring( String(this).length, String(this).length - amt ); } };

    Array.prototype.toJstr              = function() { var a,b,i,v; a = ['[']; for( i=0; i<this.length; i++ ) { v = this[i]; switch(typeof v) { case 'undefined': case 'function': case 'unknown': break; default: if(b) { a.push(','); } a.push( v === null ? 'null' : v.toJstr() ); b = true; } } a.push(']'); return a.join(''); };
    Boolean.prototype.toJstr            = function() { return String(this); };
    Date.prototype.toJstr               = function() { function lz(n) { return n < 10 ? '0'+n : n; } return '"' + this.getFullYear()    + '-' + lz( this.getMonth() + 1 ) + '-' + lz( this.getDate()      ) + 'T' + lz( this.getHours()     ) + ':' + lz( this.getMinutes()   ) + ':' + lz( this.getSeconds()   ) + '"'; };
    Number.prototype.toJstr             = function() { return isFinite(this) ? String(this) : "null"; };
    Object.prototype.toJstr             = function() { var a,b,i,v; a = ['{']; for(i in this) { if( this.hasOwnProperty(i) ) { v = this[i]; switch(typeof v) { case 'undefined': case 'function': case 'unknown': break; default: if(b) { a.push(','); } a.push( i.toJstr(), ':', v===null ? "null" : v.toJstr() ); b = true; } } } a.push('}'); return a.join(''); };
    String.prototype.toJstr             = function() { var escC; escC = {'\b':'\\b', '\t':'\\t', '\n':'\\n', '\f':'\\f', '\r':'\\r', '"' :'\\"', '\\':'\\\\'}; if( /["\\\x00-\x1f]/.test(this) ) { return '"'+this.replace(/([\x00-\x1f\\"])/g, function(a,b) { var c = escC[b]; if(c) { return c; } c = b.charCodeAt(); return '\\u00' + Math.floor(c/16).toString(16) + (c%16).toString(16); } ) + '"'; } return '"'+this+'"'; };

    String.prototype.evalJson           = function() { try { if( /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(this) ) { return eval( '('+this+')' ); } } catch(e) {} throw new SyntaxError('parseJSON'); };

})();
//------------------------------------------------------------------------------
    var n,w,d;
    n = navigator;
    w = window;
    d = document;

    function nil(){}
    function gbi(str)                   { return d.getElementById(str); }
    function gbt(str)                   { return d.getElementsByTagName(str); }
    function gbc(str)                   { var at,out,i,j,nt; at  = gbt('*'); out = new Array(); for( i=0,j=0; i<at.length; i++ ) { nt = ' '+at[i].className + ' '; if( nt.indexOf( ' '+str+' ' ) != -1 ) { out[j++] = at[i]; } } return out; }
    function localtime()                { var tdo; tdo = new Date(); return tdo.getTime(); }
    function isDefined(var2t)           { return !( 'undefined' == typeof var2t ); }
    function isNull(var2t)              { return null === var2t; }
//------------------------------------------------------------------------------
                                        var _ol = [];
    function addLoad(fnc)               { _ol.push(fnc); }
                                        function _onLoad() { var i; for( i=0; i<_ol.length; i++ ) { _ol[i](); } } w.onload = function() { _onLoad(); };
//------------------------------------------------------------------------------
    var _brw = {
        'nw': function(wu,wn,wo)        { var wostr = ''; if( wo && wo.isArray() ) { if( wo.width ) { wostr += 'width='+wo.width+','; } if( wo.height )      { wostr += 'height='+wo.height+','; } if( wo.resizable )   { wostr += 'resizable='+wo.resizable+','; } if( wo.scrollbars )  { wostr += 'scrollbars='+wo.scrollbars+','; } if( wo.toolbar )     { wostr += 'toolbar='+wo.toolbar+','; } if( wo.location )    { wostr += 'location='+wo.location+','; } if( wo.directories ) { wostr += 'directories='+wo.directories+','; } if( wo.status )      { wostr += 'status='+wo.status+','; } if( wo.menubar )     { wostr += 'menubar='+wo.menubar+','; } if( wo.copyhistory ) { wostr += 'copyhistory='+wo.copyhistory+','; } } if(wu && wn) { w.open(wu,wn,wostr); } else { return false; } },
        'top': function()               { w.scroll(0,0); }
    };
//------------------------------------------------------------------------------
    var _dom = {
        '_nr':                          [ null, 'Element', 'Attribute', 'Text', 'CDATA Section', 'Entity Reference', 'Entity', 'Processing Instruction', 'Comment', 'Document', 'Document Type', 'Document Fragment', 'Notation' ],
        'tcn':function(obj,cn)          { var cls_str,rgx; cls_str = obj.className; rgx = new RegExp(cn); if( rgx.test(cls_str) ) { obj.className = cls_str.replace(rgx,''); } else { obj.className = cls_str+' '+cn; } },
        'scn':function(obj,cn1,cn2)     { var cls_str,rgx1,rgx2; cls_str = obj.className; rgx1 = new RegExp(cn1); rgx2 = new RegExp(cn2); if( rgx1.test(cls_str) ) { obj.className = cls_str.replace(rgx1,cn2); } else { obj.className = cls_str.replace(rgx2,cn1); } },
        'applyVfx':function(obj)        { if( typeof(obj)=='object' && obj.nodeType==1 ) { if(obj.style && obj.style.visibility == 'hidden') { obj.vis = false; } else { obj.vis = true; }
            obj.hide     = function()   { this.vis = false; this.style.display = 'none'; this.style.visibility = 'hidden'; };
            obj.show     = function()   { this.vis = true; this.style.display = ''; this.style.visibility = 'visible'; };
            obj.togl     = function()   { if(this.vis) { this.hide(); } else { this.show(); } };
            obj.pos      = function()   { var obj,cl,ct; obj = this; cl = 0; ct = 0; if(obj.offsetParent) { cl = obj.offsetLeft; ct = obj.offsetTop; while(obj = obj.offsetParent) { cl += obj.offsetLeft; ct += obj.offsetTop; } } return [cl,ct]; };
            obj.setPos   = function(xy) { if(!this.origXY) { this.origXY = this.pos(); } this.style.left = xy[0]+'px'; this.style.top  = xy[1]+'px'; };
            obj.resetPos = function()   { if(this.origXY) { this.setPos(this.origXY); } else { return false; } }; } if(obj.hasChildNodes()) { var crn; for( crn=0; crn<obj.childNodes.length; crn++ ) { _dom.applyVfx(obj.childNodes[crn]); } } },
        'show':function(obj)            { if( obj.isString() ) { obj = gbi(obj); } if(!obj.show) { _dom.applyVfx(obj); } obj.show(); },
        'hide':function(obj)            { if( obj.isString() ) { obj = gbi(obj); } if(!obj.hide) { _dom.applyVfx(obj); } obj.hide(); },
        'move':function(obj,xy)         { if( obj.isString() ) { obj = gbi(obj); } if(!obj.setPos) { _dom.applyVfx(obj); } obj.setPos(xy); },
        'centre':function(obj)          { if( obj.isString() ) { obj = gbi(obj); } if(!obj.setPos) { _dom.applyVfx(obj); } obj.setPos( [ ( ( _brw.cxy[0] / 2 ) - ( obj.clientWidth  / 2 ) ), ( ( _brw.cxy[1] / 2 ) - ( obj.clientHeight / 2 ) ) ] ); }
    };
//------------------------------------------------------------------------------
    var _evt = {
        'add':function(/*obj,evt,fnc*/) { if(w.addEventListener) { return function(obj,evt,fnc) { obj.addEventListener( evt, fnc, false ); }; } else if(w.attachEvent) { return function(obj,evt,fnc) { var clo = function() { fnc.call( obj, w.event ); }; obj.attachEvent( 'on'+evt, clo ); }; } else { return function(obj,evt,fnc) { element['on'+evt] = fnc; }; } }(),
        'rem':function(/*obj,evt,fnc*/) { if(w.removeEventListener) { return function(obj,evt,fnc) { obj.removeEventListener( evt, fnc, false ); }; } else if(w.detatchEvent) { return function(obj,evt,fnc) { var clo = function() { fnc.call( obj, w.event ); }; obj.detatchEvent( 'on'+evt, clo ); }; } else { return function(obj,evt,fnc) { element['on'+evt] = null; }; } }()
    };
//------------------------------------------------------------------------------
    var _frm = {
        '_rgx':                         {
            'username':                 new RegExp( /^[-_a-zA-Z0-9]*$/ ),
            'password':                 new RegExp( /^[a-zA-Z0-9]*$/ ),
            'name':                     new RegExp( /^[-_a-zA-Z0-9.,() ]*$/ ),
            'siteurl':                  new RegExp( /^[a-z0-9]{2}[-_a-z0-9]*\.[-_.a-z0-9]*[a-z0-9]+$/ ),
            'email':                    new RegExp( /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+$/ )},
        'toggle':function(obj)          { var cnn = obj.nodeName.lc(); if( cnn=='input' || cnn=='textarea' || cnn=='select' ) { obj.disabled = obj.disabled?false:true; } if( obj.hasChildNodes() ) { var crn; for( crn=0; crn<obj.childNodes.length; crn++ ) { _frm.toggle( obj.childNodes[crn] ); } } },
        'validate':function(inp,rgx,len){ if(len) { if(inp.length>len) { return false; } } return rgx.test(inp); }
    };
//------------------------------------------------------------------------------
    var _str = {
        'x':function(str,amt)           { var i,out; out = ''; for( i=0; i<amt; i++ ) { out += str; } return out; },
        'case':function(str)            { var frmtd_str = str.replace(/_/gi,' '); frmtd_str = frmtd_str.lc(); var words = frmtd_str.split(/ /); var cwords = []; for(var i=0; i<words.length; i++) { cwords.push( words[i].ucfirst() ); } return cwords.join(' '); },
        'frmJstr':function(str)         { var i,out,amt; out = ''; amt = 0; for( i=0; i<str.length; i++ ) { var cm1,chr,cp1; if( i>0 ) { cm1 = str.charAt(i-1); } chr = str.charAt(i); if( i<str.length ) { cp1 = str.charAt(i+1); } if( chr==':' ) { chr+=' '; } if( chr=='}' || chr==']' || chr==',' || chr=='{' || chr=='[' ) { if( (chr=='}'&&cp1!=',') || (chr==']'&&cp1!=',') ) { amt-=1; chr='\n'+_str.x('    ',amt)+chr; } if( (chr=='}'||chr==']') && cp1==',' ) { amt-=1; chr='\n'+_str.x('    ',amt)+chr+cp1+'\n'+_str.x('    ',amt); i+=1; } if( chr==',' && cm1!='}' && cm1!=']' ) { chr+='\n'+_str.x('    ',amt); } if( chr=='{' || chr=='[' ) { amt+=1; chr+='\n'+_str.x('    ',amt); } } out += chr; } return out; }
    };
//------------------------------------------------------------------------------
    var _dtf = {
        '_d':                           ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
        '_m':                           ['January', 'Febuary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        '_f': {
            'd':function(d)             { var fd; fd = d.getDate(); return fd<10 ? '0'+fd:fd; },
            'D':function(d)             { var fd; fd = d.getDay(); return _dtf._d[fd].left(3); },
            'j':function(d)             { return d.getDate(); },
            'l':function(d)             { var fd; fd = d.getDay(); return _dtf._d[fd]; },
            'N':function(d)             { return d.getDate()+1; },
            'S':function(d)             { var fd; fd = d.getDate() % 10; if( fd>9 && fd<20 ) { fd=0; } switch(fd) { case 1:  return 'st'; break; case 2:  return 'nd'; break; case 3:  return 'rd'; break; default: return 'th'; } },
            'w':function(d)             { return d.getDay(); },
            'z':function(d)             { var f0,fd; f0 = Date.UTC( d.getFullYear(), 0, 0 ); fd = Date.UTC( d.getFullYear(), d.getMonth(), d.getDate() ); return Math.floor( (fd-f0)/86400000 ); },
            'W':function(d)             { var sy,f0,fm,fd; sy = new Date( d.getFullYear(), 0, 1, 0, 0, 0, 0 ); f0 = sy.getDay() - 1; if( f0<0 ) { f0=6; } fm = Date.UTC( d.getFullYear(), 0, 8-f0 ); fd = Date.UTC( d.getFullYear(), d.getMonth(), d.getDate() ); return Math.floor( (fd-fm)/604800000 )+2; },
            'F':function(d)             { var fd; fd = d.getMonth(); return _dtf._m[fd]; },
            'm':function(d)             { var fd; fd = d.getMonth()+1; return fd<10 ? '0'+fd:fd; },
            'M':function(d)             { var fd; fd = d.getMonth(); return _dtf._m[fd].left(3); },
            'n':function(d)             { return d.getMonth()+1; },
            't':function(d)             { var fd; fd = d.getMonth(); switch(fd) { case 1:  if( _dtf._f.L(d) ) { return 29; } else { return 28; } break; case 3:  return 30; break; case 5:  return 30; break; case 8:  return 30; break; case 10: return 30; break; default: return 31; } },
            'L':function(d)             { var fy,bf,bo,bfo; fy = d.getFullYear(); bf = fy%4; bo = fy%100; bfo = fy%400; if( bf==0 ) { if( bo==0 ) { if( bfo==0 ) { return 1; } else { return 0; } } else { return 1; } } else { return 0; } },
            'Y':function(d)             { return d.getFullYear(); },
            'y':function(d)             { return String(d.getFullYear()).right(2); },
            'a':function(d)             { var fd; fd = d.getHours(); return fd<12 ? 'am':'pm'; },
            'A':function(d)             { var fd; fd = d.getHours(); return fd<12 ? 'AM':'PM'; },
            'B':function(d)             { var os,ts,fd; os = ( d.getTimezoneOffset()+60 ) * 60; ts = ( d.getHours()*3600 ) + ( d.getMinutes()*60 ) + d.getSeconds() + os; fd = Math.floor( ts/86.4 ); if( fd>1000 ) { fd -= 1000; } if( fd<0 ) { fd += 1000; } return '@'+fd; },
            'g':function(d)             { var fd; fd = d.getHours(); return fd==0 ? 12:( fd>12 ? fd-12:fd ); },
            'G':function(d)             { return d.getHours(); },
            'h':function(d)             { var fd; fd = d.getHours(); return ( fd<10 || ( 12<fd<22 ) ? '0':'' ) + ( fd<10 ? fd+1:fd-12 ); },
            'H':function(d)             { var fd; fd = d.getHours(); return fd<10 ? '0'+fd:fd; },
            'i':function(d)             { var fd; fd = d.getMinutes(); return fd<10 ? '0'+fd:fd; },
            's':function(d)             { var fd; fd = d.getSeconds(); return fd<10 ? '0'+fd:fd; },
            'I':function(d)             { var fd,f0; fd = d.getFullYear(); f0 = new Date(fd, 0, 1); return d.getTimezoneOffset()!=f0.getTimezoneOffset() ? 1:0; },
            'O':function(d)             { var fd; fd = d.getTimezoneOffset(); return ( fd<0 ? '-':'+' ) + ( fd/60<10 ? '0':'' ) + ( fd/60 ) + '00'; },
            'P':function(d)             { var fd; fd = d.getTimezoneOffset(); return ( fd<0 ? '-':'+' ) + ( fd/60<10 ? '0':'' ) + ( fd/60 ) + ':00'; },
            'Z':function(d)             { var fd; fd = d.getTimezoneOffset(); return fd*60; },
            'r':function(d)             { return d.toString(); },
            'U':function(d)             { var fd; fd = d.getTime(); return fd/1000; }
        },
        'print':function(d,f)           { var r,p,i; r = ''; for( i=0; i<f.length; i++ ) { var c; c = f.charAt(i); if( this._f[c] ) { r += this._f[c](d); } else { r += c; } } return r; }
    };
//------------------------------------------------------------------------------
    function init() {
    _brw.app  = n.appVersion; _brw.ua   = n.userAgent; _brw.lang = n.userLanguage || n.language; _brw.mode = d.compatMode; _brw.cxy  = [ d.body.clientWidth, d.body.clientHeight ]; _brw.dxy  = [ d.width || d.body.scrollWidth, d.height || d.body.scrollHeight ];
    _dom.applyVfx( d.body ); } addLoad(init);
//------------------------------------------------------------------------------
//  SERVICE SCREEN FUNCTIONS
    function validateService(p1) {
        var servName       = gbi(p1+'serv_name').value;
        var servVendor     = gbi(p1+'serv_vendor').value;
        var servSiteURL    = gbi(p1+'serv_siteurl').value;
        var servGoogleCode = gbi(p1+'serv_googlecode').value;
        var errs = [];
        if(!_frm.validate(servName,_frm._rgx.name,0) || servName.length<1 ){ errs.push('Service Name Invalid');}
        if(!_frm.validate(servVendor,_frm._rgx.name,0)){ errs.push('Service Vendor Invalid');}
        if(servSiteURL.length>0){if(!_frm.validate(servSiteURL,_frm._rgx.siteurl,0)){ errs.push('Site URL Invalid');}}
        //if(!_frm.validate(servGoogleCode,_frm._rgx.username,0)) { errs.push('Google Verification Code Invalid');}
        if( errs.length > 0 ) {
            alert(errs.length+' Errors:\n\n'+errs.join('\n'));
        } else {
            gbi(p1+'serviceform').submit();
        }
    }
    function showAdvancedEdit() {
        gbi('advancedbutton').hide();
        gbi('advanceddiv').show();
    }
    function deleteServiceAttribute(p1) {
        var dodel = confirm('Are you sure you want to delete this attribute?');
        if( dodel ) { w.location = p1; }
    }
    function remChildServAttribs() { 
        alert('You must remove this Attributes children before you can delete it.');
    }
    function showSelectDevice(p1) {
        gbi('selectdeviceif').src = p1;
        gbi('selectdevicediv').show();
    }
    function hideSelectDevice() {
        gbi('selectdevicediv').hide();
    }
    function selectDevice(p1,p2,p3) {
        parent.deviceParams(p1,p2,p3);
        parent.hideSelectDevice();
    }
    function deviceParams(p1,p2,p3) {
        gbi('emu_ua').value = p1;
        gbi('emu_x').value  = p2;
        gbi('emu_y').value  = p3;
    }
    function randn() { return Math.floor( 10 * Math.random() ); }
    function emulateDevice(p1,p2,p3,p4,p5) {
        if( p4 ) {
            var randmsisdn = '0'+randn()+randn()+randn()+randn()+randn()+randn()+randn()+randn()+randn()+randn();
            p1 = p1.replace( 'msemu_msisdn=00000000000','msemu_msisdn='+randmsisdn );
        }
        if( p5 == 'Default' ) {
            p1 = p1.replace( '&render_ml=Default','' );
        }
        p2=parseInt(p2)+50;
        p3=parseInt(p3)+95;
        var w1='height='+p3+',width='+p2+',status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=1,scrollbars=1';
        var w2=w.open(p1,'emulator',w1);
        if(!w2) {
            var s1='Launch was not successful!\\n-------------------------------------\\nYou may need to disable your\\nbrowsers pop-up blocker to\\nuse the Emulator.';
            alert(s1);
        }
    }
//------------------------------------------------------------------------------
//  GROUP SCREEN FUNCTIONS
    function enableSiteMap() {
        var smcells = gbc('sm_td');
        for(var i = 0; i < smcells.length; i++) {
            smcells[i].show();
        }
    }
    function saveSiteMap() {
        var frm      = gbi('sitemapsubmit');
        var sminputs = gbc('sm_input');
        for(var i = 0; i < sminputs.length; i++) {
            var hidinp = d.createElement('input');
            hidinp.type  = 'hidden';
            hidinp.name  = sminputs[i].id;
            if( sminputs[i].value == 'checkbox' ) {
                if( sminputs[i].checked ) {
                    hidinp.value = 'yes';
                } else {
                    hidinp.value = 'no';
                }
            } else {
                hidinp.value = sminputs[i].value;
            }
            frm.appendChild( hidinp );
        }
        frm.submit();
    }
/*----------------------------------------------------------------------------*/
function objectOrderDecrement( objRef ) {
    var objOrd = getObjOrderFromRef( objRef );
    if( objOrd == 1 ) {
        alert( 'This object is already first' );
    } else {
        var targOrd = parseInt( objOrd ) - 1;
        _setObjectOrder( objRef,targOrd,true );
    }
}
function objectOrderIncrement( objRef ) {
    var objOrd  = getObjOrderFromRef( objRef );
    var targOrd = parseInt( objOrd ) + 1;
    _setObjectOrder( objRef,targOrd,true );
}
function changeObjectOrder( objRef ) {
    var targOrd = parseInt( gbi('order_target_'+objRef).value );
    if( targOrd ) {
        _setObjectOrder( objRef,targOrd,false );
    } else {
        alert( 'The order target you entered was invalid' );
    }
}
/*----------------------------------------------------------------------------*/
function _setObjectOrder( objRef,targOrd,swap ) {

 // get object properties
    var objOrd  = getObjOrderFromRef(   objRef  );
    var objIdx  = getObjIndexFromRef(   objRef  );
    var targRef = getObjRefFromOrder(   targOrd );
    var targIdx = getObjIndexFromOrder( targOrd );

    if( isNull( targRef ) ) {

     // set new object order in tacking array
        setObjOrdFromRef( objRef, targOrd );

     // show change to user
        gbi('object_ord_'+objRef ).innerHTML = targOrd;

    } else {
        if( swap ) {

         // alert('swap '+objRef+' with '+targRef);

         // get html elements and clones
            var originObj   = gbi('object_tr_'+objRef);
            var originClone = originObj.cloneNode(true);
            var parentObj   = originObj.parentNode;
            var targetObj   = gbi('object_tr_'+targRef);
            var targetClone = targetObj.cloneNode(true);

         // swap html elements
            parentObj.replaceChild( targetClone,originObj );
            parentObj.replaceChild( originClone,targetObj );
            gbi('object_ord_'+objRef ).innerHTML = targOrd;
            gbi('object_ord_'+targRef).innerHTML = objOrd;

         // swap objects in tracking array
            setObjOrdFromRef(   objRef,  targOrd );
            setObjOrdFromRef(   targRef, objOrd  );
            swapObjIndexByRef(  objRef,  targRef );

        } else {

            alert('shuffle required');

        }
    }

}
/*----------------------------------------------------------------------------*/
function getObjOrderFromRef( objRef ) {

    var arySize = groupObjectOrders.length;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].reference == objRef ) {
            return groupObjectOrders[i].order;
        }
    }
    return null;

}
function getObjIndexFromRef( objRef ) {

    var arySize = groupObjectOrders.length;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].reference == objRef ) {
            return i;
        }
    }
    return null;

}
function getObjRefFromIndex( objIdx ) {

    return groupObjectOrders[objIdx].reference;

}
function getObjOrderFromIndex( objIdx ) {

    return groupObjectOrders[objIdx].order;

}
function getObjIndexFromOrder( objOrd ) {

    var arySize = groupObjectOrders.length;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].order == objOrd ) {
            return i;
        }
    }
    return null;

}
function getObjRefFromOrder( objOrd ) {

    var arySize = groupObjectOrders.length;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].order == objOrd ) {
            return groupObjectOrders[i].reference;
        }
    }
    return null;

}
/*----------------------------------------------------------------------------*/
function setObjOrdFromRef( objRef, newVal ) {

    var arySize = groupObjectOrders.length;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].reference == objRef ) {
            groupObjectOrders[i].order = newVal;
        }
    }

}
function setObjectIndex( objIdx ) {alert(objIdx);

 // get object order
    var objOrd = parseInt( groupObjectOrders[objIdx].order );

 // determin required movement direction
    var mvDir = 0;
    var prevIdx = parseInt( objIdx ) - 1;
    var nextIdx = parseInt( objIdx ) + 1;
    if( objIdx > 1 ) {
        var prevOrd = parseInt( groupObjectOrders[prevIdx].order );
        if( prevOrd > objOrd ) { mvDir = -1; }
    }
    if( objIdx < groupObjectOrders.length ) {
        var nextOrd = parseInt( groupObjectOrders[nextIdx].order );
        if( nextOrd < objOrd ) { mvDir = 1; }
    }

    if( mvDir < 0 ) {

     // decrement object index
        

    } else if( mvDir > 0 ) {

     // increment object index
        

    } else {

     // object already correctly indexed
        return objIdx;

    }

}
/*----------------------------------------------------------------------------*/
function swapObjIndexByIndex( objIdx,targIdx ) {

    var originObj = groupObjectOrders[objIdx];
    var targetObj = groupObjectOrders[targIdx];
    groupObjectOrders[targetIdx] = originObj;
    groupObjectOrders[originIdx] = targetObj;

}
function swapObjIndexByRef( objRef,targRef ) {

    var arySize = groupObjectOrders.length;
    var originObj; var originIdx;
    var targetObj; var targetIdx;
    for( var i=0; i<arySize; i++ ) {
        if( groupObjectOrders[i].reference == objRef ) {
            originIdx = i;
            originObj = groupObjectOrders[i];
        }
        if( groupObjectOrders[i].reference == targRef ) {
            targetIdx = i;
            targetObj = groupObjectOrders[i];
        }
    }
    groupObjectOrders[targetIdx] = originObj;
    groupObjectOrders[originIdx] = targetObj;

}
/*----------------------------------------------------------------------------*/
function saveObjectOrder() {

    var frm = gbi('save_submit_form');

    for( var i=0; i<groupObjectOrders.length; i++ ) {

        var newOrdInpt   = d.createElement('input');
        newOrdInpt.type  = 'hidden';
        newOrdInpt.name  = 'new_order_for_'+groupObjectOrders[i].reference;
        newOrdInpt.value = groupObjectOrders[i].order;
        frm.appendChild( newOrdInpt );

    }

    frm.submit();

}
//------------------------------------------------------------------------------
//  LEGACY MUSIA SCRIPT SUPPORT
    function Boxed( Name,Action ) {
        if(!document.getElementById || !Name) return false;
        var Elements = document.getElementsByTagName("input");
        var State = true;
        if(Action == 'uncheck') {State = false}
        else if(Action == 'invert') {State = 'invert'}
        for(var i = 0; i < Elements.length; i++) {
            if(Elements[i].type == "checkbox") {
                if(Elements[i].name == Name) {
                    Elements[i].checked = (State == 'invert') ? !Elements[i].checked : State;
                }
            }
        }
        return false;
    }
//------------------------------------------------------------------------------
