//***********************************************************************
//* APPLICATION	: DDF+ Web
//* COMPONENT	:
//* PAGE		: This is a javascript library.
//* CREATION	: 03.2004
//* AUTHOR		: Jérémy Folliet -SQLi-
//* CONTENT		: javascript functions
//*
//***********************************************************************
//* UPDATES		:
//*
//***********************************************************************

self.focus();

/*if (window.opener.form_ResultsList.elements[window.opener.form_ResultsList.elements.length-1].name == 'submitThisForm'){
	window.opener.form_ResultsList.submit();
	this.close();
}*/

var win_notePad;
var win_notePad_status;
var win_search;
var win_search_status;
var win_notePad_TimeOut = 1000;
var win_search_TimeOut = 1000;
var nbotFrame = 0;
var nbotFrameR = 0;

/*****************************************************************************
* function alignScroll(str_FrmRef,str_FrmMov)
*	align str_FrmMov scroll position to str_FrmRef scroll position
*****************************************************************************/
function alignScroll(str_FrmRef,str_FrmMov){
	var frmRef = window.frames[str_FrmRef]; 			//the reference frame
	var frmMov = window.frames[str_FrmMov]; 			//the frame to scroll
	
	var refHeight = frmRef.document.body.scrollHeight; 	//the height of the reference frame
	var movHeight = frmMov.document.body.scrollHeight;	//the height of the frame to scroll

	var refScroll = frmRef.document.body.scrollTop;		//scroll position of the reference frame

	var refRatioScroll = (refHeight/refScroll);			//ratio of the reference frame's scroll
	var movToScroll = (movHeight/refRatioScroll);		//calcul scroll's position of the frame to scroll

	frmMov.document.body.scrollTop = movToScroll;		//apply ratio the the frame to scroll

}

/*****************************************************************************
* function changeScrollbarColor(baseColor,faceColor)
*	change baseColor and faceColor attributes of scrollbar
*****************************************************************************/
function changeScrollbarColor(baseColor,faceColor){
	var frmR = window.frames["botFrameR"]; 			//the Right frame
	var frmL = window.frames["botFrameL"]; 			//the Left frame

	/**** Reminder : HTML color code ****
	*									*
	*		#FF0000 Red					*
	*		#FF8000 Orange				*
	*		#FFFF00 Yellow				*
	*		#00FF00 Green				*
	*		#4444FF Blue				*
	*									*
	*************************************/

	frmR.document.body.style.scrollbarBaseColor = baseColor;
	frmL.document.body.style.scrollbarBaseColor = baseColor;
	frmR.document.body.style.scrollbarFaceColor = faceColor;
	frmL.document.body.style.scrollbarFaceColor = faceColor;
}

/*****************************************************************************
* function initOnMouseOver(oFrm1,oFrm2,fFunction)
*	set onMouseOver event to null for oFrm1 and oFrm2
*****************************************************************************/
function initOnMouseOver(oFrm1,oFrm2,fFunction){
	oFrm1.document.body.onmouseover = fFunction;
	oFrm2.document.body.onmouseover = fFunction;
}

/*****************************************************************************
* function initOnScroll(oFrm1,oFrm2,fFunction)
*	set onScroll event to null for oFrm1 and oFrm2
*****************************************************************************/
function initOnScroll(oFrm1,oFrm2,fFunction){
	oFrm1.document.body.onscroll = fFunction;
	oFrm2.document.body.onscroll = fFunction;
}

/*****************************************************************************
* function harmonizeScroll()
*	allows to harmonize the two scrolling in persistent mode
*****************************************************************************/
function harmonizeScroll(){
	var frmR = window.frames["botFrameR"]; 			//the Right frame
	var frmL = window.frames["botFrameL"]; 			//the Left frame

	var frmMenu = window.frames["topMenu"];			//the frame containing buttons
	var state = frmMenu.harmonizeScroll.value;


	if (state == "OFF"){
		frmR.document.body.onmouseover = function() {setScrollOnMouseOver('botFrameR','botFrameL');}
		frmL.document.body.onmouseover = function() {setScrollOnMouseOver('botFrameL','botFrameR');}

		frmMenu.harmonize.alt = lang_INACTIVE_HARMONIZED_SCROLL;
		changeScrollbarColor("#00FF00","#FFFFFF");
		frmMenu.harmonizeScroll.value = "ON";

	}
	else{
		initOnMouseOver(frmR,frmL,"");
		initOnScroll(frmR,frmL,"");
		frmMenu.harmonize.alt = lang_ACTIVE_HARMONIZED_SCROLL;
		changeScrollbarColor("","");
		frmMenu.harmonizeScroll.value = "OFF";
	}
}

/*****************************************************************************
* function setScrollOnMouseOver(str_FrmToActive, str_FrmToInactive)
*	set onMouseOver event to specific function for str_FrmToActive
*	set onMouseOver event to null for str_FrmToInactive
*****************************************************************************/
function setScrollOnMouseOver(str_FrmToActive, str_FrmToInactive){
	var frmToActive = window.frames[str_FrmToActive];
	var frmToInactive = window.frames[str_FrmToInactive];

	frmToActive.document.body.onscroll = function() {alignScroll(str_FrmToActive,str_FrmToInactive);}
	initOnScroll(frmToInactive,frmToInactive,"");
}

/*****************************************************************************
* function getQueryStringByName(str_name)
*	return the value of an Url parameter
*****************************************************************************/
function getQueryStringByName(str_name)
{
	var objQS = new Object();	// Object to stock. param's name
	var aPrm = new Array();		// To stock param's name
	var aVal = new Array();		// To stock param's value

	// Get Url QueryString (without ?)
	var req = window.location.search.substr(1,window.location.search.length);
	// Get the key-value couple
	var dbl = req.split('&');

	for (i=0;i<dbl.length;i++) {
		// Get param's name
		aPrm[i+1] = dbl[i].substring(0,dbl[i].indexOf('='));
		// Get param's value
		aVal[i+1] = unescape(dbl[i].substring(dbl[i].indexOf('=')+1,dbl[i].length));
		objQS[aPrm[i+1]] = aVal[i+1];
	}
	return eval("objQS." + str_name);

}


/*****************************************************************************
* function setPopupTitle()
*	Display the HTML title tag
*
*****************************************************************************/
function setPopupTitle(){
	var doc = getQueryStringByName("popTitle");
	document.write("<title>" + unescape(doc.replace("<br>"," ~ ")) + "</title>");
}


/*****************************************************************************
* function moveToPreviousDoc()
*	allows to go to the previous doc in the list
*
*****************************************************************************/
function moveToPreviousDoc(){
	var i_HiddenIndex = parseInt(getQueryStringByName("curdoc")) - 1;

  while ( window.opener.document.forms["form_ResultsList"].elements["docIndex_" + i_HiddenIndex] == null && i_HiddenIndex >= 0){
        i_HiddenIndex--;
  }
	if(i_HiddenIndex > 0){
		location.href = window.opener.document.forms["form_ResultsList"].elements["docIndex_" + i_HiddenIndex].value;
	}
	else{
		alert (lang_RESULTSEARCH_FIRSTPAGEREACHED);
	}
}


/*****************************************************************************
* function moveToNextDoc()
*	allows to go to the next doc in the list
*
*****************************************************************************/
function moveToNextDoc(){
	var i_HiddenIndex = parseInt(getQueryStringByName("curdoc")) + 1;
	var i_IndexMax =  i_HiddenIndex + 10;

  while ( window.opener.document.forms["form_ResultsList"].elements["docIndex_" + i_HiddenIndex] == null && i_HiddenIndex < i_IndexMax){
        i_HiddenIndex++;
  }
	if (window.opener.document.forms["form_ResultsList"].elements["docIndex_" + i_HiddenIndex] != null){
		location.href = window.opener.document.forms["form_ResultsList"].elements["docIndex_" + i_HiddenIndex].value;
	}
	else{
		alert (lang_RESULTSEARCH_LASTPAGEREACHED);
	}
}


/*****************************************************************************
* function moveToHit(a1,a2)
*	allows to go to a specified anchor
*
*****************************************************************************/
function moveToHit(a1,a2){
	var frmR = window.frames["botFrameR"]; 			//the Right frame
	var frmL = window.frames["botFrameL"]; 			//the Left frame
	var frmT = window.frames["topFrame"];

	frmL.location.hash = a1;
	frmR.location.hash = a2;

	frmT.alinkColor = "RED";
}

/*****************************************************************************
* function downloadFiles(aNbOfCopy)
*	allows to download files
*
*****************************************************************************/
function downloadFiles(aNbOfCopy){
	var folderExists, folderCreate;
	var str_URL;
	var str_Local;

	var frm = window.frames["botFrameL"];
	var docToSave = getQueryStringByName('doc').substr(3,getQueryStringByName('doc').length-7);
	var transToSave = getQueryStringByName('trans').substr(3,getQueryStringByName('trans').length-7);
	var str_FilePath = docToSave.substr(3,docToSave.length-7);
	window.open('GEN_downloadFilesFromTranslators.asp?doc=' + docToSave + '&trans=' + transToSave + '&nbarchive=' + aNbOfCopy,'Browse','height=400,width=300,left=300,top=150,screenX=20,screenY=20,fullscreen=0,location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0');
}


/*****************************************************************************
* function printDoc(str_Frame)
*	allows to print document
*
*****************************************************************************/
function printDoc(str_Frame){
	var frm = window.frames[str_Frame];
	frm.focus();
	frm.print();
}


/*****************************************************************************
* openDocumentInOriginalFormat(str_param)
*	allows to open a document in its original format
*
*****************************************************************************/
function openDocumentInOriginalFormat(str_param){
	var docToOpen = getQueryStringByName(str_param);
	var str_FilePath = unescape("http://" + SERVER_NAME + ":" + SERVER_PORT + "/") +  docToOpen.substr(3,docToOpen.length-7);

	window.open('GEN_viewerwindow.asp?'+ str_FilePath, 'doc_viewer', 'height=600,width=700,screenX=20,screenY=20,top=20,left=20,fullscreen=0,location=0, menubar=0, resizable=1, scrollbars=1, status=0, toolbar=0')
}


/*****************************************************************************
* function copyToClipboard(str_frm)
*	allows to copy selected text into clipboard
*
*****************************************************************************/
function copyToClipboard(str_frm){
	var frm = window.frames[str_frm];
	var textToCopy;
	if (frm.getSelection){
	 textToCopy = frm.getSelection();
	}
	else if (frm.document.getSelection){
		textToCopy = frm.document.getSelection();
	}
	else if (frm.document.selection) {
		textToCopy = frm.document.selection.createRange().text;
	}
	frm.clipboardData.setData('Text', textToCopy);
}


/*****************************************************************************
* function openNotepadHTML(str_frm, str_source)
*	allows to copy selected text into NotePad
*	UNUSED
*****************************************************************************/
function openNotepadHTML(str_frm,str_source){
	copyToClipboard(str_frm);
	if (!clipboardData.getData("Text")){
		alert(lang_EMPTY_CLIPBOARD);
		return;
	}
	window.document.forms['Clipboard_Form'].ClipBoard.value += getQueryStringByName(str_source) + '\n' + clipboardData.getData("Text") + "\n\n";

	w_NotepadHTML_Win = window.open('./notepad_html/notepad_html.asp', 'NotepadHTML_Win' , 'height=600,width=700,screenX=20,screenY=20,top=20,left=20,fullscreen=0,location=0, menubar=0, resizable=1, scrollbars=1, status=0, toolbar=0')
}


/*****************************************************************************
* function NotepadHTML_Win_fct()
*	allows to close NotePad_HTML window
*	UNUSED
*****************************************************************************/
function NotepadHTML_Win_fct(){
	if (w_NotepadHTML_Win){
		w_NotepadHTML_Win.close();
	}
}


/*****************************************************************************
* function openNotepadActiveX(str_frm, str_source)
*	allows to copy selected text into NotePad
*	
*****************************************************************************/
function openNotepadActiveX(str_frm, str_source){
	if(win_notePad){
		win_notePad_status = win_notePad.AppActivate("Notepad");
	}
	
	if(!win_notePad_status){
		try {
			win_notePad = new ActiveXObject("WScript.Shell");
			win_notePad.run ("NotePad",1);
		  	ActiveXOK = true;
		 }
		 catch (e) {
		  ActiveXOK = false;
		 }
	}
	else{
		win_notePad.Sendkeys ("%({TAB}+{TAB})",1); //Focus (= ALT+TAB+SHIFT+TAB)
	}
	
	if (ActiveXOK) {
		eval("setTimeout(\"pasteTextInNotepad('"+ str_frm +"','"+ str_source +"');\",win_notePad_TimeOut);");
	}
	else{
		window.open('ERROR_TRANS_Disabled_ActiveX.asp','Error','height=200,width=500,left=300,top=150,screenX=20,screenY=20,fullscreen=0,location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0');
	}
}


/*****************************************************************************
* function emule_CtrlF(str_frm, str_frm_clipBoard)
*	allows to simulate Ctrl+f and paste selected text 
*	
*****************************************************************************/
function emule_CtrlF(str_frm, str_frm_clipBoard){
	var page = window.frames[str_frm];
	page.focus();	
	
	try {
		win_search = new ActiveXObject("WScript.Shell");
		win_search.Sendkeys ("^{f}",1); // Ctrl+f
		ActiveXOK = true;
	}
	catch(e){
		ActiveXOK = false;
	}
	
	if (ActiveXOK) {
		eval("setTimeout(\"pasteSearchedText('"+ str_frm_clipBoard +"');\",win_search_TimeOut);");
	}
	else{
		window.open('ERROR_TRANS_Disabled_ActiveX.asp','Error','height=200,width=500,left=300,top=150,screenX=20,screenY=20,fullscreen=0,location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0');
	}
	
}


/*****************************************************************************
* function pasteSearchedText(str_frm)
*	allows to paste selected text into Ctrl+f window
*	
*****************************************************************************/
function pasteSearchedText(str_frm){
	if(str_frm != ""){
		copyToClipboard(str_frm);
		if (clipboardData.getData("Text") == null){
			return;
		}
		var str_ToSend = formatStringForSendKeys(clipboardData.getData("Text"));
		//win_search.Sendkeys (str_ToSend,1);
		win_search.Sendkeys("^{v}",1);
		win_search = null;
	}
	else{
		win_search.Sendkeys (" {LEFT}{DEL}",1);
	}	
}


/*****************************************************************************
* function pasteTextInNotepad(str_frm)
*	allows to paste selected text into NotePad
*	
*****************************************************************************/
function pasteTextInNotepad(str_frm, str_source){
	copyToClipboard(str_frm);
	
	if (clipboardData.getData("Text") == null){
		this.focus();
		alert(lang_EMPTY_CLIPBOARD + "\nSource: " + getQueryStringByName(str_source));
		return;
	}
		
	window.document.forms['Clipboard_Form'].ClipBoard.value = getQueryStringByName(str_source) + "\n" + clipboardData.getData("Text") + "\n\n";

	window.clipboardData.setData('Text', window.document.forms['Clipboard_Form'].ClipBoard.value);

	win_notePad.Sendkeys("^{v}",1);

	setTimeout("this.focus();",1000);
}


/*****************************************************************************
* function formatStringForSendKeys(aStr)
*	return string with formated special char :
*
*****************************************************************************/
function formatStringForSendKeys(aStr_formated){
	var arr_SpecialChar = new Array("{","}","[","]","(",")","%","+","~");
	var i=0;

	for (i=0 ; i < arr_SpecialChar.length ; i++){
		eval("var regExp_char"+i+" = new RegExp('["+arr_SpecialChar[i]+"]','g');");
		eval("aStr_formated = aStr_formated.replace(regExp_char"+i+",'{" + arr_SpecialChar[i] + "}');");
	}

	return aStr_formated;
}

function changefocus(){
  window.frames[topMenu].focus();
  //window.frames[topFrame].focus();
  //window.frames[botFrameL].focus();
  window.frames[botFrameR].focus();
}

function alignTrans(){
  setTimeout("alignScroll('botFrameL','botFrameR');",100);
}

