var g_poptimeout = 30000; //in msec

var g_errormsg_01 = 'Vout min is not a number!';
var g_errormsg_02 = 'Vout max is not a number!';
var g_errormsg_03 = 'Vout min range error (+-30)!';
var g_errormsg_04 = 'Vout max range error (+-30)!';
var g_errormsg_05 = 'Absolute value of Vout Max – Vout Min must be &lt; 30';
var g_errormsg_06 = 'An Analog +V must be selected';
var g_errormsg_07 = 'An Analog -V must be selected';

/* --------------------------------------------------------------------- */

var g_isIE6 = false;


/***********************
 * ENHANCE
 ***********************/


// add multiple loadevents - (source: http://simon.incutio.com/archive/2004/05/26/addLoadEvent)
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') 
	{
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) { oldonload(); }
			func();
		}
	}
	
}

//string.has
String.prototype.has = function ( pSubStr ) { if (this.indexOf(pSubStr)!=-1) { return(true); } else return(false); }

//string.flip -- change first substring to second and vice versa
String.prototype.flip = function( pFrom, pTo ) {
	if (this.has(pFrom)) return(this.replace(pFrom,pTo))
		else return(this.replace(pTo,pFrom));
}

//shorthand for gebtn
function $T() {
	var elements = new Array();
	var elStrings = new Array();
	var elObjects = new Array();
	for (var i = 0; i < arguments.length; i++) { 
		if (typeof arguments[i] == 'string') elStrings.push(arguments[i])
			else elObjects.push(arguments[i]); 
	}
	elObjects.each( function(eo){ 
		elStrings.each( function(es){ 
			elements = elements.concat($A( eo.getElementsByTagName(es) ));
		});
	});
	return elements;
}

//simplify appendchildren
Element.Methods.append = function( element, pChild ) {
    element = $(element);
    if (pChild.indexOf('$') == 0) return $( element.appendChild( document.createTextNode( pChild.substr(1,pChild.length-1).xmlEntities() ) ) );
        else return $( element.appendChild( document.createElement( pChild ) ) ); 
}

//some setters
Element.Methods.setHeight = function( element, pSize, pUnit ) {
    element = $(element);
    if (!pUnit) pUnit = "px";
    element.style.height = String ( pSize + pUnit );
}

Element.Methods.setWidth = function( element, pSize, pUnit ) {
    element = $(element);
    if (!pUnit) pUnit = "px";
    element.style.width = String ( pSize + pUnit );
}

//no anim needed
Element.Methods.setAlpha = function( element, opacity ) {
    element = $(element);
    opacity = (opacity == 100)?99.999:opacity;
    element.style.filter = "alpha(opacity:"+opacity+")";
    element.style.KHTMLOpacity = opacity/100;
    element.style.MozOpacity = opacity/100;
    element.style.opacity = opacity/100;
}

//populate in proto 
Element.addMethods();

/***********************
 * FUNCTIONS
 ***********************/

 
//enable/disable all form elements
function switchAllFields( pTargetClass, pStateString ) {
    if (!pStateString) pStateString = 'disabled';
    var targets = new Array();
    targets = $$('.' + pTargetClass + ' INPUT').concat($$('.' + pTargetClass + ' SELECT'));
    targets.each( function(inp) {
        if (pStateString == 'disabled')
        {
            inp.disabled = pStateString;
            if (inp.type != 'checkbox') inp.addClassName('disabledInput');
        } else {
            inp.removeAttribute('disabled');
            inp.removeClassName('disabledInput');            
        }
    });    
}

//frontend for switchallfields
function setConfColoumnsContainerFields( pActionString) {
 
    if (pActionString == 'lock')
    {
        $$('.confColoumnsContainer')[0].addClassName('cccGreyOut');
        switchAllFields('confColoumnsContainer');
        $$('input.jsID_confSubmit')[0].disabled="disabled";
    } else {
        $$('.confColoumnsContainer')[0].removeClassName('cccGreyOut');
        switchAllFields('confColoumnsContainer','enable');
        $$('input.jsID_confSubmit')[0].disabled=false;
    }
}

//show hide reference type groups
function refTypeSelect( pSender ) {
    var sval = pSender.options[pSender.selectedIndex].value;
    
    // required based on BCO format
    if (sval == 'Variable Vref (DC)') sval = 'VariableVref'
     if (sval == 'Ideal (User Defined)') sval = 'IdealReference'
   
    $$('tr.jsGroup_refType').each( function(row) { row.removeClassName('hidden'); });
    $$('.jsGroup_refType td').each( function(row) { row.style.display='none'; }); //vs ie css bug
    $$('tr.jsGroupID_' + sval + ' td').each( function(row) { row.style.display=''; });
}


//show/hide Input Changed Message
function toggleInputChangedMsg(sState) {  
    if (sState == "show") {
        $$('div.jsGroup_inputChanged').each( function(cont) { cont.show() });
    }
    
    else {
        $$('div.jsGroup_inputChanged').each( function(cont) { cont.hide() });
       }
       
    //'div.jsGroup_inputChanged'.show();
  
}



//show error messages
function errormsg( pErrorsArray ) {
    var box1 = $$('.jsIDeC_01')[0];
    var box2 = $$('.jsIDeC_02')[0];
    var errors = '';
    if ((box1) && (box2)) //configuration page's boxes
    {
        if (pErrorsArray) {
            box1.hide();
            errors = '';
            pErrorsArray.each( function(lines,i) { errors += '<li> ' + (i+1) + '. ' + lines + '</li>'; });
            box2.getElementsByTagName('ul')[0].innerHTML = errors;
            box2.show();
        } else {
            box1.show(); box2.hide();        
        }
    }
    
    if ($$('.jsPID_editConfig')[0]) //editconf page
    {
        if(pErrorsArray)
        {
            $$('.jsID_errorBox').each( function(element) {
                errors = '';
                pErrorsArray.each( function(lines,i) { errors += '<p>' + lines + '</p>'; });
                element.down('.content').innerHTML = errors;
            });
            $$('.eccGenErrorMsg')[0].show();
        } else {
            $$('.eccGenErrorMsg')[0].hide();
        }
    }
}

function beforeConfSubmit( pNoSubmit ) {
    if (pNoSubmit) return false;
}

//check output voltage values before submit
function beforeConfSubmit2( pNoSubmit ) {

    function setError( pInput )    { pInput.up('tr').addClassName('error'); }
    function removeError( pInput ) { pInput.up('tr').removeClassName('error'); }
    
    var voutmin = $$('input.jsID_voutMinText')[0]; 
    var voutmax = $$('input.jsID_voutMaxText')[0];
    removeError(voutmin);
    removeError(voutmax);
    
    var analogPlus8 = document.getElementById('chkEditAnalogPosVolt8');
    
    
    var errors = new Array();
    
    if (isNaN(Number(voutmin.value))) { errors.push(g_errormsg_01); setError(voutmin); errormsg(errors); return false; }
    if (isNaN(Number(voutmax.value))) { errors.push(g_errormsg_02); setError(voutmax); errormsg(errors); return false; }
    
    if ( (voutmin.value < -30) || (voutmin.value > 30) ) { errors.push(g_errormsg_03); setError(voutmin); } 
    if ( (voutmax.value < -30) || (voutmax.value > 30) ) { errors.push(g_errormsg_04); setError(voutmax); }
    
    if ( Math.abs(voutmax.value) - Math.abs(voutmin.value) >= 30 ) { errors.push(g_errormsg_05); setError(voutmin); setError(voutmax); }
    
    if (highestAnalogPlus() == -1 || highestAnalogMinus() == -1) { 
        if(highestAnalogPlus() == -1){
            analogPlus8.addClassName('editConfigErrorInput');
            return false;
        }
        if(highestAnalogMinus() == -1){
            errors.push(g_errormsg_07);
        }
    }
    
    if (errors.length > 0) { errormsg(errors); return false; }
        else errormsg();
    if (pNoSubmit) return false;
    
    document.form1.submit();
    
    
}

//return the highest analog+ power supply checked.  -1 if none are checked
function highestAnalogPlus()
{
    var chkEditAnalogPosVolt1 = document.getElementById('chkEditAnalogPosVolt1');
    var chkEditAnalogPosVolt2 = document.getElementById('chkEditAnalogPosVolt2');
    var chkEditAnalogPosVolt3 = document.getElementById('chkEditAnalogPosVolt3');
    var chkEditAnalogPosVolt4 = document.getElementById('chkEditAnalogPosVolt4');
    var chkEditAnalogPosVolt5 = document.getElementById('chkEditAnalogPosVolt5');
    var chkEditAnalogPosVolt6 = document.getElementById('chkEditAnalogPosVolt6');
    var chkEditAnalogPosVolt7 = document.getElementById('chkEditAnalogPosVolt7');
    var chkEditAnalogPosVolt8 = document.getElementById('chkEditAnalogPosVolt8');
    
    var highestChecked = -1;
    
    if(chkEditAnalogPosVolt1.checked)
    {
        highestChecked = 1.8;
    }
    if(chkEditAnalogPosVolt2.checked)
    {
        highestChecked = 2.7;
    }
    if(chkEditAnalogPosVolt3.checked)
    {
        highestChecked = 3;
    }
    if(chkEditAnalogPosVolt4.checked)
    {
        highestChecked = 3.3;
    }
    if(chkEditAnalogPosVolt5.checked)
    {
        highestChecked = 5;
    }
    if(chkEditAnalogPosVolt6.checked)
    {
        highestChecked = 12;
    }
    if(chkEditAnalogPosVolt7.checked)
    {
        highestChecked = 15;
    }
    if(chkEditAnalogPosVolt8.checked)
    {
        highestChecked = 30;
    }
    
    return highestChecked;
}

//return the "highest" analog- power supply checked.  -1 if none are checked
function highestAnalogMinus()
{
    var chkEditAnalogNegVolt1 = document.getElementById('chkEditAnalogNegVolt1');
    var chkEditAnalogNegVolt2 = document.getElementById('chkEditAnalogNegVolt2');
    var chkEditAnalogNegVolt3 = document.getElementById('chkEditAnalogNegVolt3');
    var chkEditAnalogNegVolt4 = document.getElementById('chkEditAnalogNegVolt4');
    var chkEditAnalogNegVolt5 = document.getElementById('chkEditAnalogNegVolt5');
    var chkEditAnalogNegVolt6 = document.getElementById('chkEditAnalogNegVolt6');
    var chkEditAnalogNegVolt7 = document.getElementById('chkEditAnalogNegVolt7');
    var chkEditAnalogNegVolt8 = document.getElementById('chkEditAnalogNegVolt8');
    
    var highestChecked = -1;
    
    if(chkEditAnalogNegVolt1.checked)
    {
        highestChecked = 0;
    }
    if(chkEditAnalogNegVolt2.checked)
    {
        highestChecked = -2.7;
    }
    if(chkEditAnalogNegVolt3.checked)
    {
        highestChecked = -3;
    }
    if(chkEditAnalogNegVolt4.checked)
    {
        highestChecked = -3.3;
    }
    if(chkEditAnalogNegVolt5.checked)
    {
        highestChecked = -5;
    }
    if(chkEditAnalogNegVolt6.checked)
    {
        highestChecked = -12;
    }
    if(chkEditAnalogNegVolt7.checked)
    {
        highestChecked = -15;
    }
    if(chkEditAnalogNegVolt8.checked)
    {
        highestChecked = -30;
    }
    
    return highestChecked;
}



//autocloser - have fun
function setTimeoutClose( pTarget, pExtraFunc ) {
    var timeout = g_poptimeout;
    var item = pTarget;
    item.timed = 0;
    item.clock = null;
    
    item.overReset = function() { //make it easily accessible from outside this scope
        clearTimeout(this.clock); this.clock = null;
    }
    
    Event.observe(item, 'mouseover', function(event) { item.overReset(); });
    
    onMouseLeave(item, function(){
        this.clock = setTimeout(function(){
            item.hide();
            item.clock = null;
            if (typeof(pExtraFunc)=='function') pExtraFunc();
        }.bind(item,pExtraFunc),timeout);
    });
}

//fix ie6 dropdown
function applyAutoIframeFix( pClassName ) {
    if (g_isIE6)
    {
        $$('.' + pClassName).each( function(element) {
            element.show();
            var iftarget = element.append('IFRAME');
            iftarget.addClassName('ie6fix');
            iftarget.setHeight(element.getHeight());
            iftarget.setWidth(element.getWidth());
            element.hide();
        });
    }
}

//enable coverlayer for solution error
function coverSolutionPageError() {
    var solupage = $$('.soluPaneMain')[0];
    var soluinfo = $$('.coverSolutionPageError')[0];
    var cover    = $$('.coverSolutionPage')[0];
    var paddingOffset = 12;
    
    cover.show();
    cover.setHeight(solupage.getHeight()-2);
    cover.setAlpha(50);
    
    soluinfo.show();
    //soluinfo.style.marginTop = "-" + (solupage.getHeight()-paddingOffset) + "px";
    
    if (g_isIE6)
        $A(solupage.getElementsByTagName('SELECT')).each( function(select) { 
            select.style.visibility = 'hidden';
        });
}

//enable coverlayer for solution
function coverSolutionPage() {
    var solupage = $$('.soluPaneMain')[0];
    var soluinfo = $$('.coverSolutionPageInfo')[0];
    var cover    = $$('.coverSolutionPage')[0];
    var paddingOffset = 12;
    
    cover.show();
    cover.setHeight(solupage.getHeight()-2);
    cover.setAlpha(50);
    
    soluinfo.show();
    //soluinfo.style.marginTop = "-" + (solupage.getHeight()-paddingOffset) + "px";
    
    if (g_isIE6)
        $A(solupage.getElementsByTagName('SELECT')).each( function(select) { 
            select.style.visibility = 'hidden';
        });
}

function unCoverSolutionPage() {
    $$('.coverSolutionPage')[0].hide();
    $$('.coverSolutionPageInfo')[0].hide();
    $$('.coverSolutionPageError')[0].hide();
    $$('.soluPaneMain select').each( function(select) { select.style.visibility = ''; });
}

function hidediv(id)
{
    document.getElementById(id).style.visibility = "hidden";
    document.getElementById(id).style.display = "none"; 
}

function showdiv(id) 
{
    document.getElementById(id).style.visibility  = 'visible';
	document.getElementById(id).style.display = "inline";
}

// enable error mode (workaround for design anomaly)
function editConfigErrorMode() {
    
   // var errDiv = document.getElementbyID('coverSolutionPageError');
   // errDiv.
    
    options = Object.extend({
    	onload: false
    }, arguments[0] || {});
    
    
    var action = function(){
        var target = $$('.configContEdge')[0];
        var edconf = $$('.editConfigCont')[0];
        target.setHeight(edconf.getHeight()-1);
        target.show();
    }
    
    if (options.onload === false) action();
        else addLoadEvent(action);
}

/***********************
 * HTML ATTACH
 ***********************/


//config form submit action
function makeConfSubmit() {

    
    Event.observe($$('.jsID_confSubmit')[0], 'click', function(event) { beforeConfSubmit('nosubmit'); });
    addLoadEvent(function(){ beforeConfSubmit('nosubmit'); });
}

//reference type select
function makeRefTypeSelect() {
//debugger;
    $$('.jsID_refTypeSelect')[0].onchange = function() { refTypeSelect(this) };
    addLoadEvent(function(){ refTypeSelect($$('.jsID_refTypeSelect')[0]); });
}

//dac radiobutton action
function makeDACRadio() {
    var dmRadioA = $$('.jsID_dmRadioA')[0];
    Event.observe(dmRadioA, 'click', function(event) {
        if (dmRadioA.checked) $$('.jsID_dmSelect')[0].disabled = "disabled";
    });
    
    var dmRadioB = $$('.jsID_dmRadioB')[0];
    Event.observe(dmRadioB, 'click', function(event) {
        if (dmRadioB.checked) $$('.jsID_dmSelect')[0].removeAttribute('disabled');
    });
    
    addLoadEvent(function(){ if ($$('.jsID_dmRadioA')[0].checked) $$('.jsID_dmSelect')[0].disabled = "disabled"; });
}

//asc openers (boxes with plus signs)
function makeAscOpeners() {
    var plusSize = 22;
    $$('.ascVisible').each( function(ascv) {
        
        Event.observe(ascv, 'click', function(event) {
            if (!ascv.next('.ascData').visible())
            $$('.ascData').each( function(others) { others.hide(); });
            var layer = ascv.next('.ascData');
            layer.toggle();
            layer.overReset();
            if (layer.visible()) 
            { 
                layer.realLeaveFunction();
                if (ascv.up('td').hasClassName('jsPos_rightMost')) //parse width here in case the box changed a bit
                {
                    layer.style.marginLeft = "-" + (layer.getWidth()-ascv.getWidth()) + "px";
                } else {
                    layer.style.marginLeft = (ascv.getWidth()-plusSize) + "px";
                }
            }
            Event.stop(event);
        }.bind(plusSize));
        
        setTimeoutClose(ascv.next('.ascData')); //no post-function
    });
}

//pdf selector dropdown on solu page
function makeScBtmDocSel() {
    //var target = $$('.jsID_scBtmDocSel')[0]; //<- removed for non-interactive solution
    $$('.jsID_scBtmDocSel').each( function(target) { 
        Event.observe(target, 'change', function(event) {
            if ( (selitem = target.options[target.selectedIndex]).value != -1 ) window.open(selitem.value,'_blank');
            target.options[0].selected=true;
        });
    });
}


//filter popup switcher
function makeFPopSwitch( pTarget ) {

    var link = $$('.jsID_fPopSwitch')[0];
    link.target = pTarget;
    
    Event.observe(link, 'click', function(event) {
    
        var layer = $$('.'+link.target)[0];

    	layer.toggle();
        layer.overReset();
        if (layer.visible()) layer.realLeaveFunction();
    	Event.stop(event);
    });
    
    setTimeoutClose($$('.'+link.target)[0]);
    
    //also add close btn
    $$('.jsBtn_CloseFilter').each( function(closeBtn) { 
    	Event.observe(closeBtn, 'click', function(event) {
    		var layer = closeBtn.up('.filterPopup');
            layer.overReset();
            layer.hide();
    	});
    });
}

//view bill of materials button
function makeBillOfMatBtn() {
    var p = new Image(); p.src = 'img/btn_billofmat_on.gif';
    var link = $$('.jsID_billOfMatBtn')[0];
    
    Event.observe(link, 'click', function(event) { //observer for link
        link.down('img').src = link.down('img').src.flip('_on','_off');
        var layer = $$('.jsID_bomatPopup')[0]; 
        layer.toggle();
        layer.overReset(); //force reset timers
        if (layer.visible()) layer.realLeaveFunction();
        Event.stop(event);
    });
    
    //attach to + extra function hook
    setTimeoutClose($$('.jsID_bomatPopup')[0],function(){
        var img = $$('.jsID_billOfMatBtn img')[0];
        img.src = img.src.replace('_on','_off');
    });
    
    //add closer into the layer (links) here
    $$('.jsID_bomatPopup a.jsGID_bomExtLink').each( function(link) { 
    	Event.observe(link, 'click', function(event) {
            this.up('.jsID_bomatPopup').hide();
            this.up('.jsID_bomatPopup').overReset();
        }.bind(link));
    });
}

//blowout table (ie6 dom access speed sucks big time so this might be a bottleneck 
// #TODO:give settimeout throttling a chance)
function makeBOutTbl( pTargetClassName ) {
    $$('td.'+pTargetClassName).each( function(target) {
        var pipe   = target.down('input.jsID_blowCont');
        var table  = target.down('table.bOutTbl');
        var hid    = 0;
        
        //attach close button
        if ( (closebtn = target.down('.closeBtn')) )
            Event.observe(closebtn, 'click', function(event) {
                this.up('.ascData').hide();
                this.up('.ascData').overReset();
                Event.stop(event);
            }.bind(closebtn)); //inject loopback
            
        //links to parts (must close layer before opening _blank)
        if ( (link = target.down('.jsGID_blowData')) )
            Event.observe(link, 'click', function(event) {
                this.up('.ascData').hide();
                this.up('.ascData').overReset();            	
            }.bind(link));
        
        //select buttons
        $T(table,'TR').each( function(row) {
            if ( (hid = row.down('input.jsGID_PNum')) ) //do we have an input in the row?
            {
                if (hid.value == pipe.value) row.addClassName('selected');
            
                if ( (btn = row.down('div.btn a')) )
                {
                    btn.onclick = function() {  //observe broke
                        var self = $(this);
                        self.up('.ascOpener').down('.ascVisible').innerHTML = self.up('tr').down('a.jsGID_blowData').innerHTML;
                        self.up('.ascOpener').down('.jsID_blowCont').value  = self.up('tr').down('.jsGID_PNum').value;
                        self.up('.ascOpener').down('.jsID_DACTest').value = true;
                        $T(self.up('table'),'TR').each( function(row) { row.removeClassName('selected') });
                        self.up('tr').addClassName('selected');
                        self.up('.ascData').hide();
                        
                        var divInputChanged = $$('.ascInputChanged')[0];
                        toggleInputChangedMsg("show");
   
                        //submit form if the element changed was a DAC
                        var dacTester = document.getElementById('hdnIntSolTableDACTestDAC');
                        if(dacTester.value == 'true') document.form1.submit();
                    }
                }
            }
        });
    });
}

//performance analysis switcher
function makePerfAnLink() {
    
    
    var pane = $$('.js_paPaneWrapper')[0];
    pane.locked = 0;
    
    pane.open  = function() {
        if (pane.locked === 0)
        {
            pane.locked = 1; //single step lock
            new Effect.SlideDown(this, { 
                afterFinish: function() {
                    new Effect.ScrollTo($$('.paEndAnchor')[0]);
                    pane.locked = 0;
                }
            });
            
            var hdnPerfAnalysisOpen = document.getElementById('hdnPerfAnalysisOpen');
            hdnPerfAnalysisOpen.value = 'true';
        }
    }.bind(pane);
    
    pane.close = function() {
        if (pane.locked === 0)
        {
            pane.locked = 2; //multistep lock
            new Effect.SlideUp(this, { afterFinish: function(){pane.locked--} });
            new Effect.ScrollTo(document.body, { afterFinish: function(){pane.locked--} });
            
            var hdnPerfAnalysisOpen = document.getElementById('hdnPerfAnalysisOpen');
            hdnPerfAnalysisOpen.value = 'false';
        }
    }.bind(pane);
    
    var target = $$('a.jsID_perfAnLink')[0];
    Event.observe(target, 'click', function(event) {
    
    //alert ("gh2");
    	var target = $$('.js_paPaneWrapper')[0];
        if (!target.visible()) {
            
            //var hdnPerfAnalysisOpen = document.getElementById('hdnPerfAnalysisOpen');
            //hdnPerfAnalysisOpen.value = 'true';
            
            target.open();
            
        }
        else {
            //var hdnPerfAnalysisOpen = document.getElementById('hdnPerfAnalysisOpen');
            //hdnPerfAnalysisOpen.value = 'false';
        
            target.close();
        }
        
    	Event.stop(event);
    });
    
    var closer = $$('.jsID_paPaneCloser')[0];
    Event.observe(closer, 'click', function(event) {
    	this.up('.js_paPaneWrapper').close();
    	Event.stop(event);
    }.bind(closer));
    
}

//non-interactive solution tab switcher
function makeSoluTabs() {
    var jsid   = 'jsID_soluTabs';
    var links = $$('.' + jsid + ' a');
    
    links.each( function(link) { 
    	Event.observe(link, 'click', function(event) {
            var cell   = link.up('td');
            var prev   = cell.previous('td');
            var next   = cell.next('td');
            var conttg = link.href.replace(/[^#]*#/,'jsID_');
            
            if (!cell.className.has('_Act'))
            {
                //reset all
                $T(link.up('table'),'TD').each( function(cell) { 
                    cell.className = cell.className.replace('_Act','_InAct');
                    cell.className = cell.className.replace(/(_Left|_Right)/,'_None');
                });
    
                //mark actual
                cell.className = cell.className.replace('_InAct','_Act');
                prev.className = prev.className.replace('_None','_Right');
                prev.className = prev.className.replace('_InAct','_Act');
                next.className = next.className.replace('_None','_Left');
                next.className = next.className.replace('_InAct','_Act');
                
                //show selected div
                $$('div.jsGID_sniSubSect').each( function(cont) { 
                	cont.hide();
                    if (cont.hasClassName(conttg)) cont.show();
                });
            }
    		Event.stop(event);
    	});
    	
    });
}

//error boxes on edit configuration page
function makeErrorBoxes() {
    $$('.eccErrorBox').each( function(element) { 
    	Event.observe(element, 'mouseover', function(event) { $(element.parentNode).down('div.content').show(); }.bind(element));
    	Event.observe(element, 'mouseout', function(event) { $(element.parentNode).down('div.content').hide(); }.bind(element));
    });
}


//set the value of the hdnGenSuggestClickIndicator hidden input
function genSuggestClick() {
    var hdnGenSuggestClickIndicator = document.getElementById('hdnGenSuggestClickIndicator');
    hdnGenSuggestClickIndicator.value = 'true';
    
    if(document.form1.ddlDACSelect){
        document.form1.ddlDACSelect.disabled = true;
    }
    else
    {
        document.form1.ddlEditDACList.disabled = true;
    }
    
    document.form1.submit();
}

//set the initial config DAC selection dropdown on the configuration panel to be enabled
function enableConfigDACSelect()
{
    document.form1.ddlDACSelect.disabled = false;
}

//set the initial config DAC selection dropdown on the edit configuration panel to be enabled
function enableEditConfigDACSelect()
{
    document.form1.ddlEditDACList.disabled = false;
}


function changeDI()
{

    var tbxDI = document.getElementById('txtIntSolDigInput');
    var prevState = document.getElementById('DILastHistoryState').value;

    if (document.getElementById('rbIntSolDigInput1').checked == true)
    {   // Convert to BINARY
    
     //   debugger;
        //first determine last state     
        if (prevState == "d")
        { tbxDI.value = d2b(tbxDI.value); }         
        else // h
         { tbxDI.value = h2b(tbxDI.value); } 
          
        // set state for next run
        document.getElementById('DILastHistoryState').value = "b";      
    }  
    else if (document.getElementById('rbIntSolDigInput2').checked == true)
    { // Convert to DECIMAL

  //      debugger;
        // first determine last state
        if (prevState == "b")
        { tbxDI.value = b2d(tbxDI.value); }         
        else // h
         { tbxDI.value = h2d(tbxDI.value); } 
          
        // set state for next run
        document.getElementById('DILastHistoryState').value = "d";      
    }    
    else if (document.getElementById('rbIntSolDigInput3').checked == true)   
    { // Convert to HEX      
    
   //     debugger;
        //first determine last state
        if (prevState == "d")
        { tbxDI.value = d2h(tbxDI.value); }         
        else // b
         { tbxDI.value = b2h(tbxDI.value); } 
          
        // set state for next run
        document.getElementById('DILastHistoryState').value = "h";      
    }  
}
