/*
 * wordProcessor: ブラウザ上で簡易文書編集機能を提供する
 * Copyright (c) 2003- Seesaa CO.,LTD. All rights reserved.
 * 
 * url: http://seesaa.jp/
 */


function wordProcessor (form_name,element_name) {
        this.form_name    = form_name;
	this.element_name = element_name;
	this.color_palette_name = form_name + '_' + element_name + '_color_palette';
	return this;
}

wordProcessor.prototype.insertTag = function (start_tag, end_tag) {
	var text_range = new textRange(document.getElementById(this.element_name));
	text_range.insertTag(start_tag, end_tag);
}


wordProcessor.prototype.setFontDecoration = function (tag_name, style) {
	var start_tag = '<' + tag_name + ' style="' + style + ';">';
	var end_tag = '</' + tag_name + '>';
	this.insertTag(start_tag, end_tag);
}


wordProcessor.prototype.setFontBold = function () {
  //	this.setFontDecoration('span', 'font-weight:bold');
  this.insertTag('<strong>', '</strong>');
}


wordProcessor.prototype.setFontItalic = function () {
  //	this.setFontDecoration('span', 'font-style:italic');
  this.insertTag('<em>', '</em>');
}


wordProcessor.prototype.setFontUnderline = function () {
  //	this.setFontDecoration('span', 'text-decoration:underline');
  this.insertTag('<ins>', '</ins>');
}


wordProcessor.prototype.setFontStrike = function () {
  //	this.setFontDecoration('span', 'text-decoration:line-through');
  this.insertTag('<del>', '</del>');
}


wordProcessor.prototype.setFontBlockquote = function () {
  //	this.insertTag('<blockquote>', '</blockquote>');
  this.insertTag('<blockquote>', '</blockquote>');
}


wordProcessor.prototype.setFontLarge = function () {
	this.setFontDecoration('span', 'font-size:large');
}


wordProcessor.prototype.setFontSmall = function () {
	this.setFontDecoration('span', 'font-size:x-small');
}


wordProcessor.prototype.setTextAlign = function (align) {
	var start_tag = '<div style="text-align:' + align + ';">';
	var end_tag = '</div>';
	this.insertTag(start_tag, end_tag);
}


wordProcessor.prototype.createColorPaletteInnerHTML = function () {
	var layer_name = this.color_palette_name;
	var form_name = layer_name + '_form';
	var display_name = layer_name + '_display';

	var colorbox = function (color, display_form_name, display_name, editor_form_name, editor_name, layer_name) {
		var mover = 'document.' + display_form_name + '.' + display_name + '.value=\'#' + color + '\';new layerHandle(\'' + layer_name + '\').srcElement.style.color=\'#' + color + '\';';
		var str =
			'<span style="height:10px; width:10px; background: #' + color + '; display: block; float:left; cursor:default; position: relative; font-size: 2px; overflow: hidden;" ' +
			'onmouseover="' + mover + '"' +
		        'onmousedown=\'new textRange(document.' + editor_form_name + '.' + editor_name + ').insertTag("<span style=\\\"color:#' + color + ';\\\">", "</span>");new layerHandle("' + layer_name + '").hide(); switchAllSelect("visible");\'></span>';

		// var str =
		// 	'<td bgcolor="#' + color + '">' +
		// 	'<img src="/_img/cmn/spacer.gif" width="10" height="10" hspace="0" vspace="0" border="0" ' +
		// 	'onmouseover="' + mover + '"' +
		// 	'onmousedown=\'new textRange(document.' + editor_form_name + '.' + editor_name + ').insertTag("<span style=\\\"color:#' + color + ';\\\">", "</span>");new layerHandle("' + layer_name + '").hide(); switchAllSelect("visible");\' />' +
		// 	'</td>';
		return str;
	}

	var inner_html =
		'<form name="'+ form_name + '">' +
		'<div style="background:#ffffff; border:#aaa solid 2px; width: 400px;">' +
		'<input name="' + display_name + '" style="border-color:#000; border-style:solid; border-width:1px; width:60px;" />' +
		' AaＡａあぁアァ漢字 <span style="font-weight:bold;">サンプルテキスト</span>' +
		'<table border="0" cellpadding="0" cellspacing="0">';

	var r_dt = 51.2;
	var g_dt = 51.2;
	var b_dt = 51.2;
	var r_max = 256 / r_dt;
	var g_max = 256 / g_dt;
	var b_max = 256 / b_dt;
	var rgb_list = new Array('000000', 'FF0000', '333333', '00FF00', '666666', '0000FF', '999999', 'FFFF00', 'CCCCCC', 'FF00FF', 'FFFFFF', '00FFFF');

	for ( var r = 0 ; r <= r_max ; r++ ) {
		var r_hex = (Math.floor(r * r_dt) - ( r > 0 ? 1 : 0)).toString(16);
		r_hex = "00".substring(0, 2 - r_hex.length) + r_hex;

		inner_html += '<tr><td>' +
			colorbox(rgb_list[r * 2], form_name, display_name, this.form_name, this.element_name, layer_name) +
			colorbox(rgb_list[r * 2 + 1], form_name, display_name, this.form_name, this.element_name, layer_name);

		for ( var b = 0 ; b <= b_max ; b++ ) {
			var b_hex = (Math.floor(b * b_dt) - ( b > 0 ? 1 : 0)).toString(16);
			b_hex = "00".substring(0, 2 - b_hex.length) + b_hex;

			for ( var g = 0 ; g <= g_max ; g++ ) {
				var g_hex = (Math.floor(g * g_dt) - ( g > 0 ? 1 : 0)).toString(16);
				g_hex = "00".substring(0, 2 - g_hex.length) + g_hex;
				var color = r_hex + g_hex + b_hex;
				inner_html +=
					colorbox(color.toUpperCase(), form_name, display_name, this.form_name, this.element_name, layer_name);
			}
		}
		inner_html += '</td></tr>';
	}

	inner_html += '</table><div style="text-align:center;" ><input type="button" value="閉じる" onclick="switchAllSelect(\'visible\');new layerHandle(\'' + layer_name + '\').hide();" /></div></div></form>';
	return inner_html;
}


wordProcessor.prototype.createPopUpColorPalette = function () {
	var lh = new createLayer(this.color_palette_name);
	var inner_html = this.createColorPaletteInnerHTML();
	lh.innerHTML(inner_html);
}

wordProcessor.prototype.createColorPaletteHTML = function () {
	var inner_html = this.createColorPaletteInnerHTML();
	var html = '<div style="display:none;" id="' + this.color_palette_name + '">' + inner_html + '</div>';
	return html;
}


wordProcessor.prototype.showColorPalette = function (e) {
	var lh = new layerHandle(this.color_palette_name);
	var eh = new eventHandle(e);
	switchAllSelect('hidden');
	lh.moveTo(eh.pageX, eh.pageY);
	lh.show();
}

