var isFacebook = !jQuery

function reasonsAutoPopulate()
{
    // get all the links of class type askAboutLink
    if (!isFacebook) {
        var reasonsLinks = jQuery(".reasonsLink");
        reasonsLinks.click(getData);

        var reasonsLinks = jQuery(".reasonsLinkHome");
        reasonsLinks.click(getDataHome);
    } else {
        var reasonsLinks = getElementsByClass("reasonsLink");
        reasonsLinks.each( function (reasonLink) {
            reasonLink.addEventListener('click', getData);
        });

        var reasonsLinks = getElementsByClass("reasonsLinkHome");
        reasonsLinks.each( function (reasonLink) {
            reasonLink.addEventListener('click', getDataHome);
        });
    }

    return true;
}

function getData(evt) {
    var target = evt.target;

    if (!isFacebook) {
        target.blur();
        // close all existing dropdown boxes
        closeDropdown(target);
        // this will close any existing dropdown boxes
        //jQuery(document).click(closeDropdown_event);

        if ( !jQuery(target).hasClass("reasonsLink") ) {
            target = jQuery(target).parents(".reasonsLink")[0];
        }
    }

    var newDiv = document.createElement("div");
    newDiv.setAttribute("id", "autoCompleteDropdown");
    newDiv.setAttribute("name", target.getAttribute("id"));
    newDiv.style.position = "absolute";
    newDiv.style.left = getPosition(target)[0] -307 + "px";
    newDiv.style.top = getPosition(target)[1]  + target.offsetHeight + "px";
    newDiv.innerHTML = "Loading ...";
    document.getElementsByTagName("body")[0].appendChild(newDiv);
    var newDiv_jQuery = jQuery("#autoCompleteDropdown");
    // Ajax request
    var url = '/'+community+'/mxml/announcement_reasons.mxml';
    var today = new Date();
    var pars= {time:today.getTime(), announcementid:target.getAttribute("id")};
    newDiv_jQuery.load(url, pars, function () {    
            newDiv_jQuery.find("#clicktoclose").click(function (event) {closeDropdown(event.target); return false;});
        });
    return false;
}

function getDataHome(evt) {
    var target = evt.target;

    // close all existing dropdown boxes
    closeDropdown(target);
    // this will close any existing dropdown boxes
    //jQuery(document).click(closeDropdown_event);

    var newDiv = document.createElement("div");
    if (!isFacebook) {
        target.blur();
        newDiv = jQuery(newDiv);
        newDiv.attr("id", "autoCompleteDropdown")
            .attr("name", target.getAttribute("id"))
            .css("position", "absolute")
            .css("right", "0px")
            .css("top", jQuery(target).parent().height())
            .html("Loading ...")
            .insertAfter(target);
    } else {
//        var myParent = DOM.getParentWithClass(target, "unique_announcement_container");
        var myParent = document.getElementById("ajax_container");
        var top = target.getAbsoluteTop() - myParent.getAbsoluteTop() + 20;
        newDiv.setId("autoCompleteDropdown");
        newDiv.setName(target.getParentNode().getId());
        newDiv.setStyle("top", top + 'px');
        newDiv.setInnerFBML(loading_msg);
        myParent.appendChild(newDiv);
    }

    // Ajax request
    var pars = {time:new Date().getTime()}
    if (!isFacebook) {
        var url = '/'+community+'/mxml/announcement_reasons.mxml';
        pars.announcementid = target.getAttribute("id");
        newDiv.load(url, pars, function () {    
            jQuery(this)
                .find("#clicktoclose")
                .click(function () {closeDropdown(target); return false;})
        });
    } else {
        var url = community_uri;
        url += '/facebook/announcement_reasons/';
        pars.announcementid = target.getParentNode().getId();
        ajax_loadFBML(newDiv, url, pars, function() {
            // make room on the bottom
            var container = document.getElementById("facebook_container");
            container.setStyle("marginBottom", "230px");

            var clicktoclose = document.getElementById("clicktoclose");
            clicktoclose.addEventListener('click', function() {closeDropdown(target);return false;});
        });
    }
            
    return false;
}

function closeDropdown_event(event) {
    closeDropdown(event.target);
    return true;
}


// close existing dropdown box
function closeDropdown(target)
{
    var autoCompleteDropdown = document.getElementById("autoCompleteDropdown");
    var clicktoclose = document.getElementById("clicktoclose");

    if (target != clicktoclose && is_child(target, autoCompleteDropdown)) {
        //target.blur();
        return false;
    }

    if (autoCompleteDropdown != null) {
        if (!isFacebook) {
            jQuery(autoCompleteDropdown).remove();
        } else {
            // remove bottom padding
            var container = document.getElementById("facebook_container");
            container.setStyle("marginBottom", "auto");

            var parent = autoCompleteDropdown.getParentNode();
            parent.removeChild(autoCompleteDropdown);
        }
        return false;
    }
    return false;
}

function is_child(target, element)
{
    var parent = target;
    do {
        if (parent == element) return true;
        parent = isFacebook ? parent.getParentNode() : parent.parentNode;
    } while (parent)
    return false;    
}

    
// close existing dropdown box
function flag_announcement() {
    toggleDropbox('flag_announcement');
}
function block_user() {
    toggleDropbox('block_user');
}

function toggleDropbox(id) {
    var el = document.getElementById(id+"_unfold");
    var display = isFacebook ? el.getStyle('display') : el.style.display;
    if (display == 'block') {
        closeDropbox(id, true);
    } else {
        close_all_tabs();
        openDropbox(id);
    }
    return true;
}

function closeDropbox(id, animateClose) {
    var el_link = document.getElementById(id);
    var el = document.getElementById(id+"_unfold");
    var display = isFacebook ? el.getStyle('display') : el.style.display;
    if (display == 'block') {
        if (isFacebook) {
            el_link.setClassName('tabborder');
            if (animateClose) {
                Animation(el)
                    .to('height', '0px')
                    .duration(200)
                    .blind().hide().go();
            } else {
                el.setStyle('display', 'none');
            }
        } else {
            el.style.display = 'none'
            el_link.setAttribute("class", "tabborder");
            el_link.setAttribute("className", "tabborder");
        }
    }
}

function openDropbox(id) {
    var el_link = document.getElementById(id);
    var el = document.getElementById(id+"_unfold");
    var display = isFacebook ? el.getStyle('display') : el.style.display;
    if (display == 'none') {
        if (isFacebook) {
            el_link.setClassName('boldoutline');
            Animation(el)
                .to('height', 'auto')
                .from('height', '0px')
                .duration(200)
                .blind().show().go();
        } else {
            el.style.display = 'block';
            el_link.setAttribute("class", "boldoutline");
            el_link.setAttribute("className", "boldoutline");
        }
    }
}

function close_all_tabs()
{
    closeDropbox('block_user');
    closeDropbox('flag_announcement');
}


function getPosition(theElement)
{
  var positionX = 0;
  var positionY = 0;

  while (theElement != null)
  {
    positionX += theElement.offsetLeft;
    positionY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }

  return [positionX, positionY];
}



function flag_a() {
    var user_input; 
    if (isFacebook) {
        var form = document.getElementById("flagform");
        user_input = form.serialize().flag;
    } else {
        user_input = jQuery("#flagform :radio[name='flag']:checked").val();
    }

    if (!user_input) {     
        var error = document.getElementById("flag_announcement_unfold_error");
        if (!error) {
            var newDiv = document.createElement("span");
            if (isFacebook) {
                newDiv.setId('flag_announcement_unfold_error');
                newDiv.setStyle('color', 'red');
                newDiv.setInnerFBML(flag_select_reason);
            } else {
                newDiv.setAttribute("id", "flag_announcement_unfold_error");
                newDiv.style.color = "red";
                newDiv.innerHTML = "<center>Please select a reason</center>";
            }
            document.getElementById("flag_announcement_unfold").appendChild(newDiv);
        }    
        return true;
    }

    var outer_dropdown = document.getElementById("autoCompleteDropdown");
    var today = new Date();
    var pars= {'time':today.getTime(), 'flag': user_input};

    if (isFacebook) {
        var dropdown = document.getElementById("flag_announcement_unfold");
        dropdown.setInnerFBML(loading_msg);

        // Ajax request
        var url = community_uri + '/facebook/announcement_flags/';
        pars.announcementid = outer_dropdown.getName();
        ajax_loadFBML(dropdown, url, pars);
    } else {
        var dropdown = jQuery("#flag_announcement_unfold");
        dropdown.html("Loading ...");

        // Ajax request
        var url = '/'+community+'/mxml/announcement_flags.mxml';
        pars.announcementid = outer_dropdown.getAttribute("name");
        dropdown.load(url,pars);
    }
}

function block_a(username) {
    var str = 'Are you sure you want to block ' + username +'?'
    var blockuser = function() {
        var outer_dropdown = document.getElementById("autoCompleteDropdown");

        var dropdown =   document.getElementById("block_user_unfold");
        var today = new Date();
        var pars= {'time':today.getTime()};
        if (isFacebook) {
            dropdown.setInnerFBML(loading_msg);

            // Ajax request
            var url = community_uri + '/facebook/announcement_block/';
            pars.announcementid = outer_dropdown.getName();
            ajax_loadFBML(dropdown, url, pars);
        } else {
            dropdown = jQuery(dropdown);
            dropdown.html("Loading ...");

            // Ajax request
            var url = '/'+community+'/mxml/announcement_block.mxml';
            pars.announcementid = outer_dropdown.getAttribute("name");
            dropdown.load(url,pars);
        }
    }

    if (isFacebook) {
        var dlg = new Dialog(Dialog.DIALOG_POP);
        dlg.onconfirm = blockuser;
        dlg.showChoice("Block "+username, str);
    } else {
        if (!confirm(str)) return true;
        blockuser();
    }
    
}

if (isFacebook) {
    doOnload(reasonsAutoPopulate);
} else {
    jQuery(document).ready(reasonsAutoPopulate);
}


