var ScriptURI;
var ScriptBaseURI;
var StaticURI;

if ((!(navigator.appVersion.indexOf('MSIE') != -1) &&
      (parseInt(navigator.appVersion)==4))) {
    document.write("<style type=\"text/css\">");
    document.write("body { margin-top: -8px; margin-left: -8px; }"); 
    document.write("</style>");
}

var origWidth, origHeight;
if ((navigator.appName == 'Netscape') &&
    (parseInt(navigator.appVersion) == 4)) {
    origWidth = innerWidth;
    origHeight = innerHeight;
    window.onresize = restore;
}

function restore () {
    if (innerWidth != origWidth || innerHeight != origHeight)
        location.reload();
}

function doPublish (blog_id, start) {
    var url;
    if (start)
        url = ScriptBaseURI + '/weblog/post?__mode=start_rebuild&blog_id=' + blog_id;
    else
        url = ScriptBaseURI + '/weblog/post?__mode=rebuild_confirm&blog_id=' + blog_id;
    window.open(url, 'rebuild', 'width=400,height=250,resizable=yes');
}

function openManual (page, anchor) {
    window.open(StaticURI + 'docs/mtmanual_' + page + '.html#' + anchor, 'manual', 'width=450,height=550,scrollbars=yes,status=yes,resizable=yes');
}

function doRemoveItems (f, type, plural) {
    var base = ScriptURI + '?__mode=delete_confirm&type=' + type;
    var url = '';
    var e = f.id;
    if (!e) return;
    if (e.value && e.checked) {
        var idVal = e.value; 
        idVal = idVal.replace(/&/g, '%26');
        url += '&id=' + idVal;
    } else
        for (i=0; i<e.length; i++)
            if (e[i].checked) {
                var idVal = e[i].value; 
                idVal = idVal.replace(/&/g, '%26');
                url += '&id=' + idVal;
            }
    if (!url) {
        alert('削除する' + plural + 'を指定してください。');
        return false;
    }
    url = base + url;
    window.open(url, 'confirm_delete', 'width=300,height=450,scrollbars=yes');
}

function doRemoveItem (id, type, subapp) {
    var url = ScriptURI;
    if (subapp)
        url = ScriptBaseURI + '/' + subapp;
    url += '?__mode=delete_confirm&type=' + type + '&id=' + id;
    window.open(url, 'confirm_delete', 'width=300,height=450,scrollbars=yes');
}

function getByID (n) {
    var d = window.document;
    if (d.getElementById)
        return d.getElementById(n);
    else if (d.all)
        return d.all[n];
}

function doRemoveLicense () {
    document.cfg_form.cc_license.value = '';
    var e = getByID('has-license');
    if (e) e.style.display = 'none';
    e = getByID('no-license');
    if (e) e.style.display = 'block';
}

function deleteListItem( confirmation, id, magic_token )
{
    if( !confirm( confirmation ) )
        return false;
    window.location = ScriptURI + '?__mode=delete&magic_token=' + magic_token + '&type=item&id=' + id + '&from=edit_item';
}

function doTemplateSetPreview (blog_id, set_id) {
    window.open(ScriptURI + '?__mode=preview&set_id=' + set_id + '&blog_id=' + blog_id, 'preview', 'width=820,height=500,scrollbars=yes,resizable=yes');
}

function doReturnToPage (url) {
	window.location = url;
}

var theForm;
var requestSubmitted = false;
function disableButton (e) {
    if (!requestSubmitted) {
        e.disabled = true;
        theForm = e.form;
        requestSubmitted = true;
        setTimeout('submitIt()', 250);
    } else {
        return false;
    }
}

function submitIt () {
    theForm.submit();
    return false;
}

function disableSubmitButton (e) {
    if (!requestSubmitted) {
        e.disabled = true;
        requestSubmitted = true;
    } else {
        return false;
    }
}

function checkAndSubmit (f) {
    if (requestSubmitted == true) {
        return false;
    } else {
        requestSubmitted = true;
        f.submit();
        return false;
    }
}

function confirmSubmit (text) {
	if(confirm(text)) {
		return true;
	} else {
		return false;
	}
}

function dirify (str, sep) {
    if( !sep )
        sep = '_';
    var sep_code = sep.charCodeAt(0);
    var s = str.toLowerCase();
    s = s.replace(/&[^;\s]+;/g, '');
    s = s.replace(/[^\w\s]/g, '');
    s = s.replace(/\s+/g, sep);
    var i = 0;
    var length = s.length;
    var str_array = new Array;
    for (i = 0; i < length; i++) {
        var code = s.charCodeAt(i);
        if ( ( code >= 48 && code <= 57 ) || ( code >= 65 && code <= 90 ) || ( code >= 97 && code <= 122 ) || code == sep_code ) {
            str_array.push( s.charAt(i) );
        }
    }
    s = str_array.join('');
    return s;
}

function setDomainName (e, name) {
	if( !e )
		return;
	if( typeof name == "undefined" || name == null )
		name = "";
    e.value = dirify(name).substr(0, 25);
}

function doCheckAll (f, v) {
    var e = f.id;
    if (e.value)
        e.checked = v;
    else
        for (i=0; i<e.length; i++) 
            e[i].checked = v;
}

function submitForm( f, params )
{
	f = TC.elementOrId( f );
	if( !f )
		return false;
	
	if( params )
	{
		var inputs = f.getElementsByTagName( "input" );
		for( var i = 0; i < inputs.length; i++ )
		{
			var input = inputs[ i ];
			if( TC.defined( params[ input.name ] ) &&
				params[ input.name ] != null )
				input.value = params[ input.name ];
		}
	}

	f.submit();
	return false;
}

var Lexicon = {};
var itemset_options = {};

function doAction(f, singular, plural, phrase) {
    var s = f['action_selector'];
    if (s.length && s[0].options) s = s[0];
    var action = s.options[s.selectedIndex].value;
    if (action == '0' || action == '') {
        alert(trans('実行する操作を選択してください'));
        return;
    }
    if (f.elements['itemset_action_input'])
        f.elements['itemset_action_input'].value = '';
    var opt;
    if (opt = itemset_options[action]) {
        var count = countMarked(f, 'id');
        if (!count) {
            if (opt['single']) {
                alert(trans('[_1] を選択してください', singular));
                return false;
            } else {
                alert(trans('[_1] を選択してください', plural));
                return false;
            }
        } else if (count > 1 && opt['single']) {
            alert(trans('[_1] を一つ選択してください', singular));
            return false;
        }
        if (action == 'set_featured') {
            for (var i = 0; i < f.id.length; i++) {
                if (f.id[i].checked && entry_metadata[f.id[i].value]['draft']) {
                    alert(trans('下書きの[_1]はブログのトップに表示設定できません', plural));
                    return false;
                }
            }
        }
        if ( (action == 'accept_comments') || (action == 'reject_comments') ) {
            for (var i = 0; i < f.id.length; i++) {
                if (f.id[i].checked && entry_metadata[f.id[i].value]['autoclosed']) {
                    alert(trans('Comments have been automatically closed in one or more of the selected [_1]. Comment status cannot be changed once comments have been automatically-closed.', plural));
                    return false;
                }
            }
        }
        var input;
        if (opt['js']) {
            return eval(opt['js'] + '(f,action);');
        } else if (opt['input']) {
            if (input = prompt(opt['input'])) {
                f.elements['itemset_action_input'].value = input;
            } else {
                return false;
            }
        } else if (opt['continue_prompt']) {
            if (!confirm(opt['continue_prompt'])) {
                return false;
            }
        }
    }
    submitActionForm(f);
}

function submitActionForm(f) {
    f.elements["__mode"].value = 'itemset_action';
    f.submit();
}

function countMarked (f, nameRestrict) {
    var count = 0;
    var e = f.id;
    if (!e) return 0;
    if (e.type && e.type == 'hidden') return 1;
    if (e.value && e.checked)
        count++;
    else
	if (nameRestrict) {
	    for (i=0; i<e.length; i++)
        	if (e[i].checked && (e[i].name == nameRestrict))
                    count++;
	} else {
	    for (i=0; i<e.length; i++)
        	if (e[i].checked)
                    count++;
	}
   return count;
}

function trans(str) {
    if (Lexicon && Lexicon[str])
        str = Lexicon[str];
    if (arguments.length > 1)
        for (var i = 1; i <= arguments.length; i++) {
            str = str.replace(new RegExp('\\[_' + i + '\\]', 'g'), arguments[i]);
            var re = new RegExp('\\[quant,_' + i + ',(.+?)(?:,(.+?))?\\]');
            var matches;
            while (matches = str.match(re)) {
                if (arguments[i] > 1)
                    str = str.replace(re, arguments[i] + ' ' +
                        ((typeof(matches[2]) != 'undefined') > 2 ? matches[2]
                                                                 : matches[1]
                                                                   + 's'));
                else
                    str = str.replace(re, arguments[i] + ' ' + matches[1]);
            }
        }
    return str;
}

function hideShow( hide, show )
{
    var hide_element = TC.elementOrId( hide );
    var show_element = TC.elementOrId( show );
    if( !hide_element || !show_element )
        return false;
    TC.addClassName( hide_element, 'hidden' );
    TC.removeClassName( show_element, 'hidden' );
    return false;
}

function submitFilter()
{
    var filter_form = TC.elementOrId( 'filter-form' );
    if( !filter_form )
        return false;
    filter_form.submit();
    return false;
}

function quickAddFocus( input )
{
    input.value = '';
    TC.addClassName( input, 'qa-focus' );
}

