// -- $Id: characters.js 309 2009-12-01 21:06:19Z aaron $
document.observe("dom:loaded", function() 
{    
	
	// -- nav
    $$("#nav > ul > li").each(function(item, index) 
    {
       item.observe("mouseover", function(event) 
       {
	 	  	$$("#nav ul ul").each(function(item) { item.hide(); });	
		  
			if(item.down('ul')) {
				item.down('ul').show();

		       item.down('ul').observe("mouseout", function(event) 
		       {
		          item.down('ul').hide();
		       });
			};

       });


        
    });

	$$("#nav ul ul").each(function(item) { item.hide(); });
	
    if ($("answer_form"))
    {
        $("answer_form").observe('submit', function(event) 
        {
            Event.stop(event);
            attemptPost();
        });
    }
    
    if ($("goBtn"))
    {
        $("goBtn").observe("click", function(event) 
        {
            var e = event.element();
            var em = $("enter_your_email");
            var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            var str = em.value;
        
            if (str.match(emailRegEx))
            {
                // -- do ajax request
                new Ajax.Request("/discussions/email-set", {
                    method: "post",
                    parameters: {"email": str, "question_id" : $("question_id").value},
                    onSuccess: function(transport) {
                        var resp = transport.responseJSON;
                                                
                        $("options").remove();
                        $("email-settings").remove();
                                                
                        var ele = new Element("div", {"id": "the-form-outer"});
                        ele.innerHTML = resp.form;
                    
                        Element.insert($("posting-inner"), ele);
                        
                        makePostActive();
                        
                        $("header").insert({bottom: resp.header});
                    }
                });
            }
            else
            {
                $("em_label").innerHTML = "Email appears to be invalid";
                new Effect.Highlight("enter_your_email", {startcolor: "#ff0000", endcolor:"#efefef", restorecolor:true});
            }
        
            Event.stop(event);
        });
    }
    
    makePostActive();
    
    // -- flagging
    $$("a.flag").each(function(item, index) 
    {
       item.observe("click", function(event) 
       {
          Event.stop(event); 
          
          var h = item.href;
          var id = parseInt(h.substr(h.lastIndexOf("/") + 1));
          var data = $H({"post_id": id}).toQueryString();
          
          new Ajax.Request("/discussions/flag", {
              method: "post",
              parameters: data,
              onComplete: function(transport) {
                  item.up().innerHTML = "flagged";
              }
          });
          
       });
        
    });
    
    // -- read more posts
    $$("a.read-more").each(function(item, index) 
    {
        item.observe("click", function(event) 
        {
            Event.stop(event);
            var t = item.up();
            var p = t.up();
            
            t.hide();
            p.down(".full").show();
        });
    });
    
    $$("a.read-less").each(function(item, index) 
    {
        item.observe("click", function(event) 
        {
            Event.stop(event);
            var f = item.up(); // full
            var p = f.up();
            
            f.hide();
            p.down(".truncated").show();
        });
    });
    
});

function makePostActive()
{
    if ($("submitBtn"))
    {
        $("submitBtn").observe("click", attemptPost);
    }
}

function attemptPost(event)
{
    new Ajax.Request("/discussions/submit", {
        method: "post",
        parameters: $("answer_form").serialize(true),
        onCreate: function() 
        {
            $("location").disabled = true;
            $("response").disabled = true;
            
            $("location").removeClassName("error");
            $("response").removeClassName("error");
            
            if ($("username"))
            {
                $("username").disabled = true;
                $("username").removeClassName("error");
            }
            
        },
        onSuccess: function(transport) 
        {
            var data = transport.responseJSON;
            
            if (data.success == true)
            {
                var d = new Element("div", {"class": "last-inserted"}).update(data.view);               
                
                if ($("location_error")) $("location_error").remove();
                if ($("response_error")) $("response_error").remove();
                if ($("username_error")) $("username_error").remove();
                
                if (data.addToPosted)
                {
                    if ($("no-responses"))
                    {
                        $("no-responses").remove();
                    }
                    
                    $("discussion-list").insert({"top": d});
                    
                    d.down(".flag-cont").hide();
                    
                    Element.slideDown(d);
                }
                
                $("location").setStyle({"color": "#999999"});
                $("response").setStyle({"color": "#999999"});
                if ($("username")) $("username").setStyle({"color": "#999999"});
                                
                var success = new Element("div", {"class": "success"});
                
                if (data.addToPosted)
                {
                    success.innerHTML = "Your message successfully posted!<br/><a href=\"/discussions/all\">Click here to view other discussions.</a>";
                } 
                else
                {
                    success.innerHTML = "A message was sent to your email. Please click the link in the email to verify your post.<br/><a href=\"/discussions/all\">Click here to view other discussions.</a>"
                }
                
                $("posting-inner").insert({after: success});
                $("posting-inner").slideUp();
                
                // -- clear form
                $("answer_form").reset();
                
                // -- make it enabled
                $("location").disabled = false;
                $("response").disabled = false;
                if ($("username")) $("username").disabled = false;
                
                // -- reparse facebook xfbml
                if (data.addToPosted) Bkwld_Facebook.parse();
                
                if (data.fb_data && data.fb_template)
                {
                    Bkwld_Facebook.showFeedDialog(data.fb_template, data.fb_data, function() {
                        //window.location.reload(true);
                    });
                }
            }
            else
            {
                $("location").disabled = false;
                $("response").disabled = false;
                if ($("username")) $("username").disabled = false;
                
                if (data.errors)
                {
                    if ($("location_error")) $("location_error").remove();
                    if ($("response_error")) $("response_error").remove();
                    if ($("username_error")) $("username_error").remove();
                    
                    data.errors.each(function(item, index) 
                    {
                        var key = item[0];
                        var message = item[1];
                        var p_ele;
                        
                        if (!$(key + "_error"))
                        {
                            p_ele = new Element("p", {"class": "error", "id": key + "_error"});
                        } 
                        else
                        {
                            p_ele = $(key + "_error");
                        }
                        
                        p_ele.empty();
                        p_ele.update(message);
                        
                        $(key).addClassName("error");
                        $(key).insert({before: p_ele});
                        
                        new Effect.Highlight($(key), {startcolor: "#ff0000", endcolor:"#efefef", restorecolor:true});
                    });
                }
            }
        }
    });
    
    Event.stop(event);
        
}

function doPledgeTemplatePost(fb_uid, pledge, fb_template)
{
    pledge = pledge.strip();
    
    if (pledge.endsWith("."))
    {
        pledge = pledge.substr(0, pledge.length - 1);
    }
    
    var fb_data = {
        "pledge"  : pledge,
        "profile" : fb_uid,
        "images"  :
        [
            {
                "src"  : "http://charactersunite.com/img/facebook/badge.jpg",
                "href" : "http://www.charactersunite.com"
            }
        ]
    }
    
    Bkwld_Facebook.showFeedDialog(fb_template, fb_data, function() 
    {
    });
}