

/* Comparison Table */

function validate_compare() {

    var f_compare = document.getElementById('f_compare');
    var c = f_compare.c;

    var selected = 0;
    for ( var i=0;i<c.length;++i ) {
        if ( c[i].checked ) {
            ++selected;
        }
    }

    if ( selected == 0 ) {
        document.getElementById('compare_message').innerHTML 
            = 'Please pick at least one candidate!'
        return false;
    }

    if ( selected > 3 ) {
        document.getElementById('compare_message').innerHTML 
            = 'You can only compare 3 candidates at a time!'
        return false;
    }

    return true;
}

var p = {};

function displayMessage(url, args)
{
    
    if ( args == null )
        args = {}

    var defaults = {
                modal: true,
                width: args.width,
                height: args.height,
                fixedcenter: true,
                underlay: 'shadow'
            };

    for ( i in defaults ) {
        args[i] = args[i] != null ? args[i] : defaults[i];
    }

    if ( typeof(p[url]) == 'object' ) {
        p[url].show();
        return;
    }

    var comparePanel = new YAHOO.widget.Panel(
            'compare', args
        );

    comparePanel.setHeader(args.title);
    comparePanel.setBody('Loading!');

    comparePanel.render();
    comparePanel.show();

    var callback = { 
            success: function(o) {
                //comparePanel.setHeader('Compare Candidates');
                comparePanel.setBody(o.responseText);
            },
            failure: function(o) {
                comparePanel.setBody("Unable to load table!");
            }
        };

    var conn = YAHOO.util.Connect.asyncRequest( 
                "GET", url, callback, null );

    
    p[url] = comparePanel;

}
    
/* Image swap, to be replaced with CSS */

function MM_preloadImages() { //v3.0
    var d=document;     
    if (d.images) {
        if (!d.MM_p) {
            d.MM_p=new Array();
        }
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
         for (i=0; i<a.length; i++) {
            if (a[i].indexOf("#")!=0) {
                d.MM_p[j]=new Image; 
                d.MM_p[j++].src=a[i];
            }
        }
    }
}

function MM_findObj(n, d) { //v4.01
    var p,i,x;
    if(!d) d=document;
    if((p=n.indexOf("?"))>0&&parent.frames.length) {
       d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
    }
    if(!(x=d[n])&&d.all) x=d.all[n]; 
    for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); 
    return x;
}

function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
    if ((x=MM_findObj(a[i]))!=null) {
        document.MM_sr[j++]=x; 
        if(!x.oSrc) x.oSrc=x.src; 
        x.src=a[i+2];
    }
}

function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; 
    for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


/* Signup Form Processing */

function onSignup() {

    var signup_form = document.getElementById('f_signup');
    YAHOO.util.Connect.setForm(signup_form);

    var m = document.getElementById('signupstatus');
    m.innerHTML = 'Sending...';

    var callback = {
        success: function(o) {

            var m = document.getElementById('signupstatus');
            m.style.display = 'none';

            var response = o.responseText.parseJSON();

            if ( response.success == 1 ) {

                m.innerHTML = 'Thanks for signing up!';
                m.style.display = '';

                var form = document.getElementById('f_signup');
                form.style.display = 'none';

                return false;
            }

            highlightErrors( response.missing );
            highlightErrors( response.invalid );

            m.innerHTML 
                = 'Please check your email address and zip code below!';
            m.style.display = '';

        },
        failure: function(o) {
            var m = document.getElementById('signupstatus');
            m.innerHTML     = 'Unknown error!';
            m.style.display = '';
        }
    };

    var cObj = YAHOO.util.Connect.asyncRequest(
        'POST', '/survey/process.pl', callback 
    ); 

    return false;
}

var signup;

function initSignup() {

    if ( document.getElementById("popupsignup") == null ) 
        return

    signup = new YAHOO.widget.Dialog("popupsignup", {
        modal: true,
        x: 520,
        y: 180,
        visible: false,
        draggable: false
    }); 

    signup.render(); 
}

function showSignup() { 
    signup.show(); 
}

YAHOO.util.Event.onDOMReady( initSignup );

/* Tell a friend form processing */

var tafErrors = {
    'too_many': 'You have too many friends. Seriously. Okay, not really. But you can only email 25 people at a time here.',
    'friends': 'Enter your friends\' email addresses in the text box - seperated by line breaks, commas or semi-colons.',
    'user_email': 'You must provide your own email address.',
    'user_name': 'You must provide your name.'
};

function onTellafriend() {

    var taf_form = document.tellafriend;
    YAHOO.util.Connect.setForm(taf_form);

    var taf_callback = {
        success: function(o) {

            clearErrors();

            var m = document.getElementById('tafstatus');
            m.innerHTML = '';

            var response = o.responseText.parseJSON();

            if ( response.success == 1 ) {
                 m.innerHTML = 'Thank you for spreading the word.';
                 taf_form.reset();
            }
            else {

                var errors = response.missing.concat(response.invalid);
                highlightErrors( errors );

                var message = '';
                for ( var i=0; i < errors.length; ++i ) {
                    message += '' + tafErrors[errors[i]] + '<br>';
                }
                message += '';

                m.innerHTML = message;
            }

        },
        failure: function(o) {

           var s_status = document.getElementById('tafstatus');
           s_status.innerHTML = 'Unknown error!';
        }
    };

    var tConnect = YAHOO.util.Connect.asyncRequest(
        'POST', 'tellafriend.pl', taf_callback
    );

    return false;
}

var tac_errors = {
    'message':    'You have to send your own message! Remember to keep it clean - no cussing!',
    'subject':    'Please provide a subject for your email',
    'user_email': 'Please provide your email address.',
    'user_name':  'Please provide your name.'
};


function onTellCandidate() {
    
    var tellem = document.getElementById('f_tellacandidate');
    YAHOO.util.Connect.setForm(tellem);

    var m = document.getElementById('tellacandidate_status');
    YAHOO.util.Dom.addClass( m, 'error' );
    m.innerHTML = 'Sending...';

    var callback = {
        success: function(o) {

            var m = document.getElementById('tellacandidate_status');
            m.innerHTML = 'Processing...';

            var response = o.responseText.parseJSON();

            if ( response.success == 1 ) {

                m.innerHTML = '<b>Thanks for sending a message!</b>';

                var form = document.getElementById('f_tellacandidate');
                form.reset;
                form.style.display = 'none';

                return false;
            }
            else {

                var errors = response.missing.concat(response.invalid);
                highlightErrors( errors );

                var message = '';
                for ( var i=0; i < errors.length; ++i ) {
                    message += '' + tac_errors[errors[i]] + '<br>';
                }
                message += '';
                
                m.innerHTML = message;
            }

        },
        failure: function(o) {
            var m = document.getElementById('tellacandidate_status');
            m.innerHTML     = 'Unknown error!';
            m.style.display = '';
        }
    };

    var tConnect = YAHOO.util.Connect.asyncRequest(
        'POST', tellem.action, callback
    );

    return false;
}

function showTellacandidate(c) {

    displayMessage('tellacandidate.html?c=' + c, {
        title: 'Ask a Candidate to go on the record with ONE',
        width: '470px',
        height: '490px',
        fixedcenter: true 
    });

}

function showCandidates() {
 
    displayMessage('candidates.html', {
            title: 'Compare Candidates',
            width: '550px', 
            height: '450px'
    });

}

// Tell a friend all about it

function showTellafriend() {
    YAHOO.util.Element.toggle('taf');
}

function postComment() {

    var wp_form = document.comment;
    YAHOO.util.Connect.setForm(wp_form);

    var wp_callback = {
        success: function(o) {

            clearErrors();

            var m = document.getElementById('commentstatus');
            m.innerHTML = '';

            var response = o.responseText.parseJSON();

            if ( response.status == 'success' ) {

                 m.innerHTML = '<p>Posted!</p>';
                 window.frames['comments'].location.reload(true); 

            }
            else {

                var message = response.error;
                m.innerHTML = message;

            }

        },
        failure: function(o) {

           var s_status = document.getElementById('commentstatus');
           s_status.innerHTML = '<p>Unknown error!</p>';
        }
    };

    var tConnect = YAHOO.util.Connect.asyncRequest(
        'POST', 'wp-proxy.pl', wp_callback
    );

    return false;
}

/* Utilities */

YAHOO.util.Element.toggle = function(id) {
    var element = document.getElementById(id);
    if(element && element.style) {
        var isBlank = true;
        if(element.style.display != 'none') {
            element.style.display = 'none';
        }else {
            element.style.display = 'block';
        }
    }
    return false;
}


function highlightErrors(fields) {
    for (var i = 0; i < fields.length; ++i) {

        var el = new YAHOO.util.Element('l' + fields[i]);
        if ( el == undefined )
            el = new YAHOO.util.Element('l_' + fields[i]) ;

        if ( el != undefined ) {
            el.setStyle('color', '#f00');
            el.setStyle('display' ,'');
        }
    }
}

function clearErrors() {
    labels = YAHOO.util.Dom.getElementsByClassName("label");
    _clear( labels );
    labels = document.getElementsByTagName("label");
    _clear( labels );
}

function _clear( labels ) {
    for (var i = 0; i < labels.length; ++i) {
        el = labels[i];
        if ( el != undefined ) {
            el.style.color = '';
        }
    }
}

/* Candidate switcher */

function switchCandidate(s) {

    var options = s.options;
    var i = s.selectedIndex;

    var to_load = options[i].value + '.html';

    window.location = to_load;

}

