/* MDDCCit.js
2009.4.22 周邦信: 修改引用複製格式
2009.4.15 for chrome, firefox, 周邦信
2005/5/5 11:22 by Ray
frame 名稱改用 main
2005/8/8 8:27 by Ray
2004/11/16 04:22下午 針對大檔改善效率 by Ray
2004/10/15 modified by Ray & Mary 
2004/7/15 03:14下午 modified by Ray
*/

var cite_title = '法鼓全集2005網路版';
var winParent;
var winText;
var doc;
var StartLine;
var StartPage;
var EndLine;
var EndPage;

function bili() 
{	
	winParent = window.parent;
	winText = winParent.frames["main"]; //Focuse on Frame which is named "Text"
	doc = winText.document;	
	
	if (jQuery.browser.msie) {
		var sel = doc.selection;
		var range = sel.createRange();

		if (range.text.length==0) {
			alert("請先選取文字，再使用引用複製功能。");
			return false;
		}	
		myCopy(range);
	} else {
		var sel = winText.getSelection();
		if (sel.toString().length==0) {
		alert("請先選取文字，再使用引用複製功能。");
		return false;
		}
		copy4firefox(sel);
	}
	return false;
}//bili()

function copy4firefox(sel) {
	var range = sel.getRangeAt(0);
	var start='';
	var end='';
	$("span", doc).each(function (i) {
		compareValue = range.comparePoint(this, 0);
		if (compareValue==-1) {
			start = this.getAttribute('data-lb');
			end = this.getAttribute('data-lb');
		} else if (compareValue==0) end = this.getAttribute('data-lb')
		else if (compareValue==1) return false;
	});
	StartPage = start.substr(0,4);	//從character第一碼取四碼
	StartLine = start.substr(4,2); //從第五個位置取兩碼
	EndPage = end.substring(0,4); // 引用結束處的頁碼
	EndLine = end.substr(4,2);
	page  = parseInt(StartPage,10);  //引用開始頁數Integer
	page2 = parseInt(EndPage,10); //引用結束頁數Integer
	StartLine = parseInt(StartLine, 10);
	EndLine = parseInt(EndLine,10);
	Name = doc.title;
	var temp1 = Name.split(" ");
	info0 = ji(temp1[0]); // 輯、冊，例如：01-01
	vbook = temp1[1]; // 書名		
	temp = cite_title + " (" + info0 + ", 頁" + page + ", 行" + StartLine ; //組字串
	if (page != page2) { // 如果引用跨頁
		temp = temp + "~p. " + page2 + ", " + EndLine;
	} else if (StartLine != EndLine) { 
		temp = temp + "~" + EndLine;
	}
	temp = temp +  ")";
	temp = "引用複製：《" + vbook + "》：「" + range.toString() + "」 " + temp;
	if ($('p#cite', doc).length>0) $('p#cite', doc).text(temp)
	else $('body', doc).prepend("<p id='cite' style='color:blue'>" + temp + '</p>');
}

function ji(s) {
	var t = s.split("-");
	t[0] = t[0].replace(/^0*/, '')
	t[1] = t[1].replace(/^0*/, '')
	return '第' + t[0] + '輯第' + t[1] + '冊'
}

function myCopy(range)
{		
	//開頭不能是空白, 若是空白就縮進來	
	while (escape(range.text.substr(0,1)) == "%0D") //當第一個字元是空白
	 {
		if (range.text.length>0)  //有選取到字串(字串長度大於零)
		{ 
			range.moveStart("character",1); // move one character to the start position of the range.
		}
		else { return; }
	}
	getStartEnd(range);

	page  = parseInt(StartPage,10);  //引用開始頁數Integer
	//alert("start page int:" + page);
	page2 = parseInt(EndPage,10); //引用結束頁數Integer
	//alert("end page int:" + page2);
	if(EndLine == "  ")
	{
		 EndLine = ""; 
	}		// 若取不到東西
	else
	{ 
		 EndLine = parseInt(EndLine,10);
  }
	Name = doc.title;	
	var temp1 = Name.split(" ");
	info0 = ji(temp1[0]); // 輯、冊，例如：01-01
	vbook = temp1[1]; // 書名		
	temp = cite_title + " (" + info0 + ", 頁" + page + ", 行" + StartLine ; //組字串

	if (page != page2)
	{ // 如果引用跨頁
		temp = temp + "~p. " + page2 + ", " + EndLine;
	} 
	else if (StartLine != EndLine)
	{ 
		temp = temp + "~" + EndLine;
	}
	temp = temp +  ")";
	
	range1 = range.duplicate();
	var temp_obj = doc.all.item("hiddentextarea");
	hiddrange=temp_obj.createTextRange();

	vbook = "《" + vbook + "》：";
	length1 = range1.text.length + temp.length + vbook.length + 2;
	hiddrange.text =  vbook + "「" + range1.text + "」 " + temp;

	hiddrange.moveStart("character",0-length1-1);
	hiddrange.execCommand("SelectAll");
	hiddrange.execCommand("Copy");
	alert(hiddrange.text);
	//doc.location.back();
}  //myCopy()

function getStartEnd(range)
{
	var range2 = range.duplicate();
	var htmltext = range2.htmlText;
	var arrayID = htmltext.match(/data-lb="\d{6}"/g);
	if (arrayID != null) {
		var IDcount = arrayID.length;
		var myid = arrayID[0].substr(9,6); // 從 data-lb="123456" 取得 123456
		StartPage	= myid.substr(0,4);	//從character第一碼取四碼
		StartLine = myid.substr(4,2); //從第五個位置取兩碼
		myid = arrayID[IDcount-1].substr(9,6);  // 從 data-lb="123456" 取得 123456
		EndPage = myid.substr(0,4);	//從character第一碼取四碼
		EndLine = myid.substr(4,2); //從第五個位置取兩碼
	} else {
		getStart(range);
		getEnd(range);
	}
}

function getStart(range)
{
	var range_2 = range.duplicate();
	temp = range_2.parentElement();
	myid=temp.id;	
	while (myid.length!=6 && temp.tagName != "BODY") {
		temp = temp.parentElement;
		myid=temp.id;
	}	
	myid=temp.id;
	mytagname=temp.tagName;
	if (mytagname == "BODY") {
		range2 = range.duplicate();
		range2.moveStart("character",-40);
		htmltext = range2.htmlText;
		arreyID = htmltext.match(/data-lb="\d{6}"/g);
		IDcount = arreyID.length;
		myid = arreyID[IDcount-1].substr(9,6); // 從 data-lb="123456" 取得 123456
	}
	StartPage = myid.substr(0,4);	//從character第一碼取四碼
	//alert("Begin page no.:"+page);
	StartLine = myid.substr(4,2); //從第五個位置取兩碼
} //getStart()

function getEnd(range)
{
	range_2 = range.duplicate();
	temp = range_2.parentElement();
	myid=temp.id;	
	while (myid.length!=6 && temp.tagName != "BODY") {
		temp = temp.parentElement;
		myid=temp.id;
	}	
	myid=temp.id;
	mytagname=temp.tagName;
	if (mytagname == "BODY") {
		range2 = range.duplicate();
		range2.moveStart("character",-40);
		htmltext = range2.htmlText;
		arreyID = htmltext.match(/data-lb="\d{6}"/g);
		IDcount = arreyID.length;
		myid = arreyID[IDcount-1].substr(9,6);  // 從 data-lb="123456" 取得 123456
	}
	var str1 = myid;
	if (str1 == "") { str1 = "       ";}
	EndPage = str1.substring(0,4); // 引用結束處的頁碼
	EndLine = str1.substr(4,2);
}//getEnd()
