/*
 * Module pattern. Create single global variable PRINT exposed to document.
 * Create global singleton object by writing self executed method.
 */
var PRINT = (function() {// anonymous self executed method
	// -private variables-
	// array of constants
	var choose = {
		'DOCUMENT_CURRENT_TEXT' : 1,
		'DOCUMENT_CURRENT_REMARK' : 2,
		'DOCUMENT_CURRENT_SUBTITLES' : 3,
		'DOCUMENT_CURRENT_ABOUT' : 4,
		'DOCUMENT_RELATED_TEXT' : 5,
		'DOCUMENT_RELATED_REMARK' : 6,
		'DOCUMENT_RELATED_ABOUT' : 7,
		'DOCUMENT_HISTORY_CHANGES' : 8,
		'DOCUMENT_HISTORY_PREVIOUS' : 9,
		'LIST_SCREEN' : 10,
		'LIST_MARKED_ROWS' : 11,
		'SELECTED_TEXT' : 12
	}, template = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'
			+ '<html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'
			+ '<head><title> &#352;tampanje </title>'
			+ '<link href="http://'+ window.location.host + '/demo/documents/Old/print_preview.css" rel="stylesheet" type="text/css"/>'
			+ '</head><body>'
			+ '<div class="printPreviewModal">'
			+ '<a class="printPreviewModalOption" style="background: url(\'http://'
			+ window.location.host
			+ '/demo/documents/Old/print.png\') no-repeat 50%" title="&#352;tampaj" href="javascript:window.print();";></a>'
			+ '<a class="printPreviewModalOption" style="background: url(\'http://'
			+ window.location.host
			+ '/demo/documents/Old/close.png\') no-repeat 50%" title="Zatvori" href="javascript:window.close();";></a>'
			+ '</div>'
	// + '<div style="display:block; float:right;">'
	// + '<script type="text/javascript">'
	// + 'var currentTime = new Date();'
	// + 'var month = currentTime.getMonth() + 1;'
	// + 'var day = currentTime.getDate();'
	// + 'var year = currentTime.getFullYear();'
	// + 'document.write(day + "." + month + "." + year);'
	// + '</script>'
	// + '</div>';;
	, prepareTable = function(table, removeRows) {
		if (table) {
			var clone = table.cloneNode(true);
			// TODO this is not generic function, it is prepared for wpf list
			// tables

			// -prepare header-
			// find header row cells which always exists
			var hcells = clone.getElementsByTagName('th');
			// always remove first cell, checkbox column header
			hcells[0].parentNode.removeChild(hcells[0]);
			filterTable(hcells, 'class', /\biceDatTblResBor\b/);
			// for every header cell
			for ( var h = 0; h < hcells.length; ++h) {
				var textNode = '';
				// get cell value from subtable cell if exists
				var tds = hcells[h].getElementsByTagName('td');
				if (tds.length > 0) {
					textNode = tds[0].childNodes[0];
				} else {
					// get span element, always exists, TODO validate if
					// necessery
					textNode = hcells[h].getElementsByTagName('span')[0].childNodes[0];
				}
				hcells[h].replaceChild(textNode, hcells[h].childNodes[0]);
				hcells[h].className = 'wpfTblHdr';
			}

			// -prepare body-
			// get child tbody element of the clone
			var tbody = clone.childNodes[1];
			// get body rows
			var brows = tbody.childNodes;
			if (removeRows) { // remove not selected rows
				filterTable(brows, 'class', /\biceRowSel\b/);
			}
			for ( var i = 0; i < brows.length; ++i) {
				// get row cells
				var bcells = brows[i].childNodes;
				// always remove first cell, checkbox column cell
				brows[i].removeChild(bcells[0]);
				filterTable(bcells, 'class', /\biceDatTblBlkTd\b/);
				// for every row cell
				for ( var b = 0; b < hcells.length; ++b) {
					if (bcells[b].childNodes.length) {
					var textNode = '';
					// get img elements if exists
					var imgs = bcells[b].getElementsByTagName('img');
					if (imgs.length > 0) {
						// create text node from img alt attribute value
						textNode = document.createTextNode(imgs[0]
								.getAttribute('alt'));
					} else {
						// get span element
						var spans = bcells[b].getElementsByTagName('span');
						if (spans.length > 0) {
							textNode = spans[0].childNodes[0];
						}
					}
					bcells[b].replaceChild(textNode, bcells[b].childNodes[0]);
					bcells[b].className = 'wpfTblBdy';
				}
			}
			}
			return clone.innerHTML;
		}
		return "";
	}, filterTable = function(nodes, attribute, pattern) {
		for ( var i = 0; i < nodes.length; ++i) {
			if (nodes[i].hasAttribute(attribute)
					&& nodes[i].getAttribute(attribute).match(pattern)) {
				nodes[i].parentNode.removeChild(nodes[i]);
				filterTable(nodes, attribute, pattern);
				break;
			}
		}
	}, getSelectedTab = function() {
		var tbscnt = document.getElementById('mainForm:tabscnt');
		var tbs = tbscnt.childNodes;
		for ( var i = 0; i < tbs.length; ++i) {
			if (tbs[i].hasAttribute("class")
					&& tbs[i].getAttribute("class").match(/tabscntwpFdiv/)) {
				return i;
			}
		}
		return -1;
	}
	// -return-
	return {// anonymous object literal exposing privileged methods
		// -privileged methods-
		// method for getting constant value
		get : function(key) {
			// has access to private variables using closure principle
			return choose[key];
		},
		printPreview : function(key) {
			var html = template;
			switch (key) {
			case this.get('DOCUMENT_CURRENT_TEXT'):
				// html += WPFELEMENT.getContentWithPattern(WPFELEMENT
				// .get('IDS_CURRENT_DOCUMENT'), /wpfDocumentText/);
				var seltab = getSelectedTab();
				if (seltab == 0) {
					html += WPFELEMENT.getContentWithPattern(
							[ 'wpfCurrentDocument' ], /wpfDocumentText/);
				} else if (seltab == 1) {
					html += WPFELEMENT.getContentWithPattern([ 'wpfdevcur' ],
							/wpfdevtext/);
				}
				break;
			case this.get('DOCUMENT_CURRENT_REMARK'):
				html += '<b>NAPOMENA IZDAVA&#268;A</b><br/>'
						+ WPFELEMENT.getContentWithPattern(WPFELEMENT
								.get('IDS_CURRENT_DOCUMENT'), /wpfRemarkText/);
				break;
			case this.get('DOCUMENT_CURRENT_SUBTITLES'):
				html += '<b>PODNASLOVI</b>: '
						+ WPFELEMENT.getContent(
								WPFELEMENT.get('IDS_CURRENT_DOCUMENT_TITLE'))
								.split('Izabrani dokument:')[1]
						+ WPFELEMENT.getContent(WPFELEMENT
								.get('IDS_CURRENT_SUBTITLES'));
				break;
			case this.get('DOCUMENT_CURRENT_ABOUT'):
				html += WPFELEMENT.getContent(WPFELEMENT
						.get('IDS_CURRENT_ABOUT'));
				break;
			case this.get('DOCUMENT_RELATED_TEXT'):
				html += WPFELEMENT.getContentWithPattern(WPFELEMENT
						.get('IDS_RELATED_DOCUMENT'), /wpfDocumentText/);
				break;
			case this.get('DOCUMENT_RELATED_REMARK'):
				html += WPFELEMENT.getContentWithPattern(WPFELEMENT
						.get('IDS_RELATED_DOCUMENT'), /wpfRemarkText/);
				break;
			case this.get('DOCUMENT_RELATED_ABOUT'):
				html += WPFELEMENT.getContent(WPFELEMENT
						.get('IDS_RELATED_ABOUT'));
				break;
			case this.get('DOCUMENT_HISTORY_CHANGES'):
				html += WPFELEMENT.getContentWithPattern(WPFELEMENT
						.get('IDS_HISTORY_CHANGES'), /wpfdevtext/);
				break;
			case this.get('DOCUMENT_HISTORY_PREVIOUS'):
				html += WPFELEMENT.getContentWithPattern(WPFELEMENT
						.get('IDS_HISTORY_PREVIOUS'), /wpfdevtext/);
				break;
			case this.get('LIST_SCREEN'):
				html += '<table class="wpfTbl">'
						+ prepareTable(WPFELEMENT
								.getElementById('mainForm:dataTable'), false)
						+ '</table>';
				break;
			case this.get('LIST_MARKED_ROWS'):
				html += '<table class="wpfTbl">'
						+ prepareTable(WPFELEMENT
								.getElementById('mainForm:dataTable'), true)
						+ '</table>';
				break;
			case this.get('SELECTED_TEXT'):
				var selectedHtml = WPFELEMENT.getSelectedHtml();
				if (selectedHtml != '') {
					// var temp = document.createElement('div');
					// temp.appendChild(selectedHtml);
					html += selectedHtml;
				} else {
					alert(document.getElementById('mainForm:hidNotifications').innerHTML
							.split(";")[7]);
					return;
				}
				break;
			default:
			}
			html += '</body></html>';
			var preview = window.open();
			preview.document.write(html);
			preview.document.close();
		}
	};
})();// calling anonymous method

/*
 * Module pattern. Create single global variable COPY exposed to document.
 * Create global singleton object by writing self executed method.
 */
var COPY = (function() {// anonymous self executed method
	// -private variables-
	// array of constants
	var choose = {
		'DOCUMENT_CURRENT_TEXT' : 1,
		'DOCUMENT_CURRENT_REMARK' : 2,
		'DOCUMENT_CURRENT_SUBTITLES' : 3,
		'DOCUMENT_CURRENT_ABOUT' : 4,
		'DOCUMENT_RELATED_TEXT' : 5,
		'DOCUMENT_RELATED_REMARK' : 6,
		'DOCUMENT_RELATED_ABOUT' : 7,
		'DOCUMENT_HISTORY_CHANGES' : 8,
		'DOCUMENT_HISTORY_PREVIOUS' : 9,
		'LIST_SCREEN' : 10,
		'LIST_MARKED_ROWS' : 11,
		'SELECTED_TEXT' : 12
	}, domain = 'http://' + window.location.host + '/'
			+ window.location.pathname.split('/')[1], template = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'
			+ '<html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'
			+ '<head><title> Kopiranje </title>'
			+ '<link href="http://' + window.location.host + '/demo/documents/Old/print_preview.css" rel="stylesheet" type="text/css"/>'
			+ '<script src="'
			+ domain
			+ '/resources/scripts/copyDivContent.js" type="text/javascript"></script>'
			+ '<script src="'
			+ domain
			+ '/resources/scripts/jquery-1.4.4.min.js" type="text/javascript"></script>'
			+ '<script src="'
			+ domain
			+ '/resources/scripts/jquery.cookie.js" type="text/javascript"></script>'
			+ '</head><body onload="WPFELEMENT.select(document.getElementById(\'wpftbl\'));COPY.showCpDlg();">'
			+ '<div class="printPreviewModal">'
			+ '<a class="printPreviewModalOption" style="background: url(\'http://'
			+ window.location.host
			+ '/demo/documents/Old/close.png\') no-repeat 50%" title="Zatvori" href="javascript:window.close();";></a>'
			+ '</div>', cpdlg = '<div id="wpfovrl" onclick="return false;"></div>'
			+ '<table id="wpfmdl" cellspacing="0">'
			+ '<tr onclick="return false;"><td id="wpfmdlh"><span>Obave&#353;tenje</span><input id="wpfcls" type="image" onclick="COPY.closeCpDlg();" src="/resources/css/xp/css-images/close.gif"/></td></tr>'
			+ '<tr onclick="return true;"><td id="wpfmdlc">Za kopiranje ozna&#269;enog teksta pritisnite Ctrl+C</td></tr>'
			+ '<tr onclick=""><td id="wpfmdlf"><input id="wpfmdlchk" type="checkbox"/><span>Ne prikazuj ovu poruku</span></td></tr>'
			+ '<tr><td id="wpfmdlbtn"><input value="U redu" type="button" onclick="COPY.closeCpDlg();"/></td></tr></table>', prepareTable = function(
			table, removeRows) {
		if (table) {
			var clone = table.cloneNode(true);
			// TODO this is not generic function, it is prepared for wpf list
			// tables

			// -prepare header-
			// find header row cells which always exists
			var hcells = clone.getElementsByTagName('th');
			// always remove first cell, checkbox column header
			hcells[0].parentNode.removeChild(hcells[0]);
			filterTable(hcells, 'class', /\biceDatTblResBor\b/);
			// for every header cell
			for ( var h = 0; h < hcells.length; ++h) {
				var textNode = '';
				// get cell value from subtable cell if exists
				var tds = hcells[h].getElementsByTagName('td');
				if (tds.length > 0) {
					textNode = tds[0].childNodes[0];
				} else {
					// get span element, always exists, TODO validate if
					// necessery
					textNode = hcells[h].getElementsByTagName('span')[0].childNodes[0];
				}
				hcells[h].replaceChild(textNode, hcells[h].childNodes[0]);
				hcells[h].className = 'wpfTblHdr';
			}

			// -prepare body-
			// get child tbody element of the clone
			var tbody = clone.childNodes[1];
			// get body rows
			var brows = tbody.childNodes;
			if (removeRows) { // remove not selected rows
				filterTable(brows, 'class', /\biceRowSel\b/);
			}
			// for every body row
			for ( var i = 0; i < brows.length; ++i) {
				// get row cells
				var bcells = brows[i].childNodes;
				// always remove first cell, checkbox column cell
				brows[i].removeChild(bcells[0]);
				filterTable(bcells, 'class', /\biceDatTblBlkTd\b/);
				// for every row cell
				for ( var b = 0; b < hcells.length; ++b) {
					if (bcells[b].childNodes.length){
					var textNode = '';
					// get img elements if exists
					var imgs = bcells[b].getElementsByTagName('img');
					if (imgs.length > 0) {
						// create text node from img alt attribute value
						textNode = document.createTextNode(imgs[0]
								.getAttribute('alt'));
					} else {
						// get span element
						var spans = bcells[b].getElementsByTagName('span');
						if (spans.length > 0) {
							textNode = spans[0].childNodes[0];
						}
					}
					bcells[b].replaceChild(textNode, bcells[b].childNodes[0]);
					bcells[b].className = 'wpfTblBdy';
				}
			}
			}
			return clone.innerHTML;
		}
		return "";
	}, filterTable = function(nodes, attribute, pattern) {
		for ( var i = 0; i < nodes.length; ++i) {
			if (nodes[i].hasAttribute(attribute)
					&& nodes[i].getAttribute(attribute).match(pattern)) {
				nodes[i].parentNode.removeChild(nodes[i]);
				filterTable(nodes, attribute, pattern);
				break;
			}
		}
	}, getSelectedTab = function() {
		var tbscnt = document.getElementById('mainForm:tabscnt');
		var tbs = tbscnt.childNodes;
		for ( var i = 0; i < tbs.length; ++i) {
			if (tbs[i].hasAttribute("class")
					&& tbs[i].getAttribute("class").match(/tabscntwpFdiv/)) {
				return i;
			}
		}
		return -1;
	};
	// -return-
	return {// anonymous object literal exposing privileged methods
		// -privileged methods-
		// method for getting constant value
		get : function(key) {
			// has access to private variables using closure principle
			return choose[key];
		},
		showCpDlg : function() {
			// show dialog?
			if (!jQuery.cookie('wpfmdlchk')) {
				var rng = WPFELEMENT.getRangeObject(WPFELEMENT
						.getSelectionObject());
				if (rng.createContextualFragment) { // all browsers, except IE
					// chrome will not work with empty range!!!
					var docFrg = rng.createContextualFragment(cpdlg);
					document.body
							.insertBefore(docFrg, document.body.firstChild);
				} else { // IE
					document.body.insertAdjacentHTML("afterBegin", cpdlg);
				}
			}
		},
		closeCpDlg : function() {
			// check checkbox
			var checked = document.getElementById('wpfmdlchk').checked;
			if (checked) {
				jQuery.cookie('wpfmdlchk', 'chked');
			}
			// remove overlay
			document.body.removeChild(document.getElementById('wpfovrl'));
			document.body.removeChild(document.getElementById('wpfmdl'));
		},
		copy : function(key) {
			var html = template;
			switch (key) {
			case this.get('DOCUMENT_CURRENT_TEXT'):
				// html += WPFELEMENT.getContentWithPattern(WPFELEMENT
				// .get('IDS_CURRENT_DOCUMENT'), /wpfDocumentText/);
				var seltab = getSelectedTab();
				if (seltab == 0) {
					var cnt = document.getElementById('wpfCurrentDocument');
					WPFELEMENT.select(WPFELEMENT.getElementByClassName(
							/wpfDocumentText/, 'div', cnt));
				} else if (seltab == 1) {
					var cnt = document.getElementById('wpfdevcur');
					WPFELEMENT.select(WPFELEMENT.getElementByClassName(
							'wpfdevtext', 'div', cnt));
				} else if (seltab == 2) {
					WPFELEMENT.select(WPFELEMENT.getElement([
							'aboutDocumentContent',
							'dAboutDocumentCurrentContent' ]));
				}
				this.showCpDlg();
				return;
			case this.get('DOCUMENT_CURRENT_REMARK'):
				// html += WPFELEMENT.getContentWithPattern(WPFELEMENT
				// .get('IDS_CURRENT_DOCUMENT'), /wpfRemarkText/);
				var cnt = document.getElementById('wpfCurrentDocument');
				WPFELEMENT.select(WPFELEMENT.getElementByClassName(
						/wpfRemarkText/, 'div', cnt));
				this.showCpDlg();
				return;
			case this.get('DOCUMENT_CURRENT_SUBTITLES'):
				// html += WPFELEMENT.getContent(WPFELEMENT
				// .get('IDS_CURRENT_SUBTITLES'));
				WPFELEMENT.select(document.getElementById('dDocumentTitles'));
				this.showCpDlg();
				return;
			case this.get('DOCUMENT_CURRENT_ABOUT'):
				break;
			case this.get('DOCUMENT_RELATED_TEXT'):
				break;
			case this.get('DOCUMENT_RELATED_REMARK'):
				break;
			case this.get('DOCUMENT_RELATED_ABOUT'):
				break;
			case this.get('DOCUMENT_HISTORY_CHANGES'):
				// html += WPFELEMENT.getContentWithPattern(WPFELEMENT
				// .get('IDS_HISTORY_CHANGES'), /wpfdevtext/);
				var cnt = document.getElementById('wpfdevchg');
				WPFELEMENT.select(WPFELEMENT.getElementByClassName(
						'wpfdevtext', 'div', cnt));
				this.showCpDlg();
				return;
			case this.get('DOCUMENT_HISTORY_PREVIOUS'):
				// html += WPFELEMENT.getContentWithPattern(WPFELEMENT
				// .get('IDS_HISTORY_PREVIOUS'), /wpfdevtext/);
				var cnt = document.getElementById('wpfdevprev');
				WPFELEMENT.select(WPFELEMENT.getElementByClassName(
						'wpfdevtext', 'div', cnt));
				this.showCpDlg();
				return;
			case this.get('LIST_SCREEN'):
				html += '<table id="wpftbl" class="wpfTbl">'
						+ prepareTable(WPFELEMENT
								.getElementById('mainForm:dataTable'), false)
						+ '</table>';
				break;
			case this.get('LIST_MARKED_ROWS'):
				html += '<table id="wpftbl" class="wpfTbl">'
						+ prepareTable(WPFELEMENT
								.getElementById('mainForm:dataTable'), true)
						+ '</table>';
				break;
			case this.get('SELECTED_TEXT'):
				var selectedHtml = WPFELEMENT.getSelectedHtml();
				if (selectedHtml != '') {
					// var temp = document.createElement('div');
					// temp.appendChild(selectedHtml);
					// html += selectedHtml;
				} else {
					alert(document.getElementById('mainForm:hidNotifications').innerHTML
							.split(";")[7]);
					return;
				}
				this.showCpDlg();
				return;
			default:
			}
			html += '</body></html>';
			var preview = window.open();
			preview.document.write(html);
			preview.document.close();
		}
	};
})();// calling anonymous method
/*
 * Module pattern. Create single global variable WPFELEMENT exposed to document.
 * Create global singleton object by writing self executed method.
 */

var WPFELEMENT = (function() {// anonymous self executed method
	// -private variables-
	// array of constants
	var private = {
		// TODO move this to print and copy
		'IDS_CURRENT_DOCUMENT' : [ "wpfCurrentDocument", "wpfdevcur",
				"aboutDocumentContent", "dAboutDocumentCurrentContent", ],
		'IDS_CURRENT_SUBTITLES' : [ "dDocumentTitles" ],
		'IDS_CURRENT_ABOUT' : [ "aboutDocumentContent",
				"dAboutDocumentCurrentContent" ],
		'IDS_RELATED_DOCUMENT' : [ "wpfRelatedDocument" ],
		'IDS_RELATED_ABOUT' : [ "dAboutDocumentRelatedContent" ],
		'IDS_HISTORY_CHANGES' : [ "wpfdevchg" ],
		'IDS_HISTORY_PREVIOUS' : [ "wpfdevprev" ],
		'IDS_LIST' : [ "listInTable" ],
		'IDS_CURRENT_DOCUMENT_TITLE' : [ "mainForm:otCurrentDocTitleM",
				"mainForm:otCurrentDocTitle" ],
		'ID_RIGHT_TABS' : ''
	},
	// last referenced element
	element = null
	// -private methods-
	// method for checking if element exists, if does stores it to div variable
	, elementExists = function(elementId) {
		return (element = (document.getElementById(elementId))) ? true : false;
	};
	// -return-
	return {// anonymous object literal exposing privileged methods
		// -privileged methods-
		// method for getting element by constant values
		getElement : function(ids) {
			for ( var i = 0; i < ids.length; ++i) {
				// has access to private methods using closure principle
				if (elementExists(ids[i])) {
					// has access to private variables using closure principle
					return element;
				}
			}
			return null;
		},
		getElementById : function(id) {
			return document.getElementById(id);
		},
		getElementByClassName : function(clsnm, tagnm, cnt) {
			if (!cnt || cnt.nodeType != 1) {// if cnt is undefined, empty
				// string, null or not element node
				cnt = document;
			}
			if (!tagnm) {// if tagnm is undefined, empty string or null
				tagnm = 'div';
			}
			var nods = cnt.getElementsByTagName(tagnm);
			for ( var i = 0; i < nods.length; ++i) {
				if (nods[i].hasAttribute("class")
						&& nods[i].getAttribute("class").match(clsnm)) {
					return nods[i];
				}
			}
			return null;
		},
		// method for getting element content by constant values
		getContent : function(ids) {
			if (this.getElement(ids)) {// 'this' refers to anonymous object
				// being
				// returned
				return element.innerHTML;
			}
			return "";
		},
		// method for getting element content by constant values and matching
		// pattern
		getContentWithPattern : function(ids, pattern) {
			if (this.getElement(ids)) {// 'this' refers to anonymous object
				// being
				// returned
				var nod = this.getElementByClassName(pattern, 'div', element);
				return (nod == null) ? element.innerHTML : nod.innerHTML;
				// var divs = element.getElementsByTagName("div");
				// for ( var i = 0; i < divs.length; ++i) {
				// if (divs[i].hasAttribute("class")
				// && divs[i].getAttribute("class").match(pattern)) {
				// return divs[i].innerHTML;
				// }
				// }
			}
			return '';
		},
		// method for getting element content by element id
		getContentById : function(id) {
			if (elementExists(id)) {
				return element.innerHTML;
			}
			return "";
		},
		getSelectedHtml : function() {
			var selectionObject = this.getSelectionObject();
			if (selectionObject) {
				if (window.getSelection) {
					// Mozilla
					return new XMLSerializer().serializeToString(this
							.getRangeObject(selectionObject).cloneContents());
				} else if (document.selection) { // should come last; Opera!
					// Microsoft
					return this.getRangeObject(selectionObject).htmlText;
				}
			}
			return '';
		},
		getSelectionObject : function() {
			if (window.getSelection) {
				// Mozilla Selection object contains selected text
				return window.getSelection();
			} else if (document.selection) { // should come last; Opera!
				// Microsoft Text Range object
				return document.selection;
			}
			return null;
		},
		getRangeObject : function(selectionObject) {
			if (selectionObject.getRangeAt) { // Mozzila
				if (selectionObject.rangeCount > 0) {
					return selectionObject.getRangeAt(0);
				} else {
					return document.createRange();
				}
			} else if (document.selection) { // Microsoft IE < 9
				// Microsoft Text Range object
				return selectionObject.createRange();
			} else { // Safari!
				var range = document.createRange();
				range.setStart(selectionObject.anchorNode,
						selectionObject.anchorOffset);
				range.setEnd(selectionObject.focusNode,
						selectionObject.focusOffset);
				return range;
			}
		},
		select : function(element) {
			var selobj = this.getSelectionObject();
			var rng = this.getRangeObject(selobj);
			if (window.getSelection) {
				rng.selectNode(element);
				selobj.removeAllRanges();
				selobj.addRange(rng);
			} else if (document.selection) {
				rng.moveToElementText(element);
				rng.select();
			}
		},
		// method for getting constant values
		get : function(key) {
			// has access to private variables using closure principle
			return private[key];
		}
	};
})();// calling anonymous method

function insertWarningNote() {
	jQuery('#hiddenCopyContainerOthersAppendedTo')
			.append(
					'<p>Obave�tenje: Molimo vas da otvorite dokument koji �elite da �tapmate</p>');
};

function cloneForPrint(url, containerid, synchronous) {
	removeClonedContent();
	var selectorMain = "#" + containerid;
	if (selectorMain != "#") {
		jQuery(selectorMain).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	} else {
		var someElement = "printContent";
		var selectorMain = "#" + someElement;
		var newdiv = document.createElement('div');
		var id = someElement;
		newdiv.setAttribute('id', id);
		jQuery('#hiddenCopyContainerOthersAppendedTo').append(newdiv);
		loadajaxpageForPrintExtended(url, someElement, "false");
	}
}

function launchNotification() {
	if (jQuery.browser.msie) {
		var OLECMDID = 7;
		/*
		 * OLECMDID values: 6 - print 7 - print preview 1 - open window 4 - Save
		 * As
		 */
		var PROMPT = 1; // 2 DONTPROMPTUSER
		try {
			var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
			document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
			WebBrowser1.ExecWB(OLECMDID, PROMPT);
			WebBrowser1.outerHTML = "";
		} catch (e) {
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[6]);
		}
	} else {
		/*
		 * alert('Molimo Vas da koristite ugra�enu Print Preview funkcionalnost
		 * Va�eg browsera');
		 */
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[1]);
	}
}

function doPrint() {
	window.print();
}

function removeClonedContent() {
	jQuery('#hiddenCopyContainerOthersAppendedTo').empty();
}

function getSelectedText() {
	if (window.getSelection) {
		return window.getSelection();
	} else if (document.selection) {
		return document.selection.createRange().htmlText;
	}
	return '';
}

function cloneSelectedText() {
	removeClonedContent();
	restoreSelection(myRange);
	if (window.getSelection) {
		if (myRange != null)
			jQuery('#hiddenCopyContainerOthersAppendedTo').append(
					myRange.cloneContents());
		else
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[7]);
	} else if (document.selection) {
		if (document.selection.type != "None")
			jQuery('#hiddenCopyContainerOthersAppendedTo').html(
					document.selection.createRange().htmlText);
		else
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[7]);
	}
};

var myRange = null;

function saveSelection() {
	if (window.getSelection) {
		sel = window.getSelection();
		if (sel.getRangeAt && sel.rangeCount && sel.getRangeAt(0) != "") {
			return sel.getRangeAt(0);
		}
	} else if (document.selection && document.selection.createRange
			&& document.selection.type != "None") {
		var range = document.selection.createRange();
		if (range.getBookmark && range.text != "") { // Internet Explorer
			return range.getBookmark();
		}

	}
	return null;
}

function restoreSelection(range) {
	if (range) {
		if (window.getSelection) {
			sel = window.getSelection();
			sel.removeAllRanges();
			sel.addRange(range);
		} else { // Internet Explorer
			rangeObj = document.body.createTextRange();
			rangeObj.moveToBookmark(range);
			rangeObj.select();
		}
		// jQuery('#mainForm\\:fakeButton').click();
	}
}

function restorePageSelection(range) {
	if (range) {
		if (window.getSelection) {
			sel = window.getSelection();
			sel.removeAllRanges();
			sel.addRange(range);
		} else {
			rangeObj = document.body.createTextRange();
			rangeObj.moveToBookmark(range);
			rangeObj.select();
		}
	}
}

function savePageSelection() {
	if (!jQuery.browser.opera) {
		myRange = saveSelection();
		storeSelectionInCoockie();
	}
}

function savePageSelectionOnMouseUp() {
	myRange = saveSelection();
	storeSelectionInCoockie();
}

function enableMenuItemPrintSelection() {
	if (saveSelection() != null)
		textSelectionPartialUpdate();
}

function sendtextSelectionStatus() {
	if (!jQuery('#printingPopup').is(':empty'))
		textSelectionPartialUpdate();
}

function setFocusOnPrintPreviewButton() {
	var event = new jQuery.Event('prntprewbtnfoc');
	jQuery(document).trigger('prntprewbtnfoc');
}

jQuery(document).bind('prntprewbtnfoc', function() {
	if (jQuery.browser.mozilla || jQuery.browser.opera) {
		if (jQuery('#printingPopup').is(':empty')) {
			var event = new jQuery.Event('prntprewbtnfoc');
			jQuery(document).trigger('prntprewbtnfoc');
		} else
			document.getElementById('mainForm:prntPrwBtn').focus();
	}
});

jQuery(document).bind('restoresel', function() {
	restoreSelection(myRange);
	if (myRange == "") {
		restoreSelectionFromCoockie();
		setFocusOnPrintPreviewButton();
	}
});

jQuery(document).bind('restoreselinner', function() {
	restoreSelection(myRange);
});

jQuery(document.body).bind('blur', function() {
	alert('body blur');
});

function sendEventForSelectionRestore() {
	var event = new jQuery.Event('restoresel');
	parent.jQuery(parent.document).trigger('restoresel');
}

function sendEventForSelectionRestoreInsideTheSameFrame() {
	var event = new jQuery.Event('restoreselinner');
	jQuery(document).trigger('restoreselinner');
}

// window.onload = restoreSelectionFromCoockie;

function onEndTransition() {
	/* if(jQuery('#iceModalFramemainForm\\:printingPopUpIFrame').length > 0) */
	jQuery(document)
			.bind(
					'click',
					function() {
						document.getElementById("mainForm:hidElemTxtSel").value = false;
						iceSubmitPartial(
								document.getElementById("mainForm"),
								document
										.getElementById("mainForm:hidElemTxtSel"));
						jQuery(document).unbind('click');
					});
}

function clearSelection() {
	myRange = null;
}

function clickOnFakeButton() {
	jQuery('#mainForm\\:fakeButton').click();
}

// scripts from
// http://home.arcor.de/martin.honnen/javascript/storingSelection1.html
function setCookie(cookieName, cookieValue, expires, path, domain, secure) {
	document.cookie = escape(cookieName) + '=' + escape(cookieValue)
			+ (expires ? '; EXPIRES=' + expires.toGMTString() : '')
			+ (path ? '; PATH=' + path : '')
			+ (domain ? '; DOMAIN=' + domain : '') + (secure ? '; SECURE' : '');
}

function getCookie(cookieName) {
	var cookieValue = null;
	var posName = document.cookie.indexOf(escape(cookieName) + '=');
	if (posName != -1) {
		var posValue = posName + (escape(cookieName) + '=').length;
		var endPos = document.cookie.indexOf(';', posValue);
		if (endPos != -1)
			cookieValue = unescape(document.cookie.substring(posValue, endPos));
		else
			cookieValue = unescape(document.cookie.substring(posValue));
	}
	return cookieValue;
}

function makeXPath(node, currentPath) {
	/*
	 * this should suffice in HTML documents for selectable nodes, XML with
	 * namespaces needs more code
	 */
	currentPath = currentPath || '';
	switch (node.nodeType) {
	case 3:
	case 4:
		return makeXPath(node.parentNode,
				'text()['
						+ (document.evaluate('preceding-sibling::text()', node,
								null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
								null).snapshotLength + 1) + ']');
	case 1:
		return makeXPath(node.parentNode, node.nodeName
				+ '['
				+ (document.evaluate('preceding-sibling::' + node.nodeName,
						node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
						null).snapshotLength + 1) + ']'
				+ (currentPath ? '/' + currentPath : ''));
	case 9:
		return '/' + currentPath;
	default:
		return '';
	}
}

function storeSelectionInCoockie() {
	if (typeof window.getSelection != 'undefined') {
		var selection = window.getSelection();
		if (sel.rangeCount) {
			var range = selection.getRangeAt(0);
			if (range != null) {
				setCookie('sel', makeXPath(range.startContainer) + '|'
						+ range.startOffset + '|'
						+ makeXPath(range.endContainer) + '|' + range.endOffset);
			}
		}
	}
}

function restoreSelectionFromCoockie() {
	var selectionDetails = getCookie('sel');
	if (selectionDetails != null) {
		selectionDetails = selectionDetails.split(/\|/g);
		if (typeof window.getSelection != 'undefined') {
			var selection = window.getSelection();
			if (myRange == null)
				myRange = document.createRange();
			selection.removeAllRanges();
			myRange
					.setStart(
							document.evaluate(selectionDetails[0], document,
									null, XPathResult.FIRST_ORDERED_NODE_TYPE,
									null).singleNodeValue,
							Number(selectionDetails[1]));
			myRange
					.setEnd(
							document.evaluate(selectionDetails[2], document,
									null, XPathResult.FIRST_ORDERED_NODE_TYPE,
									null).singleNodeValue,
							Number(selectionDetails[3]));
			selection.addRange(myRange);
			jQuery('#mainForm\\:fakeButton').click();
		}
	}

	/*
	 * var selectionDetails = getCookie('sel'); if (selectionDetails != null) {
	 * selectionDetails = selectionDetails.split(/\|/g); if (typeof
	 * window.getSelection != 'undefined') { var selection =
	 * window.getSelection(); selection.removeAllRanges(); var range =
	 * document.createRange();
	 * range.setStart(document.evaluate(selectionDetails[0], document, null,
	 * XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue,
	 * Number(selectionDetails[1]));
	 * range.setEnd(document.evaluate(selectionDetails[2], document, null,
	 * XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue,
	 * Number(selectionDetails[3])); selection.addRange(range); } }
	 */
}
// end scripts from

function uponBlurOrChangeNonIE() {
	if (!jQuery.browser.msie)
		jQuery('#mainForm\\:fakeButton').click();
}

function removePageSelectionOnMouseDown() {
	if (window.getSelection) {
		window.getSelection().removeAllRanges();
		textSelectionPartialUpdate();
	} else { // Internet Explorer
		document.selection.empty();
		textSelectionPartialUpdate();
	}
	// jQuery('#mainForm\\:fakeButton').click();
	myRange = null;
	textSelectionPartialUpdate();
}

function printAboutDocumentInfo(url, containerid, synchronous, username, pass) {
	removeClonedContent();

	var aboutSelector = "#" + aboutDocContainer();
	var aboutSelectorFirst = aboutSelector + ":" + "first";
	if (aboutSelector != "#") {// TODO never enters here because printing is
		// enabled only from document text tab
		jQuery(aboutSelector).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
		var htmlStr = jQuery(aboutSelectorFirst).html();
		try {
			jQuery('#hiddenCopyContainerOthersAppendedTo').html(htmlStr);
		} catch (error) {
		}
	} else {
		if (jQuery.browser.msie)
			loadajaxpageFodDocAboutInfoPrint(url, containerid, "false",
					username, pass);
		else
			loadajaxpageFodDocAboutInfoPrint(url, containerid, synchronous,
					username, pass);
	}
}

function bindToCaptureSelectAll(containerid) {
	/*
	 * makeUnselectable(document.getElementById("content"));
	 * makeUnselectable(document.getElementById("footer"));
	 */

	/*
	 * var selectorMain = "#" + mainDocContainer(); if(selectorMain != null)
	 * makeSelectable(document.getElementById("selectorMain"));
	 */
	if (containerid == mainDocContainer()) {
		var selectorMain = "#" + mainDocContainer();
		jQuery(selectorMain)
				.bind(
						'keydown',
						function(objEvent) {
							if (objEvent.ctrlKey) {
								if (objEvent.keyCode == 65
										|| objEvent.keyCode == 97) {
									setTimeout(
											"sendeventToEnableDocumenttextToBeSelectedOnly()",
											1000);
								}
							}
						});
	}

	if (containerid == aboutDocContainer()) {
		var selectorMain = "#" + aboutDocContainer();
		jQuery(selectorMain).bind(
				'keydown',
				function(objEvent) {
					if (objEvent.ctrlKey) {
						if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {
							setTimeout(
									"sendeventToEnableAboutToBeSelectedOnly()",
									1000);
						}
					}
				});
	}

	if (containerid == relatedDocContainer()) {
		selectorMain = "#" + relatedDocContainer();
		jQuery(selectorMain)
				.bind(
						'keydown',
						function(objEvent) {
							if (objEvent.ctrlKey) {
								if (objEvent.keyCode == 65
										|| objEvent.keyCode == 97) {
									setTimeout(
											"sendeventToEnableRelatedToBeSelectedOnly()",
											1000);
								}
							}
						});
	}
}

function makeUnselectable(node) {
	if (node != null) {
		if (node.nodeType == 1) {
			node.unselectable = true;
		}
		var child = node.firstChild;
		while (child) {
			makeUnselectable(child);
			child = child.nextSibling;
		}
	}
}

function makeSelectable(node) {
	if (node != null) {
		if (node.nodeType == 1) {
			node.unselectable = false;
		}
		var child = node.firstChild;
		while (child) {
			makeSelectable(child);
			child = child.nextSibling;
		}
	}
}

function sendeventToEnableDocumenttextToBeSelectedOnly() {
	var event = new jQuery.Event('deselectall');
	jQuery(document).trigger('deselectall');
}

jQuery(document).bind('deselectall', function() {

	setTextDocumentToBeSelectedOnly(mainDocContainer());
});

function sendeventToEnableAboutToBeSelectedOnly() {
	var event = new jQuery.Event('selectabout');
	jQuery(document).trigger('selectabout');
}

jQuery(document).bind('selectabout', function() {
	setTextDocumentToBeSelectedOnly(aboutDocContainer());
});

function sendeventToEnableRelatedToBeSelectedOnly() {

	var event = new jQuery.Event('selectrelated');
	jQuery(document).trigger('selectrelated');
}

jQuery(document).bind('selectrelated', function() {
	setTextDocumentToBeSelectedOnly(relatedDocContainer());
});

function setTextDocumentToBeSelectedOnly(container) {

	if (window.getSelection) {
		window.getSelection().removeAllRanges();
		textSelectionPartialUpdate();
	} else { // Internet Explorer
		document.selection.empty();
		textSelectionPartialUpdate();
	}

	if (window.getSelection) {
		var range = document.createRange();
		if (container != null)
			range.selectNode(document.getElementById(container));
		window.getSelection().addRange(range);
	}

	else if (document.selection) {
		var range = document.body.createTextRange();
		if (container != null)
			range.moveToElementText(document.getElementById(container));
		range.select();
	}
}

/*
 * function appendInfoToBePrinted(){ removeClonedContent(); if
 * (jQuery('#aboutDocumentContent:first').length > 0){
 * jQuery('#aboutDocumentContent').clone().appendTo('#hiddenCopyContainerOthersAppendedTo');
 * var htmlStr = jQuery('#aboutDocumentContent:first').html(); try{
 * jQuery('#hiddenCopyContainerOthersAppendedTo').html(htmlStr); }
 * catch(error){} } else{
 * jQuery('#hiddenCopyContainerOthersAppendedTo').load(url); } }
 */

function checkobject(obj) {
	if (document.getElementById(obj)) {
		return true;
	} else {
		return false;
	}
}
// 3in1
// function mainDocContainer() {
// if (checkobject('staticContent'))
// return "staticContent";
// else if (checkobject('southpb'))
// return "southpb";
// else if (checkobject('dCurrentDocContent'))
// return "dCurrentDocContent";
// return "";
// }
function mainDocContainer() {
	if (checkobject('wpfCurrentDocument'))
		return "staticContent";
	else if (checkobject('wpfdevcur'))
		return "wpfdevcur";
	return "";
}
//
function aboutDocContainer() {
	if (checkobject('aboutDocumentContent'))
		return "aboutDocumentContent";
	else if (checkobject('dAboutDocumentCurrentContent'))
		return "dAboutDocumentCurrentContent";
	return "";
}

function relatedDocContainer() {
	if (checkobject('dRelatedDocContent'))
		return "dRelatedDocContent";
	return "";
}
// 3in1
// function changesContainer() {
// if (checkobject('rightpb'))
// return "rightpb";
// return "";
// }
// TODO wpfdevchg is wrapper over div with old leftpb id (rightpb is now unique
// and is not known)
function changesContainer() {
	if (checkobject('wpfdevchg'))
		return "wpfdevchg";
	return "";
}
//
// 3in1
// function prevVersionContainer() {
// if (checkobject('leftpb'))
// return "leftpb";
// return "";
// }
// TODO wpfdevprev is wrapper over div with old leftpb id (leftpb is now unique
// and is not known)
function prevVersionContainer() {
	if (checkobject('wpfdevprev'))
		return "wpfdevprev";
	return "";
}
//

function listExistsWarning() {
	alert(document.getElementById('mainForm:hidNotifications').innerHTML
			.split(";")[3]);
}

function noDocumentSelectedWarning() {
	alert(document.getElementById('mainForm:hidNotifications').innerHTML
			.split(";")[4]);
}

function openRelatedFromContextMenu() {
	alert(document.getElementById('mainForm:hidNotifications').innerHTML
			.split(";")[8]);
}

function noMyListSelectedWarning() {
	alert(document.getElementById('mainForm:hidNotifications').innerHTML
			.split(";")[5]);
}

function insertAfter(containerId, counter) {
	var returnValue = "theEnd";
	for (i = 0; i < document.getElementById(containerId).getElementsByTagName(
			"a").length; i++) {
		var str = document.getElementById(containerId)
				.getElementsByTagName("a")[i].innerHTML;
		if (str.indexOf("Slede") != -1) {
			var newdiv = document.createElement('div');
			var id = "wpfPrnteDiv" + counter;
			newdiv.setAttribute('id', id);
			var selectorNext = "#" + newdiv.id;
			jQuery('#hiddenCopyContainerOthersAppendedTo').append(newdiv);
			/* jQuery(newdiv.id).appendTo('#hiddenCopyContainerOthersAppendedTo'); */
			loadajaxpageForPrintExtended(document.getElementById(containerId)
					.getElementsByTagName("a")[i].href, newdiv.id, "false");
			counter++;
			/* recursiveInsertBefore(newdiv.id); */
			returnValue = newdiv.id;
			break;
		}
	}
	return returnValue;

}

function insertBefore(containerId, counter) {
	var returnValue = "theEnd";
	for (wpfbackVar = 0; wpfbackVar < document.getElementById(containerId)
			.getElementsByTagName("a").length; wpfbackVar++) {
		var str = document.getElementById(containerId)
				.getElementsByTagName("a")[wpfbackVar].innerHTML;
		if (str.indexOf("Prethodni") != -1) {
			var newdiv = document.createElement('div');
			var id = "wpfPrnteDiv" + counter;
			newdiv.setAttribute('id', id);
			var selectorNext = "#" + newdiv.id;
			jQuery('#hiddenCopyContainerOthersAppendedTo').prepend(newdiv);
			/* jQuery(newdiv.id).appendTo('#hiddenCopyContainerOthersAppendedTo'); */
			loadajaxpageForPrintExtended(document.getElementById(containerId)
					.getElementsByTagName("a")[wpfbackVar].href, newdiv.id,
					"false");
			counter++;
			/* recursiveInsertBefore(newdiv.id); */
			returnValue = newdiv.id;
			break;
		}
	}
	return returnValue;

}

function copyDocumentText(url, containerid, synchronous) {
	removeClonedContent();
	cloneForPrint(url, mainDocContainer(), "false");
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		setCpyContVisHid();
		r.moveToElementText(document.getElementById(mainDocContainer()));
		/*
		 * try{ r.select(); } catch(e){}
		 */
		r.execCommand("RemoveFormat");
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
		setCpyContVisNone();
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	removeClonedContent();
}

function copySelectedText() {
	/*
	 * removeClonedContent(); restoreSelection(myRange);
	 */
	if (jQuery.browser.msie) {
		var r = document.selection.createRange();
		if (r.text == "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[7]);
		else {
			/*
			 * r.moveToElementText(document.getElementById("hiddenCopyContainerOthersAppendedTo"));
			 * try{ r.select(); } catch(e){}
			 */
			r.execCommand("Copy");
			var content = clipboardData.getData("Text");
			if (content != null && content !== "")
				alert(document.getElementById('mainForm:hidNotifications').innerHTML
						.split(";")[2]);
			/*
			 * document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display =
			 * 'none';
			 */
		}
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	setHidPrintFinished();
	return false;

}

function printFromHiddenList() {
	removeClonedContent();
	if (jQuery('#mainForm\\:prntpnllstsel').length > 0) {
		jQuery('#mainForm\\:prntpnllstsel').clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	}
	launchNotification();
	document.getElementById("mainForm:hidPrintList").value = false;
	iceSubmitPartial(document.getElementById("mainForm"), document
			.getElementById("mainForm:hidPrintList"));
	setHidPrintFinished();
}

function copyHiddenList() {
	removeClonedContent();
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		/*
		 * document.getElementById("printingPopupList").style.visibility =
		 * 'hidden'; document.getElementById("printingPopupList").style.width =
		 * '1px'; document.getElementById("printingPopupList").style.height =
		 * '1px'; document.getElementById("printingPopupList").style.display =
		 * 'block';
		 */
		if (jQuery('#mainForm\\:prntpnllstall').length > 0) {
			jQuery('#mainForm\\:prntpnllstall').clone().appendTo(
					'#hiddenCopyContainerOthersAppendedTo');
		}
		if (jQuery('#mainForm\\:prntpnllstsel').length > 0) {
			jQuery('#mainForm\\:prntpnllstsel').clone().appendTo(
					'#hiddenCopyContainerOthersAppendedTo');
		}
		r.moveToElementText(document
				.getElementById("hiddenCopyContainerOthersAppendedTo"));
		try {
			r.select();
		} catch (e) {
		}
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	document.getElementById("mainForm:hidPrintList").value = false;
	iceSubmitPartial(document.getElementById("mainForm"), document
			.getElementById("mainForm:hidPrintList"));
	setHidPrintFinished();
}

function doPopup(source) {
	popup = window.open(source);
	popup.focus();
}

function printRelatedDocument() {
	removeClonedContent();
	var url = "about:blank";
	cloneForPrint(url, relatedDocContainer(), "false");
	launchNotification();
	setHidPrintFinished();

}

function printChangesDocument() {
	removeClonedContent();
	var url = "about:blank";
	cloneForPrint(url, changesContainer(), "false");
	launchNotification();
	setHidPrintFinished();
}

function copyChanges() {
	removeClonedContent();
	setCpyContVisHid();
	var selectorMain = "#" + changesContainer();
	if (selectorMain != "#") {
		jQuery(selectorMain).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	}
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		r.moveToElementText(document.getElementById(changesContainer()));
		try {
			r.select();
		} catch (e) {
		}
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
		document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'none';
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	setCpyContVisNone();
	setHidPrintFinished();
}

function printPrevVersionDocument() {
	removeClonedContent();
	var url = "about:blank";
	cloneForPrint(url, prevVersionContainer(), "false");
	launchNotification();
	setHidPrintFinished();
}

function copyPrevVersion() {
	removeClonedContent();
	setCpyContVisHid();
	var selectorMain = "#" + prevVersionContainer();
	if (selectorMain != "#") {
		jQuery(selectorMain).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	}
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		r.moveToElementText(document.getElementById(prevVersionContainer()));
		try {
			r.select();
		} catch (e) {
		}
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
		document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'none';
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	setCpyContVisNone();
	setHidPrintFinished();
}

// 2in1
function printFullText(url, containerid, synchro) {
	cloneForPrint(url, mainDocContainer(), "false");
	launchNotification();
	setHidPrintFinished();
}
//

function cloneUForPrint(url, containerid, synchro) {
	removeClonedContent();
	var selectorMain = "#" + containerid;
	if (selectorMain != "#") {
		jQuery(selectorMain).addClass("wpfForPrint");
	} else {
		var someElement = containerid;
		var selectorMain = "#" + someElement;
		var newdiv = document.createElement('div');
		var id = someElement;
		newdiv.setAttribute('id', id);
		jQuery('#hiddenCopyContainerOthersAppendedTo').append(newdiv);
		loadajaxpageForPrintExtended(url, someElement, "false");
		jQuery(selectorMain).addClass("wpfForPrint");
		jQuery(selectorMain).addClass("#hiddenCopyContainerOthersAppendedTo");
	}
}

function alertPrint(param) {
	alert(param);
}

var postPrintClean = null;

function postPrintCleanup() {
	removeClonedContent();
}

function printCurrDocRemark(url, containerid, synchro) {
	cloneForPrint(url, containerid, synchro);
	launchNotification();
	setHidPrintFinished();
}

function copyCurrDocRemark(url, containerid, synchro) {
	cloneForPrint(url, containerid, "false");
	setCpyContVisHid();
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		r.moveToElementText(document.getElementById(containerid));
		try {
			r.select();
		} catch (e) {
		}
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
		document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'none';
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	setCpyContVisNone();
	setHidPrintFinished();
}

function printSubtitles() {
	removeClonedContent();
	var selectorMain = "#" + "dDocumentTitles";
	if (selectorMain != "#") {
		jQuery(selectorMain).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	}
	launchNotification();
	setHidPrintFinished();
}

function copySubtitles() {
	removeClonedContent();
	setCpyContVisHid();
	var selectorMain = "#" + "dDocumentTitles";
	if (selectorMain != "#") {
		jQuery(selectorMain).clone().appendTo(
				'#hiddenCopyContainerOthersAppendedTo');
	}
	if (jQuery.browser.msie) {
		var r = document.body.createTextRange();
		r.moveToElementText(document.getElementById("dDocumentTitles"));
		try {
			r.select();
		} catch (e) {
		}
		r.execCommand("Copy");
		var content = clipboardData.getData("Text");
		if (content != null && content !== "")
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[2]);
		document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'none';
	} else
		alert(document.getElementById('mainForm:hidNotifications').innerHTML
				.split(";")[0]);
	setCpyContVisNone();
	setHidPrintFinished();
}

function printSelectedRange() {
	removeClonedContent();
	restoreSelection(myRange);
	if (window.getSelection) {
		if (myRange != null) {
			jQuery('#hiddenCopyContainerOthersAppendedTo').append(
					myRange.cloneContents());
			launchNotification();
		} else
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[7]);
	} else if (document.selection) {
		if (document.selection.type != "None") {
			jQuery('#hiddenCopyContainerOthersAppendedTo').html(
					document.selection.createRange().htmlText);
			launchNotification();
		} else
			alert(document.getElementById('mainForm:hidNotifications').innerHTML
					.split(";")[7]);
	}
	setHidPrintFinished();
	return false;
}

function setHidPrintFinished() {
	document.getElementById("mainForm:hidPrintingFinished").value = true;
}

function setCpyContVisHid() {
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.visibility = 'hidden';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.width = '1px';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.height = '1px';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'block';
}

function setCpyContVisNone() {
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.visibility = '';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.width = '';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.height = '';
	document.getElementById("hiddenCopyContainerOthersAppendedTo").style.display = 'none';
}