(function(){
    YAHOO.util.Event.onDOMReady(function(){
        var forms = YAHOO.util.Dom.getElementsByClassName( "props-form-div" ),
            form,
            image;
        forms.push("ideas_form");
        for (var idx in forms) {
            // Populate forms with the actual div elements
            // if typeof forms[idx] === "string" then get element with that id
            if ( typeof( forms[idx] ) === "string" ){
                form = document.getElementById(forms[idx]) || false;
            } else {
                form = forms[idx];
            }
            if (form) {
                form = new YAHOO.nixmc.AjaxForm(form);
                form.on("success", function(o){
                    var jsonResponse = o.getResponseHeader['X-JSON'] || false;
                    if (jsonResponse) {
                        var jsonObject = YAHOO.lang.JSON.parse(jsonResponse);
                        var goal = jsonObject && jsonObject.goal || false;
                        var redirect = jsonObject && jsonObject.redirect || false;
                        if (goal) {
                            // Track goal
                            try {
                                pageTracker._trackPageview(jsonObject.goal);
                            } catch (err) {}
                        }
                        if (redirect) {
                            // Redirect
                            document.location = jsonObject.redirect;
                        }
                    }
                });
                forms[idx] = form;
                form.setup();
            }
        }
        YAHOO.nixmc.forms = forms;
        // Also set up listener for comments form submission, to track
        // the "xxx-comment-submission" page view
        if (document.getElementById("comment_form")) {
            var commentForm = YAHOO.nixmc.commentForm = new YAHOO.util.Element("comment_form");
            var goal = "blog-comment-submission",
                inputs = commentForm.getElementsByTagName("input");
            // Get the goal to be tracked
            for (var i = 0; i < inputs.length; i++) {
                if (inputs[i].name === "goal") {
                    goal = inputs[i].value;
                    break;
                }
            }
            commentForm.on("submit", function(ev){
                // Track the goal/page view
                try {
                    pageTracker._trackPageview(goal);
                } catch (err) {}
            }, commentForm, true);
        }
    });
}());