/*------------------------------------------------------------------------------
Author
    File Name:   /javascripts/website-ui.js
    Author:      msakuma
    Created:     2009/04/29
    Modified:    2009/04/29
------------------------------------------------------------------------------*/

//------------------------------------------------
// jQuery の競合対策
//------------------------------------------------
jQuery.noConflict();
var j$ = jQuery;


//------------------------------------------------
// Window
//------------------------------------------------
function openIconList() {
	var subWinow;
	subWindow = window.open('/htmls/includes/icon.html', 'sub', 
		'height=550, width=550, toolbar=no, memuber=no, location=no, scrollbars=yes');
	subWindow.focus();
	return false;
}

function openNewWindow(url) {
	var newWinow;
	newWinow = window.open(url, 'new');
	newWinow.focus();
	return false;
}

//------------------------------------------------
//Highslide
//------------------------------------------------
HIGHSLIDE_GRAPHICS_DIR = '/javascripts/lib/highslide/graphics/';

/**
* Highslide JS core を初期化します。
*/
function initHighslideCore() {
	if (undefinedHighslide()) return;
	hs.graphicsDir = HIGHSLIDE_GRAPHICS_DIR;
	hs.outlineType = 'rounded-white';
}

/**
* Highslide With HTML を初期化します。
*/
function initHighslideWithHtml(width, height) {
	if (undefinedHighslide()) return;
	hs.graphicsDir = HIGHSLIDE_GRAPHICS_DIR;
	hs.outlineType = 'glossy-dark';
	hs.wrapperClassName = 'draggable-header';
	hs.width = width;
	hs.height = height;
}

/**
 * Highslide が読み込まれていないか判定します。
 */
function undefinedHighslide() {
	return typeof(hs) == 'undefined';
}


//------------------------------------------------
//SyntaxHighlighter
//------------------------------------------------
/**
* SyntaxHighlighter を初期化します。
*/
function initSyntaxHighlighter() {
	if (undefinedSyntaxHighlighter()) return;
	SyntaxHighlighter.config.clipboardSwf = '/javascripts/lib/syntaxhighlighter/scripts/clipboard.swf';
	SyntaxHighlighter.all();
}

/**
 * SyntaxHighlighter が読み込まれていないか判定します。
 */
function undefinedSyntaxHighlighter() {
	return typeof(SyntaxHighlighter) == 'undefined';
}


//------------------------------------------------
// TreeView
//------------------------------------------------
/**
 * TreeView を初期化します。
 */
function initTreeView(id) {
	var rootId = "#" + id;
	
	j$(rootId).treeview();
	j$("#add").click(function() {
		var branches = j$("<li><span class='folder'>New Sublist</span><ul>" + 
			"<li><span class='file'>Item1</span></li>" + 
			"<li><span class='file'>Item2</span></li></ul></li>").appendTo(rootId);
		j$(rootId).treeview({
			add: branches
		});
		branches = j$("<li class='closed'><span class='folder'>New Sublist</span><ul><li><span class='file'>Item1</span></li><li><span class='file'>Item2</span></li></ul></li>").prependTo("#folder21");
		j$(rootId).treeview({
			add: branches
		});
	});
}

/**
 * レポートツリーを初期化します。
 */
function initReportTreeView() {
	initTreeView('report_tree');
}

/**
 * レポートツリーを初期化します。
 * @param openFolderId 展開するフォルダを示す <li> タグの ID
 */
function initReportTreeView2(openFolderId) {
	j$('#' + openFolderId).removeAttr('class');
	initReportTreeView();
}

/**
 * ドキュメントツリーを初期化します。
 */
function initDocumentTreeView() {
	initTreeView('document_tree');
}

/**
 * ドキュメントツリーを初期化します。
 * @param openFolderId 展開するフォルダを示す <li> タグの ID
 */
function initDocumentTreeView2(openFolderId) {
	j$('#' + openFolderId).removeAttr('class');
	initDocumentTreeView();
}


//------------------------------------------------
// Ajax
//------------------------------------------------
/**
 * Ajax の初期処理を行います。
 * @param elementId 通信が行われた後に内容を更新する要素のid
 */
function initAjaxForm(elementId) {
	j$.ajaxSetup({ cache : false });
	j$('#' + elementId).ajaxError( function(ev, xhr, options, err) {
		alert('サーバとの通信に失敗しました。\nご迷惑をお掛けしますが、時間を置いてから再度アクセスしてください。');
	});
}

/**
 * main 要素をリフレッシュします。
 * @param data サーバのレスポンスデータ
 * @param status サーバのステータス
 */
function refreshMain(data, status) {
	j$('#main').html(data);
	refreshFlow();
}

/**
 * 手順リスト（3段構成）の選択状態をリフレッシュします。
 */
function refreshFlow() {
	if (j$('#flow').val() == undefined) return;
	
	if (j$('').size() == 2) {
		refreshFlow2();
	}
	refreshFlow3();
}

/**
 * 手順リスト（2段構成）の選択状態をリフレッシュします。
 */
function refreshFlow2() {
	j$('#flow>li[class="selected"]').removeClass('selected');
	var buttonValue = j$('#button_ajax').val();
	if (buttonValue == '確定') {
		j$('#flow>li:eq(0)').addClass('selected');
	} else {
		j$('#flow>li:eq(1)').addClass('selected');
	}
}

/**
 * 手順リスト（3段構成）の選択状態をリフレッシュします。
 */
function refreshFlow3() {
	j$('#flow>li[class="selected"]').removeClass('selected');
	var buttonValue = j$('#button_ajax').val();
	if (buttonValue == '次へ') {
		j$('#flow>li:eq(0)').addClass('selected');
	} else if (buttonValue == '確定') {
		j$('#flow>li:eq(1)').addClass('selected');
	} else {
		j$('#flow>li:eq(2)').addClass('selected');
	}
}


//------------------------------------------------
// 初期化（画面別）
//------------------------------------------------
/**
 * 「レポート」を初期化します。
 * @param openFolderId 展開するフォルダを示す <li> タグの ID
 */
function initReportPage(openFolderId) {
	initReportTreeView2(openFolderId);
	initSyntaxHighlighter();
	initHighslideCore();
	initAjaxForm('report_comment');
}

/**
 * 「サイトマップ」を初期化します。
 */
function initSitemapPage() {
	initReportTreeView();
	initDocumentTreeView();
	initTreeView('bbs_tree');
	initTreeView('inquiry_tree');
	initTreeView('link_tree');
	initTreeView('account_tree');
	initTreeView('agreement_tree');
}

