
var abs_debug = true;

function doSwitchAIMGDIV(id_img, id_div, postfix_open, postfix_closed) {
	if(postfix_open == null) postfix_open = "_open";
	if(postfix_closed == null) postfix_closed = "_closed";
	
	var el_div = document.getElementById(id_div);
	if(el_div == null) return false;
	
	var is_closed = (el_div.style.display=='none');
	
	var el_img = document.getElementById(id_img);
	if(el_img !== null) {
		if(is_closed) {
			el_img.src = el_img.src.replace(postfix_closed+'.', postfix_open+'.');
		} else {
			el_img.src = el_img.src.replace(postfix_open+'.', postfix_closed+'.');
		}
	}
	if(is_closed) {
		el_div.style.display = 'block';
	} else {
		el_div.style.display = 'none';
	}
	return false;
}

function showHideNextSibling(this_el) {
	var next_el=this_el.nextSibling.nextSibling;
	if(next_el !== null) {
		next_el=next_el.nextSibling;
	}
	if(next_el !== null) {
		next_el.style.display=(next_el.style.display=='none')?'block':'none';
	}
	return false;
}

function switchImage(imgId0, imgId1) {
	var el0 = document.getElementById(imgId0);
	var el1 = document.getElementById(imgId1);
	
	if(el0 != undefined && el1 != undefined) {
		var tmpSrc = el1.src;
		el1.src = el0.src;
		el0.src = tmpSrc;
		return true;
		
	} else {
		return false;
	}
}

/* ----------------------------------------------- */
/* -- BLOCK GALLERY ------------------------------ */
/* ----------------------------------------------- */

function afxGalleryTabSwitch(tabIdPref, ctrlIdPref, stylePref, page) {
	var el = null;
	var i = 0;
	var j = 0;
	
	i = 0;
	while(true) {
		el = document.getElementById(tabIdPref + String(i));
		if(el == undefined || i > 10) break;
		//alert("el.id " + el.id);
		el.className = stylePref + ((i == page)?"active":"inactive");
		i++;
	}
	i = 0;
	while(true) {
		j = 0;
		el = document.getElementById(ctrlIdPref + String(i) + "_" + String(j));
		if(el == undefined || i > 10) break;
		while(true) {
			el = document.getElementById(ctrlIdPref + String(i) + "_" + String(j));
			if(el == undefined || j > 10) break;
			el.style.display = ((i == page)?"":"none");
			j++;
		}
		i++;
	}
}

function afxGetExtension(str) {
	if(str == undefined) return null;
	var i = str.lastIndexOf(".");
	return str.slice(i+1);
}

function afxGalleryShowMedia(imageId) {
	var el = document.getElementById(imageId);
	if(el == undefined) return false;
	
	var src = el.getAttribute('afx_media_src');
	if(src == undefined || src == '') {
		src = el.src;
	}
	if(src == undefined) return false;

	try {	
		var ext = afxGetExtension(src).toLowerCase();
		if(ext == "avi" || ext == "wmv" || ext == "mpg" || ext == "rm") {
			return afxGalleryShowVideo(src);
			
		} else if(ext == "jpg" || ext == "gif" || ext == "png" || ext == "jpeg") {
			return afxGalleryShowImageInWindow(imageId, src);
			
		} else {
			return false;
		}
		
	} catch(ex) {
		// in case of error ... default to this
		return afxGalleryShowImageInWindow(imageId);
	}
	return false;
}

function afxGalleryShowVideo(mediaSrc) {
	document.location.href = mediaSrc;
	return true;
}

function afxGalleryShowImageInWindow(imageId, imageSrc) {
	var i = document.getElementById(imageId);
	var imageUrl = null;
	if(imageSrc == undefined) {
		imageUrl = i.src;
	} else {
		imageUrl = imageSrc;
	}
	var width = -1;
	var height = -1;
	var w = null;
	
	if(i.src != imageSrc) {
		var dim = i.getAttribute('afx_media_dim');
		if(dim != null) {
			var dim = dim.split("x");
			if(Number(dim[0]) > 0 && Number(dim[1]) > 0) {
				width = dim[0];
				height = dim[1];
			}
		}
	} else {
		if(i.width) width = i._width;
		if(i.height) height = i._height;
	}
	
	if(width < 0) {
		w = window.open(imageUrl, "Bild", "scrollbars=yes,resizable=yes");
	} else {
		width = Number(width) + 40;
		height = Number(height) + 30;
		w = window.open(imageUrl, "Bild", 
				"width="+width+",height="+height+",scrollbars=yes,resizable=yes");
	}
	w.focus();
	return true;
}

function afxGalleryLoadAndFitImage(imageId, imageUrl) {
	var oimg = document.getElementById(imageId);
	if(oimg == null) return false;
	var container = oimg.parentNode;

	var img = new Image();
	if(imageUrl == undefined) imageUrl = oimg.src;
	img.container_id = oimg.id;
	img.style.display = "none";
	img.onload = function(){ return afxGalleryFitImage(this, imageId); };
	img.src = imageUrl;
}

function afxGalleryFitImage(img, imageId) {
	var replImg = null;

	if(imageId == undefined) {
		replImg = img;
	} else {
		replImg = document.getElementById(imageId);
	}
	
	if(replImg._width == undefined)	replImg._width = img.width;
	if(replImg._height == undefined) replImg._height = img.height;

	var pw = 0;
	var ph = 0;

	pw = replImg.parentNode.getAttribute('max_width');
	ph = replImg.parentNode.getAttribute('max_height');
	
	if(pw == undefined) {
		pw = replImg.parentNode.parentNode.getAttribute('max_width');
		ph = replImg.parentNode.parentNode.getAttribute('max_height');
	}
	
	var fac = 1;
	if(replImg._width <= pw && replImg._height <= ph) {
		fac = 1.0;
	} else {
		var facw = (pw-10) / replImg._width;
		var fach = (ph-10) / replImg._height;
		fac = Math.min(facw, fach);
	}
	
	replImg.height = replImg._height * fac;
	replImg.width = replImg._width * fac;
	
	replImg.style.display = "inline";
	return true;
}

function afxGallerySwapImage(elId0, elId1) {
	var el0 = document.getElementById(elId0);
	var el1 = document.getElementById(elId1);
	
	var tmp = null;
	
	el0.style.visibility = 'hidden';
	el1.style.visibility = 'hidden';
	
	tmp = el0._width;
	el0._width = el1._width;
	el1._width = tmp;
	
	tmp = el0._height;
	el0._height = el1._height;
	el1._height = tmp;
	
	tmp = el0.src;
	el0.src = el1.src
	el1.src = tmp;

	try{
		afxSwapAttribute(el0, el1, 'afx_media_src');
		afxSwapAttribute(el0, el1, 'afx_media_dim');
		/*
		tmp = el0.getAttribute('afx_media_src');
		el0.setAttribute('afx_media_src', el1.getAttribute('afx_media_src'));
		el1.setAttribute('afx_media_src', tmp);
		*/
	} catch(ex) {}
	
	afxGalleryFitImage(el0);
	el0.style.visibility = 'visible';
	
	afxGalleryFitImage(el1);
	el1.style.visibility = 'visible';
}

function afxSwapAttribute(el0, el1, attrName) {
	var tmp = el0.getAttribute(attrName);
	el0.setAttribute(attrName, el1.getAttribute(attrName));
	el1.setAttribute(attrName, tmp);
}

function afxGalleryShowImage(elId0, elId1) {
	//if(abs_debug) alert("afxGalleryShowImage(" + elId0 + ", " + elId1 + "): >>> Started");
	var el0 = document.getElementById(elId0);
	var el1 = document.getElementById(elId1);
	
	var tmp = null;
	
	el0.style.visibility = 'hidden';
	el1.style.visibility = 'hidden';
	
	el0._width = el1._width;
	el0._height = el1._height;
	
	el0.src = el1.src
	
	try {
		var icn_src = el1.getAttribute('afx_media_icn');
		var el_icn_main = document.getElementById(el0.id + "_icon");
		if(el_icn_main) {
			if(icn_src == null || icn_src == "") {
				el_icn_main.style.display = 'none';
				el_icn_main.src = '';
			} else {
				el_icn_main.style.display = 'inline';
				el_icn_main.src = icn_src;
			}
		} else {
			//alert("Icon not found " + el0.id + "_icon")
		}
	} catch(ex) {}
		
	try {	
		el0.setAttribute('afx_media_src', el1.getAttribute('afx_media_src'));
		el0.setAttribute('afx_media_dim', el1.getAttribute('afx_media_dim'));
	} catch(ex) {
		el0.setAttribute('afx_media_src', null);
		el0.setAttribute('afx_media_dim', null);
	}
	
	try {
		var parent_anchor = el0.parentNode;
		if(
			parent_anchor != undefined 
			&& parent_anchor.nodeName 
			&& parent_anchor.nodeName.toLowerCase() == "a"
		) {
			parent_anchor.href = el1.getAttribute('afx_media_src');
		} else {
			if(abs_debug) alert(
				"afxGalleryShowImage(" + elId0 + ", " + elId1 + "): " + 
				"parent anchor not found (ps:" + parent_anchor.nodeName + " " +
				((parent_anchor.nodeName == "a")?"[OK is A]":"[ERR not A]") +  
				")");
		}
	} catch(ex) {
		if(abs_debug) alert("afxGalleryShowImage(" + elId0 + ", " + elId1 + "): exception " + ex);
	}
	
	try {
		var el_main_cap = document.getElementById(elId0 + "_caption");
		var main_cap = el1.getAttribute('afx_media_cap');
		if(el_main_cap && main_cap.length > 0) {
			el_main_cap.innerHTML = main_cap;
			el_main_cap.style.display = 'block';
		} else {
			el_main_cap.innerHTML = '';
			el_main_cap.style.display = 'none';
		}
	} catch(ex) {}
	
	afxGalleryFitImage(el0);
	el0.style.visibility = 'visible';
	
	afxGalleryFitImage(el1);
	el1.style.visibility = 'visible';
}

/* ----------------------------------------------- */
/* -- LINK Utils --------------------------------- */
/* ----------------------------------------------- */

function modifyPdfLinkTargetToBlank() {
	var c = 0;
	var anchors = document.getElementsByTagName("A");
	var el = null;
	for(var i = 0; i < anchors.length; i++) {
		el = anchors[i];
		if((el.target == "" || el.target == null)
				&& el.href != ""
				&& el.href.length > 3 
				&& el.href.substr(el.href.length-3, 3).toLowerCase() == "pdf") {
				
			el.target = "_blank";
			c++;
			
		}
	}
	return c;
}


/* ----------------------------------------------- */
/* -- DOM Utils ---------------------------------- */
/* ----------------------------------------------- */


function findNextSibling(startNode, targetNodeName, maxDistance) {
	return findSibling(startNode, targetNodeName, maxDistance, true);
}

function findPreviousSibling(startNode, targetNodeName, maxDistance) {
	return findSibling(startNode, targetNodeName, maxDistance, false);
}

function findSibling(startNode, targetNodeName, maxDistance, directionNext) {
	if(startNode === null) return null;
	if(maxDistance == null) maxDistance = 100;
	targetNodeName = targetNodeName.toLowerCase();
	var el = null;
	var distance = 0;
	while(distance < maxDistance) {
		if(directionNext) el = startNode.nextSibling();
		else el = startNode.previousSibling();
		if(el === null) return null;
		if(el.nodeName().toLowerCase() == targetNodeName) {
			return el;
		}
		distance++;
	}
	return null;
}

function findChild(parentNode, targetNodeName) {
	targetNodeName = targetNodeName.toLowerCase();
	var el = parentNode.firstChild();
	if(el.nodeName().toLowerCase() == targetNodeName) {
		return el;
	} else {
		return findNextSibling(el, targetNodeName, 100);
	}
	return null;
}
