/*
    FAQ functions for staedion.nl
    

    Zicht Nieuwe Media Ontwerpers.
    Gerard van Helden
*/


zzFaq = {};
zzFaq.REGEX = RegExp ( '(^|\\s+)open(\\s+|$)', 'g' );
zzFaq.openSign = '-';
zzFaq.closeSign = '+';


zzFaq.submit = function ( select ) {
    if ( select.options[select.selectedIndex].value ) {
        select.form.submit ();
    }
}


zzFaq.closeAll = function ( dl ) {
    // walk through dd's of the DL and turn them off.
    var siblingDds = dl.getElementsByTagName ( 'dd' );
    for ( var i = 0; i < siblingDds.length; i ++ ) {
        zzElement.removeClassName ( siblingDds.item(i), 'open' );
    }
    var siblingDts = dl.getElementsByTagName ( 'dt' );
    for ( var i = 0; i < siblingDts.length; i ++ ) {
        zzFaq.setSign ( siblingDts.item(i), '+' );
    }
    dl.parentNode.style.backgroundPosition = 'top left';
}

zzFaq.setSign = function ( dt, sign ) {
    dt.firstChild.firstChild.nodeValue = sign;
}

zzFaq.answer = function ( questionClicked ) {
		
    var ptr = questionClicked;
    
    // find dt parent node of clicked element
    while ( ptr && ptr.nodeName.toLowerCase () != 'dt' ) {
        ptr = ptr.parentNode;
    }
    if ( !ptr ) { alert ( 'DT not found' ); return;}
    var dt = ptr;
    var dl = dt.parentNode;
    
    // find dd sibling node of dt 
    do {
        ptr = ptr.nextSibling;
    } while ( ptr && ptr.nodeName.toLowerCase () != 'dd' );
    
    if ( !ptr ) { alert ( 'DD not found' ); return; }
    
    if ( zzElement.hasClassName ( ptr, 'open' ) ) {
        zzFaq.setSign ( dt, '+' );
        zzFaq.closeAll ( dl );
        //zzFaq.unloadRelatedContent ();
    } else { 
        zzFaq.closeAll ( dl );
        zzElement.addClassName ( ptr, 'open' );
        zzFaq.setSign ( dt, '-' );
        
        // calculate background top position;
        var backgroundTop = 0;
        do {
            backgroundTop += (ptr.offsetHeight || 0); 
        } while ( ptr = ptr.previousSibling );
        
        dl.parentNode.style.backgroundPosition = ('left ' + backgroundTop + 'px' );
        //zzFaq.loadRelatedContent ( ptr );
    }
    return false;
}

zzFaq.loadRelatedContent = function ( selectedDd ) {
    // TODO implement realtime loading of related content.
    
    // TEMPORARY FIX:
    document.getElementById ( 'faqItemRelatedContent' ).style.display = 'block';
    document.getElementById ( 'faqMainContent' ).style.display = 'none';
}

zzFaq.unloadRelatedContent = function () {
    document.getElementById ( 'faqItemRelatedContent' ).style.display = 'none';
    document.getElementById ( 'faqMainContent' ).style.display = 'block';
}
