var requestSent = false;
var resultsShown = false;

function getSelectedValue(){
    options = document.getElementsByName('option_id[]');
    selectedOption = '';
    for(var i=0;i<options.length;i++){
        if(options[i].checked == true){
            selectedOption = selectedOption + options[i].value + '_';
        }
    }
    if(selectedOption != ''){
        selectedOption = selectedOption.substr(0, selectedOption.length - 1);
    }
    return selectedOption;
}

function updateBarChart(options,LBL_VOTES){
    for (i=0; i < options.childNodes.length; i++){
        var percent = options.childNodes[i].getAttributeNode('percent').value+'%';
        var votes = ' (' + options.childNodes[i].getAttributeNode('votes').value + ' ' + LBL_VOTES + ')';
        document.getElementById("option" + (i+1)).style.width = percent;
        document.getElementById("vote" + (i+1)).innerHTML = votes;
        document.getElementById("percent" + (i+1)).innerHTML = percent;
    }
}

function updatePieChart(options,alt){
    var piearcs = '';
    var titles = '';
    var percent;
    var votes;
    for (i=0; i < options.childNodes.length; i++){
        percent = options.childNodes[i].getAttributeNode('percent').value;
        votes = options.childNodes[i].getAttributeNode('votes').value;
        document.getElementById("pie-bar-" + i).style.width = percent + '%';
        document.getElementById("pie-votes-" + i).innerHTML = votes;
        document.getElementById("pie-percent-" + i).innerHTML = percent + '%';
        piearcs = piearcs + Math.round(parseFloat(percent)) + ',';
        titles = titles + percent + '%|';
    }
    piearcs = piearcs.substr(0, piearcs.length - 1);
    titles = titles.substr(0, titles.length - 1);
    piesrcold = document.getElementById('pieimg').src;
    colors = piesrcold.substr(piesrcold.indexOf('chco=') + 5);
    dimensions = piesrcold.substr(piesrcold.indexOf('chs=') + 4);
    var date = new Date();
    piesrc = 'http://chart.apis.google.com/chart?chs=' + dimensions + '&amp;chd=t:' + piearcs + '&amp;cht=p3&amp;chl=' + titles +  '&amp;chco=' + colors;
    piesrc = piesrc + '&amp;v=' + date.getTime();
    html = '<img src="' + piesrc + '" alt="' + alt + '"/>'
    document.getElementById('pieimgwrap').innerHTML = html;
}

function updateWrapper(){
    document.getElementById("resultchart").style.display = '';
    document.getElementById("votingform").style.display = 'none';
    document.getElementById('loadingImg').style.display = 'none';
    document.getElementById('btnVote').style.display = 'none';
    document.getElementById('btnToggleResult').style.display = 'none';
}

function toggleResult(toggleShow, toggleHide){
    if(resultsShown){
        document.getElementById("btnToggleResult").innerHTML = '<i></i><span><span></span><i></i>' + toggleShow + '</span>';
        fadeOut(document.getElementById("resultchart"));
        fadeIn(document.getElementById("votingform"));
        document.getElementById('loadingImg').style.display = 'none';
        document.getElementById('btnVote').style.display = '';
        resultsShown = false;
    }else{
        document.getElementById("btnToggleResult").innerHTML = '<i></i><span><span></span><i></i>' + toggleHide + '</span>';
        fadeOut(document.getElementById("votingform"));
        fadeIn(document.getElementById("resultchart"));
        document.getElementById('loadingImg').style.display = 'none';
        document.getElementById('btnVote').style.display = 'none';
        resultsShown = true;
    }
}

getXhr = function () {
    var xhr = null;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else if (window.createRequest) {
        xhr = window.createRequest();
    } else if (window.ActiveXObject) {
        try {
            xhr = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
            try {
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e) {}
        }
    }

    return xhr;
};

function fadeOut(oDiv) {
    window.addEvent('domready',function() {
        var div = $(oDiv).setStyles({
            display:'none',
            opacity: 0
        });

        // in 1.2
        //            new Fx.Morph(div, {duration:2000, onComplete: function() {
        //                    new Fx.Morph(div, {duration:2000}).start({opacity:0});
        //            }}).start({'opacity':1});

        // 1.1
        new Fx.Style(oDiv, 'opacity', {
            duration:2000
        }).start(1);

    });
}

function fadeIn(iDiv) {
    window.addEvent('domready',function() {
        var div = $(iDiv).setStyles({
            display:'block',
            opacity: 0
        });
        new Fx.Style(iDiv, 'opacity', {
            duration:2000
        }).start(1);
    });
}
function addNewOption(container, media, errormsg){
    var dContainer = document.getElementById(container);
    if(dContainer){
        var tOptions = dContainer.getElementsByTagName('input');
        if(tOptions.length < 2){
            alert(document.getElementById('msg_alert_error_processing').innerHTML);
        }else{
            var optionValueTR = document.createElement("tr");
            var optionLabel = document.createElement("th");
            var optionValue = document.createElement("td");

            optionLabel.innerHTML = document.getElementById('lbl_option').innerHTML + ' ' + (tOptions.length + 1);

            tNewOption = document.createElement('input');
            tNewOption.setAttribute('id', 'text-' + tOptions.length);
            tNewOption.setAttribute('type', 'text');
            tNewOption.setAttribute('size', '50');
            tNewOption.setAttribute('name', 'polloption[]');
            tNewOption.setAttribute('class', 'forminput');
            optionValue.appendChild(tNewOption);

            optionValueTR.appendChild(optionLabel);
            optionValueTR.appendChild(optionValue);

            if(media == true){
                tMedia = document.getElementById('text-0').parentNode.getElementsByTagName('a')[0];
                if(typeof(tMedia) != 'undefined' && tMedia){
                    tNewMedia = tMedia.cloneNode(true);
                    optionValue.appendChild(tNewMedia);
                }
            }

            dContainer.appendChild(optionValueTR);
        }
    }else{
        alert(errormsg);
    }
}

function checkPollFields(desc_required, desc_min_length){
    if(form_submitted){
        return false;
    }
    var title = document.getElementById('polltitle');
    var option1 = document.getElementById('text-0');
    var option2 = document.getElementById('text-1');
    var category = document.getElementById('catid');
    var description = document.getElementById('description');

    if(category.value == '' || category.value == '0'){
        alert(document.getElementById('msg_alert_category').innerHTML);
        return false;
    }
    if(title.value == '' || title.value == null){
        alert(document.getElementById('msg_alert_title').innerHTML);
        return false;
    }

    if(option1.value == '' || option1.value == null || option2.value == '' || option2.value == null){
        alert(document.getElementById('msg_alert_option').innerHTML);
        return false;
    }

    if(desc_required && (desc_min_length != 0)){
        if(description.value == '' || description.value == null){
            alert(document.getElementById('msg_alert_desc').innerHTML);
            return false;
        }else if(description.value.length < desc_min_length){
            alert(document.getElementById('msg_alert_desc_min_length').innerHTML);
            return false;
        }
    }
    var polloptions = document.getElementsByName('polloption[]');
    if(typeof(polloptions) != 'undefined' && polloptions){
        for(var i=0; i<polloptions.length; i++){
            option_value = polloptions[i].value.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
            if(option_value != '' && option_value != null){
                hiddenOption = document.createElement('input');
                hiddenOption.name = 'pollOptions[]';
                hiddenOption.type = 'hidden';
                hiddenOption.id = 'hiddenOption-'+i;
                option_id = polloptions[i].id;
                hiddenOption.value = option_id.substr(option_id.indexOf('-')+1) + '|' + option_value;
                document.forms.newPoll.appendChild(hiddenOption);
            }
        }
    }
    form_submitted = true;
    document.forms.newPoll.submit();
}

function getXmlDoc(xmlData) {
    try{
        parser=new DOMParser();
        xmlDoc=parser.parseFromString(xmlData,"text/xml");
        return xmlDoc;
    }catch(e){
        return xmlData;
    }
}

function prepareMedia(element){
    upload_div = document.getElementById('cp_media');
    element.parentNode.appendChild(upload_div);
    if(upload_div.style.display == 'none'){
        upload_div.style.display = 'block';
        upload_div.getElementsByTagName('img')[0].style.display = 'none';
    }else{
        upload_div.style.display = 'none';
        upload_div.getElementsByTagName('img')[0].style.display = '';
    }
}

function doAjaxUpload(file, response){
    var xmlDoc = getXmlDoc(response);
    var rootNode = fleegix.xml.parse(xmlDoc).root;
    if(typeof(rootNode.errormsg) != 'undefined' && rootNode.errormsg != 0){
        alert(rootNode.errormsg);
    }else{
        upload_div = document.getElementById('cp_media');
        option_textbox_id = upload_div.parentNode.getElementsByTagName('input')[0].id;
        var current_id = option_textbox_id.substr(option_textbox_id.indexOf('-')+1);
        var hiddenFlds = upload_div.parentNode.getElementsByTagName('hidden');
        var hiddenFld = null;
        if(hiddenFlds != null && ((typeof hiddenFld) != 'undefined')){
            for(var i=0; i< hiddenFlds.length; i++){
                if(hiddenFlds[i].id == 'image-' + current_id){
                    hiddenFld = hiddenFlds[i];
                    break;
                }
            }
        }
        if(hiddenFld != null){
            hiddenFld.setAttribute('value', rootNode.uploadname);

            upload_file_label = upload_div.parentNode.getElementById('uploaded_image');
            upload_file_label.innerHTML = "<strong>Image:</strong> " + rootNode.uploadname;
        }else{
            hiddenFld = document.createElement('input');
            hiddenFld.setAttribute('type', 'hidden');
            hiddenFld.setAttribute('name', 'imageAttachment[]');
            hiddenFld.setAttribute('id', 'image-' + current_id);
            hiddenFld.setAttribute('value', current_id + '|' + rootNode.uploadname);
            upload_div.parentNode.appendChild(hiddenFld);

            var upload_file_label = document.createElement('div');
            upload_file_label.setAttribute('id', 'uploaded_image');
            upload_file_label.innerHTML = "<strong>Image:</strong> " + rootNode.uploadname + '&nbsp;';

            upload_div.parentNode.appendChild(upload_file_label);
        }

        upload_div.style.display = 'none';
    }
}

function checkExtension(extension){
    if (!(extension && /^(jpg|png|jpeg|gif)$/i.test(extension))){
        alert('Error: invalid file extension');
        return false;
    }
}
