var ynq = new Array('q2', 'q6', 'q10', 'q14', 'q18', 'q22', 'q24', 'q26', 'q28', 'q30');

function init() { /* {{{ */
    if (document.getElementById('airform')) {
        document.getElementById('airform').style.visibility = 'hidden';
        initYesNo();
        document.getElementById('airform').style.visibility = 'visible';
    };
}; /* }}} */
function initYesNo() { /* {{{ */
    var amt;
    var whasischecked;
    var radioinputs;
    hideYesNoUnknownTabIndex();
    jsCSSYesNo();
    for (var i = 0; i < ynq.length; i++) {
        whatischecked = getRadioValueByName(ynq[i] + 'a');
        /* If yes is not checked, disable the field */
        if (whatischecked != 0) {
            amt = getIdsByName(ynq[i] + 'a');
            amt = amt[0];
            setYesNoAmountVisibility(amt, false, true);
        };
        /* Add input handlers to the radio buttons */
        radioinputs = getIdsByName(ynq[i] + 'a');
        for (var j = radioinputs.length; j > 0; j--) {
            addEvent(document.getElementById(radioinputs[j - 1]), 'click', updateYesNoState);
            addEvent(document.getElementById(radioinputs[j - 1]), 'keypress', updateYesNoState);
        };
    };
}; /* }}} */
function hideYesNoUnknownTabIndex() { /* {{{ */
    var unknown;
    var myinput;
    var yesno = getElementsByClassName(document, 'div', 'yesno');
    for (var i = yesno.length; i > 0; i--) {
        unknown = getElementsByClassName(yesno[i - 1], 'div', 'unknown');
        unknown = unknown[0];
        myinput = unknown.getElementsByTagName('input');
        myinput = myinput[0];
        myinput.tabIndex = -1;
    };
}; /* }}} */
function pause(numberMillis) { /* {{{ */
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime) {
            return;
        };
    };
}; /* }}} */
function getElementsByClassName(oElm, strTagName, strClassName) { /* {{{ */
    var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        };
    };
    return (arrReturnElements);
}; /* }}} */
function addOnloadEvent(fnc){ /* {{{ */
  if ( typeof window.addEventListener != "undefined" )
    window.addEventListener( "load", fnc, false );
  else if ( typeof window.attachEvent != "undefined" ) {
    window.attachEvent( "onload", fnc );
  }
  else {
    if ( window.onload != null ) {
      var oldOnload = window.onload;
      window.onload = function ( e ) {
        oldOnload( e );
        window[fnc]();
      };
    }
    else
      window.onload = fnc;
  }
} /* }}} */
    function getIdsByName(name) { /* {{{ */
        var ids = new Array();
        var inputs = document.getElementsByTagName('input');
        for (var i = inputs.length - 1; i >= 0; i--) {
            if (inputs[i].name == name) {
                ids.push(inputs[i].id);
            };
        };
        return ids;
    }; /* }}} */
function hasClass(node, className) { /* {{{ */
  if (node.className == className) {
    return true;
  }
  var reg = new RegExp('(^| )'+ className +'($| )')
  if (reg.test(node.className)) {
    return true;
  }
  return false;
}; /* }}} */
function addClass(node, className) { /* {{{ */
  if (hasClass(node, className)) {
    return false;
  }
  node.className += ' '+ className;
  return true;
}; /* }}} */
function removeClass(node, className) { /* {{{ */
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^| )'+ className +'($| )', '', node.className);
  return true;
}; /* }}} */
function toggleClass(node, className) { /* {{{ */
  if (!removeClass(node, className) && !addClass(node, className)) {
    return false;
  }
  return true;
}; /* }}} */
function eregReplace(search, replace, subject) { /* {{{ */
    return subject.replace(new RegExp(search,'g'), replace);
}; /* }}} */
function getRadioValueByName(name) { /* {{{ */
    var ids = getIdsByName(name);
    for (var i = ids.length; i > 0; i--) {
        if (document.getElementById(ids[i - 1]).checked == true) {
            return document.getElementById(ids[i - 1]).value;
        };
    };
    return false;
}; /* }}} */

function getStandardEvent(e) { /* {{{ */
    if (e == null && window.event) {
        e = window.event ;
    }
    if (e.target == null && e.srcElement) {
        e.target = e.srcElement ;
    }
    if (!e.preventDefault){
        e.preventDefault = function () { this.returnValue = false ; } ;
    }
    return e;
}; /* }}} */
function standardizeEvent(event) { /* {{{ */
    if (!event.stopPropagation) { 
        event.stopPropagation = new Function('this.cancelBubble = true'); 
    }; 
}; /* }}} */
function addStyle(string) { /* {{{ */
    if (/microsoft/i.test(navigator.appName) && !/opera/i.test(navigator.userAgent)) {
        document.createStyleSheet().cssText = string;
    }
    else {
        var ele = document.createElement('link');
        ele.rel = 'stylesheet';
        ele.type = 'text/css';
        ele.href = 'data:text/css;charset=utf-8,' + escape(string);
        document.getElementsByTagName('head')[0].appendChild(ele);
    };
}; /* }}} */
function jsCSSYesNo() { /* {{{ */
    addStyle('div.unknown { display: none; } span.if { display: none; } span.then { text-transform: capitalize; }');
}; /* }}} */

function setYesNoAmountVisibility(id, v, initial) { /* {{{ */
    var subquestion;
    var subinputs;
    if (v == false) {
        subquestion = getElementsByClassName(document.getElementById(id).parentNode.parentNode.parentNode.parentNode, 'div', 'subquestion');
        if (!initial) {
            // check if block is already hidden
            if (subquestion[0].style.display != 'none') {
                for (var i = 100; i >= 0; i -= 10) {
                    setTimeout('blockFontSize("' + subquestion[0].id + '", "' + i + '")', 5 * (100 - i));
                };
            };
        }
        else {
            subquestion[0].style.display = 'none';
        }
        subinputs = subquestion[0].getElementsByTagName('input');
        for (var i = subinputs.length; i > 0; i--) { 
            subinputs[i - 1].disabled = true;
        };
    }
    else {
        subquestion = getElementsByClassName(document.getElementById(id).parentNode.parentNode.parentNode.parentNode, 'div', 'subquestion');
        if (!initial) {
            // check if block is already shown
            if (subquestion[0].style.display == 'none') {
                for (var i = 0; i <= 100; i += 10) {
                    setTimeout('blockFontSize("' + subquestion[0].id + '", "' + i + '")', 5 * i);
                };
            };
        }
        else {
            subquestion[0].style.display = 'block';
        };
        subinputs = subquestion[0].getElementsByTagName('input');
        for (var i = subinputs.length; i > 0; i--) { 
            subinputs[i - 1].disabled = false;
        };
    };
    return true;
}; /* }}} */
function updateYesNoState(e) { /* {{{ */
    e = getStandardEvent(e);
    standardizeEvent(e);
    e.stopPropagation();
    var target;
    if (e.target) { target = e.target; } else { target = this; };
    var value = getRadioValueByName(target.name);
    /* If value is set to 1, disable the amount widget, if not, enable it */
    if (value == 0) { 
        setYesNoAmountVisibility(target.id, true); 
    }
    else {
        setYesNoAmountVisibility(target.id, false); 
    };
    return true;
}; /* }}} */

function blockFontSize(id, size) { /* {{{ */
    /* javscript rounding errors... */
    if (size > 0) {
        document.getElementById(id).style.display = 'block';
    }
    else {
        document.getElementById(id).style.display = 'none';
    };
    setOpacity(document.getElementById(id), size);
    //size = 0.01 * size;
    document.getElementById(id).style.fontSize = size + '%';
}; /* }}} */
function setOpacity(obj, opacity) {  /* {{{ */
    opacity = (opacity == 100)?99.999:opacity;
    obj.style.filter = "alpha(opacity:"+opacity+")";
    obj.style.KHTMLOpacity = opacity/100;
    obj.style.MozOpacity = opacity/100;
    obj.style.opacity = opacity/100; 
}; /* }}} */

addOnloadEvent(init);

