$(document).ready(init);
var showingSelector = false;
var mceSelector = "textarea.html-editor";
var miniMceSelector = "textarea.html-mini-editor";
var mceActive = false;
var mediaWindow;
var mediaDiv;
var inlineMediaEditor = null;
function init() {
	$(".focus").focus();
	
	if ($("#tweet").length > 0) doTwitter();
	if ($(".video").length > 0) doVideo();
	stripeTables();
	initMedia();
	initFAQ();
	initGroups();
	initForms();
    initTabs();
    initMisc();
    initLike();
    initComment();
    if ($('form.register').length > 0) initRegister();
}
function initMisc() {
    $('.confirm').click(function() {
            return confirm("Are you sure?");
            });
    $('div.follow a').click(ajaxSend);
    if (getCookie("showhelp") == "no") {
        $("div.help").hide();
        $("a.help-off").hide();
    } else {
        $("a.help-on").hide();
    }
    $('div#help-control a').click(toggleHelp);
    $('div#size-control > a').click(sizeTextClick);
    var size = getCookie("fontsize");
    if ((size == 1) || (size == 2)) {
        sizeText(size);
    } else {
        setCookie("fontsize", 0);
    }
}
function initLike() {
    $("div.like a").click(likeClick);
}
function likeClick() {
    var url = $(this).attr('href');
    var d = $(this).parent();
    ajaxLoading(d);
    d.load(url);
    return false;
}
function ajaxLoading(div) {
    var w = $(div).width();
    var h = $(div).height();
    $(div).html('<div style="width:' + w + 'px;height:' + h + 'px;overflow:hidden;"><img src="/images/ajax-loader.gif"/></div>');
}
function sizeTextClick() {
    var newSize = 0;
    if ($(this).hasClass("size1")) newSize = 1;
    if ($(this).hasClass("size3")) newSize = 2;
    var oldSize = parseInt(getCookie("fontsize"));
    if (newSize == oldSize) return false;
    sizeText(newSize);
    return false;
}
function sizeText(size) {
    $("div#size-control > a").removeClass("selected");
    setCookie("fontsize", size);
    if (size == 2) {
        $('h1, h2, h3, p, li').each(
            function(i) {
                $(this).css('font-size', '');
                $(this).css('font-size', parseInt($(this).css('font-size').replace(/px/, "")) * 1.5);
            }
        );
        $("div#size-control > a.size3").addClass("selected");
    }
    if (size == 1) {
        $('h1, h2, h3, p, li').each(
            function(i) {
                $(this).css('font-size', '');
                $(this).css('font-size', parseInt($(this).css('font-size').replace(/px/, "")) * 0.8);
            }
        );
        $("div#size-control > a.size1").addClass("selected");
    }
    if (size == 0) {
        $('h1, h2, h3, p, li').each(
            function(i) {
                $(this).css('font-size', '');
            }
        );
        $("div#size-control > a.size2").addClass("selected");
    }
}
function toggleHelp() {
    if ($(this).hasClass("help-off")) {
        setCookie("showhelp", "no");
        $("a.help-off").hide();
        $("a.help-on").show();
        $("div.help").hide();
    } else {
        setCookie("showhelp", "yes");
        $("a.help-off").show();
        $("a.help-on").hide();
        $("div.help").show();
    }
    return false;
}
function initTabs() {
	if (window.location.hash != "") {
		$('.tabtops > li').removeClass('tabshowing');
		$('.tabtops > li[rel=' + window.location.hash.substr(1) + ']').addClass('tabshowing');
	}
	$('.tabtops > li').each(function(i) { $(this).click(function () { showPaneByTab(this); });	 } );
	$('.tabtops').each(function(i) {
	  var s = $(this).children("li.tabshowing");
	  if (s.size() == 0) {
	    showPaneByTab($("li:first-child", this));
	  } else {
	    showPaneByTab(s);
	  }
	});
	$("ul.static-tabtops li a").each(function(i) { $(this).parent().click(function() {clickTab(this);}) });
}
function initMedia() {
	$(".image-media a").click(function(e) { e.preventDefault(); openImage($(this).attr("href")); });
	var ml = $("#media-selector");
	if (ml.length > 0) {
		ml.click(function() {showMediaSelector() });
		$(".media-selector > .media").click(function() { selectMedia(this) });
	}
    var imm = $("#inline-media-manager");
    if (imm.length > 0) {
        imm.wrap('<div id="media-manager"/>');
        showMediaSelector(imm, "inline size " + imm.attr('class'));
    }
    $('<div style="width:550px;height:413px;" id="media-manager-padding">').insertAfter('#media-manager');
    $('<div id="media-manager-loading"><p class="loading">Loading Media Manager</p></div>').insertBefore('#media-manager');
}
function initFAQ() {
	$(".faq-entry-content").hide();
	$(".faq-entry-comments").hide();
	$(".faq-entry-header p").hide();
	$(".faq-entry-header").click(function() { showFaq(this) });
}

function initGroups() {
	$(".group-select select").change(function() {
											  $(".group-select").submit();
											  });
	$(".group-select input[type=submit]").hide();
}

function showPaneByTab(e) {
	showPane($("#" + $(e).attr("rel")));
	$(e).parent().children().removeClass('tabshowing');
	$(e).addClass('tabshowing');
}
function showPane(selected) {
	selected.parent().children().hide();
	selected.show();
}
function ieCSS(file) {
	if ($.browser.msie) {
		var fileref=document.createElement("link");
  		fileref.setAttribute("rel", "stylesheet");
  		fileref.setAttribute("type", "text/css");
  		fileref.setAttribute("href", file);
    	document.getElementsByTagName("head")[0].appendChild(fileref);
	}
}
function showhide(divId) {
	$("#" + divId).toggle();
}
function check(msg) {
	return confirm(msg);
}
function doTwitter() {
	getTwitters('tweet', {
				id: $("#tweet").attr("rel"),
				count:1,
				enableLinks:true,
				ignoreReplies: true,
				clearContents: true,
				template: '"%text%" <a href="http://twitter.com/%user_screen_name%/statuses/%id%/">%time%</a>'
	});
}
function doVideo() {
	var videoCount = 0;
	$(".video").each(function(i) 
	{
		videoCount++;
		var id = "video"+videoCount;
		var holding = $(this).html();
		$(this).html("");
		$(this).append('<div id="' + id + '">' + holding + '</div>');
		swfobject.embedSWF("/flash/xplayer.swf", id, $(this).width(), $(this).height(), "9.0.0", null, {src:"/videos/" + $(this).attr("rel")});					
	}				 
	);
}
function showFaq(sibling) {
	if ($(sibling).hasClass('showing')) {
		$("p", sibling).slideUp();
		$(sibling).removeClass('showing').siblings().slideUp();
	} else {
		$(sibling).addClass('showing').siblings().slideDown();
		$("p", sibling).slideDown();
	}
}
function selectMedia(id, url,title,type) {
    if (inlineMediaEditor != null) {
        inlineMediaEditor.focus();
        //inlineMediaEditor.restoreSelection();
        if (type=='document' || type=='audio') {
            inlineMediaEditor.selection.setContent('<a href="' + url + '" class="resource-link">' + title + '</a>');
        } else {
            inlineMediaEditor.selection.setContent('<img src="' + url + '"/>');
        }
    } else {
	$("#mainimagefield").val(id);
	$(".thread-preview-image").attr("src", url);
    $(".media-selector-description").html(title);
	    if ($("#media-selector").hasClass("profile")) window.location.reload();
    }
    hideMediaSelector();
}
function clearMedia() {
    $("#mainimagefield").val("");
    $(".thread-preview-image").attr("src", "/xca/noimage.png");
}
function showMediaSelector(container, mode, editor) {
    inlineMediaEditor = editor;
    if (container == null) {
        showShade(true);
        var exists = true;
        if ($("#media-manager").length == 0) {
            exists = false;
            $("body").append('<div id="media-manager"><a href="javascript:hideMediaSelector();">CLOSE</a><div id="flash-holder"><a href="http://get.adobe.com/flashplayer/">Adobe Flash 10</a> or greater required</div></div>');
        }
        var mm = $("#media-manager");
        mm.css({top:($(window).scrollTop() + ($(window).height() - 400)/2), left:(($(window).width() - 550)/2)});
        if (!exists) {
            container = $("#flash-holder");
            if (mode == null) mode = $("#media-selector").attr("class");
            swfobject.embedSWF("/xca/media-manager.swf", container.attr("id"), 550, 400, "10.0.0", null, {mode:mode});
        }
    } else {
        swfobject.embedSWF("/xca/media-manager.swf", container.attr("id"), 550, 400, "10.0.0", null, {mode:mode});
    }
    
}
function setMediaMode(mode) {
    $("#media-manager > object")[0].setMode(mode);
}
function hideMediaSelector() {
    showShade(false);
    $("#media-manager").css({top:-1000});
}
function mmLoaded() {
    $('#media-manager-loading').remove();
}  
function showShade(visible) {
    if (visible == false) {
        $("#shade").hide();
    } else {
        if ($("#shade").length == 0) {
            $("body").append('<div id="shade"></div>');
        }
        $("#shade").show();
    }
}
function toggleMediaSelectorOLD() {
	showingSelector = !showingSelector;
	if (showingSelector) {
		$("#media-selector").addClass('arrow-down');
		$(".media-selector").slideDown(500);
	} else {
		$(".media-selector").slideUp(500);
		$("#media-selector").removeClass('arrow-down');
	}
}
function openImage(ref) {
	var imageHolder = $("#media-holder");
	if (imageHolder.length == 0) {
		$("body").append('<div id="media-holder"><p>CLOSE</p><img src="' + ref + '" id="media-holder-image" /></div>');
		imageHolder = $("#media-holder");
		imageHolder.click(function(e) { imageHolder.hide() });	
		$("#media-holder-image").load(repositionImageHolder);
	} else {
		$("#media-holder-image").attr('src', ref);
		$("#media-holder-image").load(repositionImageHolder);
	}
	imageHolder.show();
	repositionImageHolder();
}
function repositionImageHolder() {
	var imageHolder = $("#media-holder");
	imageHolder.css("left", $(window).scrollLeft() + ($(window).width() - imageHolder.width()) /2).css("top", $(window).scrollTop() + ($(window).height() - imageHolder.height()) /2);
}
function showAdminMenu() {
	var offset = $("span#sulinks_parent").offset();
	$("ul#sulinks").css("left", offset.left).css("top", offset.top + 17).show();
}
function hideAdminMenu() {
	$("ul#sulinks").hide();
}
function clickTab(e) {
	var link = $('a',e).attr("href");
	if (link != undefined) document.location = link;
}
function stripeTables() {
	$(".admintable tr:even").addClass("even");
}

// load scripts dynamically the 'proper' way

function dhtmlLoadScript(url) {
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}

function initMCE(mini) {
    if (mini == null) mini = false;
    
    var buttons1 = "bold,italic,bullist,numlist,indent,outdent,hr,code,justifyleft,justifyright,justifycenter,anchor,strikethrough,link,unlink,removeFormat,sub,sup,xImage,emotions";
    var buttons2 = "cut,copy,paste,pastetext,pasteword,cleanup,formatselect,emoticons,tablecontrols";
    var buttons3 = "";
    var blockFormats = "p,h1,h2,h3,blockquote";
    if (mini) {
        buttons1 = "bold,italic,bullist,numlist,indent,outdent,link,unlink,xImage,emotions";
        buttons2 = "";
    }
    tinyMCE.init({
        mode : "none",
		theme: "advanced",
        theme_advanced_buttons1:buttons1,
		theme_advanced_buttons2:buttons2,
		theme_advanced_buttons3:buttons3,
        theme_advanced_toolbar_location : "top",
		plugins : 'paste,table,emotions',
		paste_remove_styles : true,
		paste_strip_class_attributes : "all",
		paste_remove_spans : true,
		content_css: "/xca/basic2.css,/css/basic.css,/xca/generic.css",
		valid_elements: "h1,h2,h3,h4,h5,h6,a[href|target],ul,li,ol,strong,b,br,p[style|class],em,div[style|class],pre[style],img[src|align|style],table[cellspacing|cellpadding],tr,td[rowspan|colspan],span[style|class],blockquote",
		theme_advanced_blockformats: blockFormats,
		theme_advanced_source_editor_height: 400,
        convert_urls:false,
        setup : function(ed) { 
            ed.onSaveContent.add(function(ed, o) {
                o.content = o.content.replace(/<p>&nbsp;<\/p>/g, '');
            });
            ed.addButton('xImage', {
                title : 'Insert Image',
                image : '/xca/icns/image.gif',
                onclick : function() { 
                    inlineMediaManager(ed) 
                }
            });
        },
        file_browser_callback : 'inlineMediaManager'
    });
    markupChanged();
}
function inlineMediaManager(editor) {
    showMediaSelector(null, "size", editor);
}
function initForms() {
	var forms = $("form");
	if (forms.length > 0) {
		var f = forms[0];
        if (!$(f).hasClass('inline-login')) {
            $.ajax({type:"GET", url:"/script-parameters?name=" + $(f).attr("action").substr(1), dataType: "xml", success: loadFormParameters, error: errorFormParameters});
            var mceMatch = $(mceSelector);
            if (mceMatch.length > 0) {
                mceMatch.attr('id', 'editor');
                initMCE();
                $("select[name=markuptype]").change(markupChanged);
            }
            mceMatch = $(miniMceSelector);
            if (mceMatch.length > 0) {
                mceMatch.attr('id', 'editor');
                initMCE(true);
                $("select[name=markuptype]").change(markupChanged);
            }
        }
	}
	var cal = $("input.calendar");
	if (cal.length > 0) {
		$(cal).each(function(i) {
							 $(this).before('<div class="date-picker"><table><tr>' +
                             '<td><input type="checkbox" class="datepicker-check first" value="yes" id="datepicker1"/>Use start date</td>' +
                             '<td><input type="checkbox" class="datepicker-check second" value="yes" id="datepicker2"/>Use finish date</td></tr>' +
                             '<tr><td><input type="text" class="datepicker" id="datepicker1input"/></td>' +
                             '<td><input type="text" class="datepicker" id="datepicker2input"/></td></tr></table></div>');
							 $(this).hide();
							 });
		$('.datepicker').datepicker({ dateFormat: 'yy-mm-dd'}).change(function() {calcCombinedDates(this)});
		$('.datapicker-check').each(function(i) {
											 var id = $(this).attr("id");
											 if ($("#" + id + "input").val().length > 0) {
												 $(this).attr({checked: true});
											 } else {
												 $("#" + id + "input").hide();
											 }
											 });
												 
		$('.datepicker-check').change(function() { datePickerChecked(this) });
		datePickerValidate();
	}
    $('.editor-form-toggle').hide();
    $('ul.action-menu').each(initActionMenu);
    if ($('ul.action-menu').length > 0) $('body').click(closeActionMenu);
    $('#media-selector').each(initMediaHover);
}
function initMediaHover() {
    var but = $('<a href="javascript:;">Change Picture</a>');
    but.css({position:'absolute', display:'block', backgroundColor:'#4d4d4d', color:'#fff', padding:4});
    but.insertBefore(this);
    but.click(function() { $('#media-selector').click();});
}
var actionMenuOpen = null;
function closeActionMenu() {
    if (actionMenuOpen == null) return;
    $(actionMenuOpen).removeClass('showing');
    $('li', actionMenuOpen).hide();
    $('li.header', actionMenuOpen).show();
    actionMenuOpen.css({zIndex:0});
    actionMenuOpen = null;
}
function initActionMenu() {
    $('li.header', this).click(openActionMenu);
    $(this).parent().css({minWidth:$(this).outerWidth()});
}
function openActionMenu() {
    closeActionMenu();
    actionMenuOpen = $(this).parent();
    actionMenuOpen.css({zIndex:10}).addClass('showing');
    $('li', actionMenuOpen).show();
    return false;
}
function editPreview() {
    $('.editor-form-toggle').show();
    $('.continue-form-toggle').hide();
}
function datePickerChecked(e) {
	datePickerValidate();
	var id = $(e).attr("id");
	if ($("#" + id).is(":checked")) {
		$("#" + id + "input").datepicker('show');
	}
}
function calcCombinedDates() {
	datePickerValidate();
}
function datePickerValidate() {
	$("div.date-picker").each(function(i) {
        var range = ""; 
		var id1 = $("input[type=checkbox].first", this).attr("id");
		var id2 = $("input[type=checkbox].second", this).attr("id");
		if ($("#" + id1).is(":checked")) {
            var from = $("#" + id1 + "input").val();
			$("#" + id1 + "input").show();
			$("#" + id2).parent().show();
			if ($("#" + id2).is(":checked")) {
                $("#" + id2 + "input").show();
				if (from.length > 0) {
                    range = from;
					var to = $("#" + id2 + "input").val();
					if (to.length > 0) range += " " + to;
                }
			} else {
                range = from;
				$("#" + id2 + "input").hide().val("");
            }
        } else {
            $("#" + id1 + "input").hide().val("");
			$("#" + id2).attr({checked: false});
			$("#" + id2).parent().hide();
			$("#" + id2 + "input").hide();
        }
		$("input.calendar").val(range);
    });
}
function markupChanged() {
	var v = "unknown";
	if ($("select[name=markuptype]").size() > 0)
	{
		v = $("select[name=markuptype]").val();
	} 
    else if ($("input[name=markuptype]").size() > 0)
	{
		v = $("input[name=markuptype]").val();
	}
    else
    {
        v = "safexhtml";
    }
    //alert("markup menu changed to " + v);
	if ((v == "plaintext") || (v == "xhtml")) {
        if (mceActive) {
            tinyMCE.triggerSave();
            tinyMCE.execCommand('mceFocus', false, 'editor'); 
            tinyMCE.execCommand('mceRemoveControl', false, 'editor');
            mceActive = false;
        }
	}
	if (v == "safexhtml") {
        if (!mceActive) {
            //var str = $("#editor").val();
            //str = replaceAll(str, "<", "&lt;");
            //str = replaceAll(str, ">", "&gt;");
            //$("#editor").val(str);
            tinyMCE.execCommand('mceAddControl', false, 'editor');
            mceActive = true;
        }
	}
}
function replaceAll(txt, replace, with_this) {
    return txt.replace(new RegExp(replace, 'g'),with_this);
}
function loadFormParameters(xml) {
	var params = "";
	var form = $("form")[0];
	$(xml).find('parameter').each(function() {
        params += $(this).attr('name') + ' ';
		var e =  $("form input[name=" + $(this).attr('name') + "]");
		if (e.length == 0) e = $("form textarea[name=" + $(this).attr('name') + "]");
		e.blur(formElementCheck);
		e.attr('empty-error', $('empty-error', this).text());
		e.attr('invalid-error', $('invalid-error', this).text());
		e.attr('optional', $(this).attr('value_optional'));
		e.attr('valid', $('valid-type', this).text());
    });
}
function errorFormParameters(reason) {
	
	// do nothing for now
	
	//alert("Parameter fetching failed " + reason.responseText);
}
function formElementCheck() {
	var em = "";
	if ($(this).val().length == 0) {
		if ($(this).attr('optional') == '0') {
			em = $(this).attr('empty-error');
		}
	} else if ($(this).attr('valid').length > 0) {
		var re = new RegExp($(this).attr('valid'));
		if (!$(this).val().match(re)) {
			em = $(this).attr('invalid-error');
		}
	}
	var p = $(this).parent();
	if (em != "") {
		var e = $('.form-error', p);
		if (e.length == 0) {
			$(p).append('<div class="form-error">'+em+'</div>');
		} else {
			e.text(em);
		}
	} else {
		$('.form-error', $(this).parent()).remove();
	}
}
function initRegister() {
    var f = $('form.register');
    $('input[name=screenname]', f).blur(regCheckName);
    $('input[name=pass]', f).blur(regCheckPass);
}
function regCheckName() {
    $.ajax({type:'GET', url:'check-screenname', data:{screenname:$(this).val()}, dataType:'xml',success:regCheckNameComplete});
}
function regCheckNameComplete(xml) {
    var dx = $(xml);
    var em = '';
    if (dx.find('check-screenname').attr('result') == 'fail') {
        dx.find('error').each(function() {
            if (em.length > 0) em += " ";
            em += $(this).text();
        });
    }
    var p = $('form.register input[name=screenname]').parent();
	if (em != "") {
		var e = $('.form-error', p);
		if (e.length == 0) {
			$(p).append('<div class="form-error">'+em+'</div>');
		} else {
			e.text(em);
		}
	} else {
		$('.form-error', p).remove();
	}
}
function regCheckPass() {
    $.ajax({type:'GET', url:'check-password', data:{pass:$(this).val()}, dataType:'xml',success:regCheckPassComplete});
}
function regCheckPassComplete(xml) {
    var dx = $(xml);
    var em = '';
    if (dx.find('check-password').attr('result') == 'fail') {
        dx.find('error').each(function() {
            if (em.length > 0) em += " ";
            em += $(this).text();
        });
    }
    var p = $('form.register input[name=pass]').parent();
	if (em != "") {
		var e = $('.form-error', p);
		if (e.length == 0) {
			$(p).append('<div class="form-error">'+em+'</div>');
		} else {
			e.text(em);
		}
	} else {
		$('.form-error', p).remove();
	}
}
function ajaxSend() {
    $(this).parent().load($(this).attr('href')).html("Updating");
    return false;
}
function setCookie(name, value, daysToExpire) {
    if (daysToExpire == null) daysToExpire = 1000;
    var cookie = name + "=" + escape (value);
    var expireDate = new Date();
    expireDate.setDate(expireDate.getDate() + daysToExpire);
    document.cookie = cookie + ";expires=" + expireDate.toGMTString();
}
function getCookie(name) {
    var list = document.cookie.match( '(^|;) ?' + name + '=([^;]*)(;|$)');
    if (list) {
        return (unescape(list[2]));
    } else {
        return null;
    }
}
xcaui = {
    init : function() {
        xcaui.node.init();
    },
    node : {
        overLink : false,
        init : function() {
            $('ul.hierarchy li').mousedown(xcaui.node.down);
            $('ul.hierarchy a').hover(xcaui.node.over, xcaui.node.out);
        },
        over : function() {
            xcaui.node.overLink = true;
        },
        out : function() {
            xcaui.node.overLink = false;
        },
        down : function() {
            var e = $(this);
            if (xcaui.node.overLink) return true;
            if (e.hasClass('node-closed')) {
                e.removeClass('node-closed').addClass('node-open');
            } else if (e.hasClass('node-open')) {
                e.removeClass('node-open').addClass('node-closed');
            }
            return false;
        }
    }
} 
xca = {
    author : {
        init : function() {
            $(this).hover(xca.utils.hoverOver, xca.utils.hoverOut).click(xca.utils.gotoInnerLink);
        }
    },
    utils : {
        hoverOver : function() {
            $(this).addClass('hover');
        },
        hoverOut : function() {
            $(this).removeClass('hover');
        },
        gotoInnerLink : function() {
            document.location = $('a', this).attr('href');
        },
        selectAll : function() {
            $('input[type=checkbox]').attr('checked', true);
        },
        selectNone : function() {
            $('input[type=checkbox]').attr('checked', false);
        }
    },
    init : function() {
        $('.authorlist div').each(xca.author.init);
        $('.comment-parent').click(xca.utils.gotoInnerLink);
        $('div.latest, div.thread-listing-row').click(xca.utils.gotoInnerLink);
        $('ul.forums li').click(xca.utils.gotoInnerLink); 
        $('ul.search-result li').click(xca.utils.gotoInnerLink);
        $('.forum-thread-list tr:odd').addClass('odd');
        $('.profile tr:odd').addClass('odd');
        $('div.like div').html('&nbsp;');
        $('form.notifications').prepend('<div><a href="javascript:xca.utils.selectAll();" class="button">Select All</a> <a href="javascript:xca.utils.selectNone()" class="button">Select None</a>');
    }
}
function finishedLoading() {
    $("#loading").hide();
}
function initComment() {
    // do nothing for now
}
function quoteComment(e) {
    var p = $(e).parent();
    var author = $('span.author:first', p).text();
    var quote = '<p class="quoted-header"><span class="light">Posted by</span> <span class="author">' + author + '</span> <span class="date">' + $('span.date:first', p).text() + '</span></p>' + $('div.comment-text', p).html();
    var quoteNode = $('<blockquote class="quote">' + quote + '</blockquote>');
    quoteNode.find('p').addClass('quote');
    tinyMCE.activeEditor.dom.add(tinyMCE.activeEditor.getBody(), quoteNode[0]);
    quote = quoteNode.html();
    /*quoteNode.find('p').each(function(){
        var at = {};
        at['class'] = $(this).attr('class');
        tinyMCE.activeEditor.dom.add(tinyMCE.activeEditor.getBody(), 'p', at, $(this).html());
    });*/
    tinyMCE.activeEditor.dom.add(tinyMCE.activeEditor.getBody(), 'p', {}, '&nbsp;');
        //tinyMCE.execCommand('mceInsertContent',false,quote);
        //tinyMCE.execCommand('mceCleanup');
        var off = $('div.form-row-textarea').offset();
    $('html,body').animate({scrollTop:off.top}, 1000);
    return false;
}
$(document).ready(xca.init);
$(document).ready(xcaui.init);

/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */

var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) val = "0" + val;
			return val;
		};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) throw SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
				d:    d,
				dd:   pad(d),
				ddd:  dF.i18n.dayNames[D],
				dddd: dF.i18n.dayNames[D + 7],
				m:    m + 1,
				mm:   pad(m + 1),
				mmm:  dF.i18n.monthNames[m],
				mmmm: dF.i18n.monthNames[m + 12],
				yy:   String(y).slice(2),
				yyyy: y,
				h:    H % 12 || 12,
				hh:   pad(H % 12 || 12),
				H:    H,
				HH:   pad(H),
				M:    M,
				MM:   pad(M),
				s:    s,
				ss:   pad(s),
				l:    pad(L, 3),
				L:    pad(L > 99 ? Math.round(L / 10) : L),
				t:    H < 12 ? "a"  : "p",
				tt:   H < 12 ? "am" : "pm",
				T:    H < 12 ? "A"  : "P",
				TT:   H < 12 ? "AM" : "PM",
				Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
	dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
	monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};

