/**
 * Libreria Javascript
 *
 * @Created 24/11/2005
 * @LastUpdate 13/02/2007
 * @version 0.0.12d
 * @author Matteo Cappellazzo <matteo.c@mif.it>
 * @copyright Copyright &copy; MIF di Matteo Cappellazzo
 * @package Genetyx
 * @subpackage [sysfiles]
 */
var IE = navigator.appName.indexOf("Microsoft") != -1;
var MZ = navigator.appName.indexOf("Mozilla") != -1;
var FF = navigator.appName.indexOf("Firefox") != -1;
var NS = navigator.appName.indexOf("Netscape") != -1;

var BROWSER = '';

if (IE) {
	BROWSER = 'IE';
}
if (MZ) {
	BROWSER = 'MZ';
}
if (FF) {
	BROWSER = 'FF';
}
if (NS) {
	BROWSER = 'NS';
}

function changeElementInnerHtml(IDelement,HtmlCode) {

	var element = document.getElementById(IDelement);

	if (!element) return false;

	element.innerHtml = HtmlCode;
	return true;

}

function selectOptionByValue(IDselect,value) {

	var element = document.getElementById(IDselect);

	if (!element) return false;

	for (var i=0;i<element.length;i++) {

		if (element.options[i].value == value) {
			element.options[i].selected = true;
		} else {
			element.options[i].selected = false;
		}

	}

	return true;

}

function selectOptionByIndex(IDselect,iOption) {

	var element = document.getElementById(IDselect);

	if (!element) return false;

	for (var i=0;i<element.length;i++) {

		if (i == iOption) {
			element.options[i].selected = true;
		} else {
			element.options[i].selected = false;
		}

	}

	return true;

}

function openInTop() {

	if (top.frames.length > 0) {
		top.document.location = window.document.location;
	}
	return true;
}

function imgCycle(fstring) { // Esegue un ciclo sugli oggetti img.

   for(var i=0; i<document.images.length; i++) {

	  var img = document.images[i];

		if (img.name == 'iconimage' || img.name.indexOf('artsimage') == 0) continue;

	  var imgName = img.src.toUpperCase();

		if (eval(fstring + '(img)')) --i;

	}

	return true;

}

function correctPNG(imgElement) { // correctly handle PNG transparency in Win IE 5.5 or higher.

	var imgName = imgElement.src.toUpperCase();

	if (imgName.substring(imgName.length-3, imgName.length) != "PNG") return false;

	var imgID = (imgElement.id) ? "id='" + imgElement.id + "' " : "";
	var imgClass = (imgElement.className) ? "class='" + imgElement.className + "' " : "";
	var imgTitle = (imgElement.title) ? "title='" + imgElement.title + "' " : "title='" + imgElement.alt + "' ";
	var imgStyle = imgElement.style.cssText + "display:inline-block";
	var imgAttribs = imgElement.attributes;

	for (var j=0; j<imgAttribs.length; j++) {

		var imgAttrib = imgAttribs[j];

		if (imgAttrib.nodeName == "align") {

			if (imgAttrib.nodeValue == "left") imgStyle = "float:left;" + imgStyle;
			if (imgAttrib.nodeValue == "right") imgStyle = "float:right;" + imgStyle;
			break;

		}

	}

	var strNewHTML = "<span " + imgID + imgClass + imgTitle;
	strNewHTML += " style=\"width:5px;height:5px;display:inline-block;" + imgStyle + ";";
	strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + imgElement.src + "\', sizingMethod='image');\"></span>";
	imgElement.outerHTML = strNewHTML;

	return true;

}

function status_message(e) {

	var BROWSER = window.BROWSER;

	if (BROWSER=='IE') {
		/*
		var debugS = '';
		tempwin = window.open("", "tempw", "width=350, height=500, scrollbars=yes");
		tempwin.document.open("text/plain");
		for (var prop in event.srcElement) {
			debugS = prop + '\r\n';
			tempwin.document.writeln(debugS);
		}*/

		e = event.srcElement.innerText;
		window.status = e; return true;

	} else {

		/*
		var debugS = '';
		tempwin = window.open("", "tempw", "width=450, height=500, scrollbars=yes");
		tempwin.document.open("text/plain");
		window.status = 'TESTING';
		tempwin.document.writeln('Window Status: ' + window.status.length + '<br>');
		tempwin.document.writeln('TARGET text: ' + e.target.text + '<br>');
		tempwin.document.writeln('<br>');
		for (var prop in e.target) {
			debugS = prop + '<br>';
			tempwin.document.writeln(debugS);
		}*/

		if (e.target.text) {
			window.status = e.target.text; return true;
		} else {
			window.status = ''; return true;
		}

	}

}

function clear_status_message() {

	var BROWSER = window.BROWSER;

	if (BROWSER=='IE') {
		window.status = ''; return true;
	} else if (navigator.appName == "Netscape") {
		window.status = ''; return true;
	}

}

function mdown_status_message(e) {

	var BROWSER = window.BROWSER;

	if (BROWSER=='IE') {
		// nulla da fare
	} else {
		if (e.target.text) {
			window.status = e.target.text; return false;
		} else {
			window.status = ''; return false;
		}
	}

	return null;

}

function captureLinksEvents () {

	//alert (document.links.length);
	for (var i=0; i < document.links.length; i++) {

		var CurrLink = document.links[i];
		/*
		var debugS = '';
		tempwin = window.open("", "tempw", "width=350, height=500, scrollbars=yes");
		tempwin.document.open("text/html");
		for (var prop in CurrLink) {
			debugS = prop + '<br>\r\n';
			tempwin.document.writeln(debugS);
		}
		if (CurrLink.name.toString != 'undefined') {
			linkName = document.links[i].name;
			alert (linkName);
		}
		*/

		var linkName = document.links[i].id;
		//alert ( linkName);
		//if ( linkName.indexOf('nostatus') != -1) continue;

		if ( typeof(linkName) != 'undefined') {
			if ( linkName.indexOf('nostatus') != -1) continue;
		}

		CurrLink.onmouseover = status_message;
		CurrLink.onmousedown = mdown_status_message;
		CurrLink.onfocus     = status_message;
		CurrLink.onmouseout  = clear_status_message;

	}

}

var mouseX = 0;
var mouseY = 0;

function captureMouseCoords(e) {

	var BROWSER = window.BROWSER;

  if (BROWSER=='IE') { // IE
    mouseX = event.clientX + document.body.scrollLeft;
    mouseY = event.clientY + document.body.scrollTop;
  } else {  // Mozilla
    mouseX = e.pageX;
    mouseY = e.pageY;
  }

	return true;

}

function LUnderMouse(layer) {

	var BROWSER = window.BROWSER;

	sy = document.body.clientHeight + document.body.scrollTop;
	ly = 184;

	if (ly+mouseY > sy) {
		vpos = mouseY - ly -10;
	} else {
		vpos = mouseY + 5;
	}

	x = mouseX + 5;
	y = vpos;

  if (BROWSER=='IE') { // IE

		clayer = document.all[layer];
		if (clayer.style.visibility == 'hidden') return;
		clayer.style.pixelLeft = x;
		clayer.style.pixelTop = y;

  } else {  // Mozilla

		clayer = document.getElementById(layer);
		if (clayer.style.visibility == 'hidden') return;
		clayer.style.left = x;
		clayer.style.top = y;

	}

}

function LUnderMouseMove(layer) {

	var BROWSER = window.BROWSER;

	sy = document.body.clientHeight + document.body.scrollTop;
	ly = 184;

	if (ly+mouseY > sy) {
		vpos = mouseY - ly -10;
	} else {
		vpos = mouseY + 5;
	}

	x = mouseX + 5;
	y = vpos;

  if (BROWSER=='IE') { // IE

		clayer = document.all[layer];
		clayer.style.pixelLeft = x;
		clayer.style.pixelTop = y;

  } else {  // Mozilla

		clayer = document.getElementById(layer);
		clayer.style.left = x;
		clayer.style.top = y;

	}

}

function getStyleClass(layer) {

	var BROWSER = window.BROWSER;

  if (BROWSER=='IE') { // IE
		clayer = document.all[layer];
  } else {  // Mozilla
		clayer = document.getElementById(layer);
	}
	/*
	var values = '';

	for (property in clayer) {
		values = values + property + '\r\n';
	}
	*/
	return clayer.getAttribute('class');

}

function applyClass(layer, newClass) {

	var BROWSER = window.BROWSER;

  if (BROWSER=='IE') { // IE
		clayer = document.all[layer];
  } else {  // Mozilla
		clayer = document.getElementById(layer,newClass);
	}

	return clayer.setAttribute('class',newClass);

}
function removeClass(layer) {

	var BROWSER = window.BROWSER;

  if (BROWSER=='IE') { // IE
		clayer = document.all[layer];
  } else {  // Mozilla
		clayer = document.getElementById(layer);
	}

	return clayer.removeAttribute('class');

}

function selectSlide(slideNR) {

	slideID = 'slide'+slideNR;

	LShow(slideID, 'block');
	applyClass(slideID+'push', 'tabSelected');
	switchEditors(slideID);

	return true;

}

function deselectSlide(slideNR) {

	slideID = 'slide'+slideNR;

	LHide(slideID);
	removeClass(slideID+'push');

	return true;

}

var FCKeditorLoaded = false;

function FCKeditor_OnComplete(editorInstance) {
  FCKeditorLoaded = true;
}

function switchEditors(ID) {
  if(!FCKeditorLoaded) {
    setTimeout('switchEditors(\'' + ID + '\')', 500);
    return;
  }
  DoSwitchEditors(document.getElementById(ID));
}

function DoSwitchEditors(oNode) {
  var i;
  for (i = 0; i < oNode.childNodes.length;i++) {
    childNode = oNode.childNodes.item(i);
    editor = FCKeditorAPI.GetInstance(childNode.name);

    if (editor && editor.EditorDocument && editor.EditMode == FCK_EDITMODE_WYSIWYG) {
      editor.SwitchEditMode();
      editor.SwitchEditMode();
    }
    DoSwitchEditors(childNode);
  }
}

function LHide(layer) {

	var BROWSER = window.BROWSER;

  if (BROWSER=='IE') { // IE
		clayer = document.all[layer];
  } else {  // Mozilla
		clayer = document.getElementById(layer);
	}

	clayer.style.visibility = 'hidden';

}

function LShow(layer,display) {

	var BROWSER = window.BROWSER;

  if (BROWSER == 'IE') { // IE
		clayer = document.all[layer];
  } else {  // Mozilla
		clayer = document.getElementById(layer);
	}

	if (display == '') display = 'inherit';

	clayer.style.visibility = 'visible';

	clayer.style.display = display;

}

function submitForm(formToSubmit, confirmText) {

	var go = false;

	sForm = eval ('document.' + formToSubmit);

  if (confirmText != '') {

  	go = confirm(confirmText);

  	if (go) sForm.submit();

  	return go;

  } else {

		sForm.submit();

		return true;

	}

}

function resetSelect(doReset, formName, selectName) {

	var go = false;

	SelectElement = eval ('document.' + formName + '.' + selectName);

  if (doReset) {

  	SelectElement.options[SelectElement.selectedIndex].selected = false;

  	for(i=0; i< SelectElement.length; i++) {

  		if (SelectElement.options[i].defaultSelected) {

  			SelectElement.options[i].selected = true;
  			return true;

  		}

  	}

  	return false;

  }

	return false;

}

function toggleVisibility(id,displayType) {

	var BROWSER = window.BROWSER;

	if (displayType == null || displayType == '') displayType = 'inline';

	if (BROWSER == 'IE') {

		var element = document.getElementById(id);

		if (element == false) return false;

		var old_display = element.style.display;

		if (old_display == 'none' || old_display == '') {
			element.style.display = (displayType == 'none') ? 'inherit' : displayType;
		} else {
			element.style.display = 'none'
		}

	} else {

		var element = document.getElementById(id);

		if (element == false) return false;

		var old_display = element.style.display;

		if (old_display == 'none' || old_display == '') {
			element.style.display = (displayType == 'none') ? 'inherit' : displayType;
		} else {
			element.style.display = 'none'
		}

	}

	return false;

}

function defaultActions () {

	var BROWSER = window.BROWSER;

	if (BROWSER == 'IE') {
		imgCycle('correctPNG');
	}

	document.onmousemove = captureMouseCoords;

	captureLinksEvents();

}

function AdminFormAction (formToSubmit, action, confirmText) {

	var go = false;
	var sForm = null;

	//sForm = eval ('document.' + formToSubmit);
	sForm = document.getElementById (formToSubmit);

  if (confirmText != '') {

  	go = confirm(confirmText);

  	if (go) {
  		if (action != '') sForm.exec.value = action;
  		sForm.submit();
  	}

  	return go;

  } else {

  	if (action != '') sForm.exec.value = action;
		sForm.submit();

		return true;

	}

}

function adminButtonAction (action, confirmText) {

	var go = false;
	var sForm = null;

  if (confirmText != '') {

  	go = confirm(confirmText);

  	if (go) {
  		if (action != '') return eval(action);
  	}

  	return go;

  } else {

  	if (action != '') return eval(action);

	}

}

function AdminFormReset (formToReset, confirmText) {

	var go = false;

	var sForm = document.getElementById(formToReset);

  if (confirmText != '') {

  	go = confirm(confirmText);

  	if (go) {
  		sForm.reset();
  	}
  	return go;

  } else {

  	sForm.reset();

		return true;

	}

}

function getFocus (windowHandler) {

	windowHandler.focus();

	return true;

}

/*window.onload = defaultActions;*/
function refreshMain() {

	window.opener.location.reload();
	window.focus();
	//window.setInterval('window.focus()',200);
	//window.focus();

	return true;

}

function checkAdminSheetFocus() {

	return checkWindowFocus(window.adminSheetWindow);

}

function checkAdminDialogFocus() {

	return checkWindowFocus(window.adminDialogWindow);

}

function checkWindowFocus(windowHandler) {

	if (windowHandler == null || windowHandler.closed) {
		window.onfocus = null;
		return false;
	} else {
		windowHandler.focus();
		return true;
	}

}

function openAdminSheet(url) {

	if (IE) {
		window.adminSheetWindow = window.showModalDialog(url, 'adminFormSheet', "dialogWidth:800px;dialogHeight:600px;help:no;scroll:no;status:no") ;
	} else {
		window.adminSheetWindow = window.open(url, 'adminFormSheet', 'dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes, location=0, menubar=0, toolbar=0, status=0, resizable=0, scrollbars=auto, width=800, height=600',true);
		window.onfocus = checkAdminSheetFocus;
	}
	//window.adminSheetWindow.setInterval('window.focus()',200);
	//window.adminSheetWindow.setInterval('window.getFocusAdminSheet(adminSheetWindow)',100);
	//window.adminSheetWindow.setInterval('window.getFocusAdminSheet(self)',50);
	//window.setInterval('window.getFocusAdminSheet(window.adminSheetWindow)',50);
	//alert(window.adminSheetWindow);
	//window.adminSheet.onblur = adminSheet.focus;

	return true;

}

function openAdminDialog(w,h,url) {

	if (IE) {
		window.adminDialogWindow = window.showModalDialog(url, 'adminDialog', "dialogWidth:"+w+"px;dialogHeight:"+h+"px;help:no;scroll:no;status:no;resizable=yes") ;
	} else {
		window.adminDialogWindow = window.open(url, 'adminDialog', 'dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes, location=0, menubar=0, toolbar=0, status=0, resizable=1, scrollbars=auto, width='+w+', height='+h,true);
		window.onfocus = checkAdminDialogFocus;
	}
	//window.adminDialogWindow.setInterval('window.focus()',200);

	return true;

}

function switchTreeElement(ID_Element) {

	return toggleVisibility(ID_Element,'block');

}

function selectGalleryImage( Url,ID_Element ) {

	var img = window.opener.document.getElementById(ID_Element + '_img');
	var urlTxt = window.opener.document.getElementById(ID_Element + '_src');

	img.src = Url;
	urlTxt.value = Url;

	window.close();

}

function SelectImage( fileUrl ) {
	window.opener.SetUrl( fileUrl ) ;
	window.close();
}

function fotoMiddlePosition(ID, height, containerID) {

	var foto = document.getElementById(ID);
	var div = document.getElementById(containerID);

	var fotoPosition = 0;

	fotoPosition = (height-foto.height)/2;

	div.style.top = fotoPosition;

	return true;

}

var md5_hex_chr="0123456789abcdef";

function md5_rhex(_1){

	str="";

	for(j=0;j<=3;j++) {

		str += md5_hex_chr.charAt((_1>>(j*8+4))&15) + md5_hex_chr.charAt((_1>>(j*8))&15);

	}

	return str;

}

function md5_str2blks_MD5(_2) {

	nblk=((_2.length+8)>>6)+1;

	blks=new Array(nblk*16);

	for(i=0;i<nblk*16;i++) {

		blks[i]=0;

	}

	for(i=0;i<_2.length;i++) {

		blks[i>>2]|=_2.charCodeAt(i)<<((i%4)*8);

	}

	blks[i>>2]|=128<<((i%4)*8);

	blks[nblk*16-2]=_2.length*8;

	return blks;

}

function md5_add(x,y) {

	var _5=(x&65535)+(y&65535);

	var _6=(x>>16)+(y>>16)+(_5>>16);

	return (_6<<16)|(_5&65535);

}

function md5_rol(_7,_8) {

	return (_7<<_8)|(_7>>>(32-_8));

}

function md5_cmn(q,a,b,x,s,t) {

	return md5_add(md5_rol(md5_add(md5_add(a,q),md5_add(x,t)),s),b);

}

function md5_ff(a,b,c,d,x,s,t) {

	return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);

}

function md5_gg(a,b,c,d,x,s,t) {

	return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);

}

function md5_hh(a,b,c,d,x,s,t) {

	return md5_cmn(b^c^d,a,b,x,s,t);

}

function md5_ii(a,b,c,d,x,s,t) {

	return md5_cmn(c^(b|(~d)),a,b,x,s,t);

}

function md5_calcMD5(str) {

	x = md5_str2blks_MD5(str);
	a=1732584193;
	b=-271733879;
	c=-1732584194;
	d=271733878;

	for(i=0;i<x.length;i+=16) {

		olda=a;
		oldb=b;
		oldc=c;
		oldd=d;

		a=md5_ff(a,b,c,d,x[i+0],7,-680876936);
		d=md5_ff(d,a,b,c,x[i+1],12,-389564586);
		c=md5_ff(c,d,a,b,x[i+2],17,606105819);
		b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);
		a=md5_ff(a,b,c,d,x[i+4],7,-176418897);
		d=md5_ff(d,a,b,c,x[i+5],12,1200080426);
		c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);
		b=md5_ff(b,c,d,a,x[i+7],22,-45705983);
		a=md5_ff(a,b,c,d,x[i+8],7,1770035416);
		d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);
		c=md5_ff(c,d,a,b,x[i+10],17,-42063);
		b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);
		a=md5_ff(a,b,c,d,x[i+12],7,1804603682);
		d=md5_ff(d,a,b,c,x[i+13],12,-40341101);
		c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);
		b=md5_ff(b,c,d,a,x[i+15],22,1236535329);
		a=md5_gg(a,b,c,d,x[i+1],5,-165796510);
		d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);
		c=md5_gg(c,d,a,b,x[i+11],14,643717713);
		b=md5_gg(b,c,d,a,x[i+0],20,-373897302);
		a=md5_gg(a,b,c,d,x[i+5],5,-701558691);
		d=md5_gg(d,a,b,c,x[i+10],9,38016083);
		c=md5_gg(c,d,a,b,x[i+15],14,-660478335);
		b=md5_gg(b,c,d,a,x[i+4],20,-405537848);
		a=md5_gg(a,b,c,d,x[i+9],5,568446438);
		d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);
		c=md5_gg(c,d,a,b,x[i+3],14,-187363961);
		b=md5_gg(b,c,d,a,x[i+8],20,1163531501);
		a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);
		d=md5_gg(d,a,b,c,x[i+2],9,-51403784);
		c=md5_gg(c,d,a,b,x[i+7],14,1735328473);
		b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);
		a=md5_hh(a,b,c,d,x[i+5],4,-378558);
		d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);
		c=md5_hh(c,d,a,b,x[i+11],16,1839030562);
		b=md5_hh(b,c,d,a,x[i+14],23,-35309556);
		a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);
		d=md5_hh(d,a,b,c,x[i+4],11,1272893353);
		c=md5_hh(c,d,a,b,x[i+7],16,-155497632);
		b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);
		a=md5_hh(a,b,c,d,x[i+13],4,681279174);
		d=md5_hh(d,a,b,c,x[i+0],11,-358537222);
		c=md5_hh(c,d,a,b,x[i+3],16,-722521979);
		b=md5_hh(b,c,d,a,x[i+6],23,76029189);
		a=md5_hh(a,b,c,d,x[i+9],4,-640364487);
		d=md5_hh(d,a,b,c,x[i+12],11,-421815835);
		c=md5_hh(c,d,a,b,x[i+15],16,530742520);
		b=md5_hh(b,c,d,a,x[i+2],23,-995338651);
		a=md5_ii(a,b,c,d,x[i+0],6,-198630844);
		d=md5_ii(d,a,b,c,x[i+7],10,1126891415);
		c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);
		b=md5_ii(b,c,d,a,x[i+5],21,-57434055);
		a=md5_ii(a,b,c,d,x[i+12],6,1700485571);
		d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);
		c=md5_ii(c,d,a,b,x[i+10],15,-1051523);
		b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);
		a=md5_ii(a,b,c,d,x[i+8],6,1873313359);
		d=md5_ii(d,a,b,c,x[i+15],10,-30611744);
		c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);
		b=md5_ii(b,c,d,a,x[i+13],21,1309151649);
		a=md5_ii(a,b,c,d,x[i+4],6,-145523070);
		d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);
		c=md5_ii(c,d,a,b,x[i+2],15,718787259);
		b=md5_ii(b,c,d,a,x[i+9],21,-343485551);

		a=md5_add(a,olda);
		b=md5_add(b,oldb);
		c=md5_add(c,oldc);
		d=md5_add(d,oldd);

	}

	return md5_rhex(a) + md5_rhex(b) + md5_rhex(c) + md5_rhex(d);

}
