/**
* js_reformat-content.js
* checks and filters out the desired media tags, classes, ids from existing html object
* and presents them reformatted in some other layer. Define:
* - sourceid: id of object to check for images and media
* - targetid: id of object to fill in the filtered content
* - picdimension: width of extracted images - just the number = no px!
* - piclayer: id of layer for extracted pictures 
* - targetclass: class of target object to resize
* - usehighslide: 0 or 1
* - showallpics: show just first or all images (for registered users)
* - show captions: 0 or 1
* - checkimagesize: 0 or 1
* - firsttall: 0 or 1
* cp 2009, Borut Savski
**/

// search clauses
function searchClause(element, direction, vertical, imageloc){
	vertical = parseInt(vertical);
	if(direction=="open"){
		element.style.height='auto';
		element.style.backgroundImage='url('+imageloc+')'; 
		element.style.backgroundPosition='bottom right'; 
	} else {
		element.style.height=vertical+'px';
		element.style.backgroundImage='url('+imageloc+')'; 
		if(document.all){
			vertical=vertical+10; // how to add int
			element.style.backgroundPosition=vertical+'px right'; 
		}else 	element.style.backgroundPosition='bottom right';
	}
}

function divBringTo(obj, newX, newY){
	obj.style.left = (newX-750)+'px';
	obj.style.top = (newY+150)+'px';
}
function divBringBack(obj){
	divBringTo(obj, 760, -150);
}

function reformatMediaContent(sourceid, targetid, picdimension, piclayer, targetclass, usehighslide, highslideonload, showallpics, showcaptions, checkimagesize, firsttall) {
	// hide all all images in element with source id
	var innerContent = document.getElementById(sourceid);
	var innerCaption = [];
	var innerImages = [];
	var innerTexts = [];
	var html;
	var innerText;
	var innerPics = [];
	var innerSrc = [];
	var caption = []; 
	var control = []; 
	var imgsize;
	var newPic = ""; 
	var newPicture = "";
	var thumbdimension = "100";
	var dimension = picdimension;
	var firstdimension = picdimension;
	var num;
	var dhtml;
	var display;
	var invdisplay;
	var hideimg;

	// check all the following wordpress classnames to find gallery
	var classes = new Array("gallery"); 
	for(var c=0;c<classes.length;c++){
		i=0; a=0;
		caption = innerContent.getElementsByTagName("div"); 
		while (element = caption[i++]) { 
			if (element.className.indexOf(classes[c])!=-1) { 
				// check if any images inside
				if(element.getElementsByTagName('img').length){
					innerCaption[a] = caption[i-1]; 
					a++;
				}
				// in any case - make gallery invisible
				element.style.display='none';
			} 
		} 
	}

	// try images without any captions - may have link around them!
	innerImages = innerContent.getElementsByTagName('img');

	var numbering='';
	for(var i=0; i<innerImages.length; i++){
		var exists=0;
		html = '';

		// get the text caption for gallery - if any
		if(innerCaption.length){
			if(innerImages[i].parentNode.tagName=="A") var capt = innerImages[i].parentNode.parentNode;
			// try these elements only
			var capts = capt.getElementsByTagName("p", "dd");
			// check second parent 
			if(capts.length==0){
				capt = capt.nextSibling;
			}
			// needed for Moz
			if(capt && capt.className==undefined) capt = "";
			if(capt && capt.className.indexOf('caption')!=-1){
				//alert(capt.className);
				if(document.all)	innerText = capt.innerText; 
				else			innerText = capt.textContent; 
				if(capt.style!="undefined") capt.style.display='none';

			} else { 
				innerText = " ";
			}	

			// hide gallery images in original layer
			innerImages[i].style.display='none';

		} else {		// captions outside the gallery

			if(showcaptions>0){
				// check one parent
				var capt = innerImages[i].parentNode;
				// try these elements only
				var capts = capt.getElementsByTagName("p", "dd");
				// check second parent 
				if(capts.length==0){
					var capt = innerImages[i].parentNode.parentNode;
				}
				// needed for Moz
				if(capt && capt.className==undefined) capt = "";
				if(capt && capt.className.indexOf('wp-caption')!=-1){
					if(document.all)	innerText = capt.innerText; 
					else			innerText = capt.textContent; 
					if(innerText==undefined)	innerText=" ";
					// hide captions in original layer
					if(capt.style!="undefined") capt.style.display='none';
				} else {
					innerText = " ";	// no caption 
				}
			}
			// keep images in sourceid layer - hide them in adaptFirstParagraph
			//innerImages[i].style.display='block';
			// hide gallery images in original layer
			innerImages[i].style.display='none';
		}

		// now check for existing images for duplicate
		for(var j=0; j<innerSrc.length;j++)	{
			//alert(innerImages[i].src+'='+innerSrc[j]);
			if(innerImages[i].src==innerSrc[j]){
				innerImages[i].src='';
				//alert(innerImages[i].src);
				exists=1;
				break; // image already exists - break out of this loop
			} else  exists=0;
		}

		// here we print the images
		if(exists=='0'){
			//alert(innerImages[i].src);
			//alert(innerSrc.length);
			innerSrc[innerSrc.length]=innerImages[i].src;

			// first is referential - for highslide
			if(i==0){ 
				display = 'block'; 
				if(firsttall==1) firstdimension = 290;
				invdisplay = 'none'; 
				//alert(firstdimension);
			}else{
				display='none';
				invdisplay = 'block'; 
				firstdimension = dimension;
			}
			if(usehighslide==1 && innerImages.length>1 ){	// use highslide expand

				html += '<a href="'+innerImages[i].src+'" class="highslide" ';
				if(i==0 && showallpics) html += 'id="highslidethumb" ';
				html += 'onclick="return hs.expand(this, ';
				if(i>0) html += 'galleryOptions, ';
				html += '{maxWidth:\''+dimension+'\'';
				// define this not to show numberPosition 1/1 in hs
				//if(innerImages.length==1) html += ', numberPosition:\'\'';
				html += '})"><img src="'+innerImages[i].src+'" style="width:'+firstdimension+'px;display:'+display+';"></a>';
				// add caption
				//alert(dimension);
				if(showcaptions>0){
					if(innerText==undefined)	innerText=" ";
					//alert(innerText);
					html += '<div class="highslide-caption" style="'+display+'">'+innerText+'</div>';
					// add caption of first image
					// show for i=0
					if(i==0) 	html += '<p class="wp-caption-text">'+innerText+'</p>'; // style="width:'+dimension+'px;"
					// numbering attached later!
					//numbering += '<span>'+(i+1)+'</span>';
					//html += innerText+'</div>';
				}
			} else {
				if(i==0 && firsttall==1) firstdimension = 290;
				else  firstdimension = dimension;
				html += '<img src="'+innerImages[i].src+'" style="width:'+firstdimension+'px;">';
				// add caption //if(i==0) 
				if(showcaptions>0){
					if(innerText==undefined)	innerText=" ";
					//alert(innerText);
					html += '<p class="wp-caption-text"'; 
					html += ' style="width:'+firstdimension+'px;">';
					// numbering attached later!
					//numbering += '<span>'+(i+1)+'</span>';
					html += innerText+'</p>';
				}
			}
			// add valid values to array
			innerPics[i] = html;

		} // does not exist

	} //endfor

	if(!newPic)	newPic = document.createElement('DIV');
	newPic.className = "gallery";
	//newPic.style.width = dimension+'px';
	newPic.style.float = 'right';

	// highslide container
	dhtml = '';

	if(showallpics>0)	num = innerPics.length;	else 	num = 1;
	// add all the images with captions now
	for(i=0;i<num;i++){
		// do not include images twice!
		if(innerSrc[i]!="" || innerPics[i]!=''){
			if(i==1 && usehighslide==1) dhtml += '<div class="hidden-container">';
			dhtml += innerPics[i];
		}
	}
	if(dhtml=="undefined")	dhtml = "";

	// end highslide container
	if(usehighslide==1)	dhtml += '</div>';
	newPic.innerHTML = dhtml;

	// now put these images in another layer - picturecode
	if(newPic.innerHTML!="undefined"){
		//alert(newPic.innerHTML);
		newPicture = document.getElementById(piclayer);
		newPicture.appendChild(newPic);
		newPicture.style.display = 'block';
		// fire up expand 
		if(usehighslide==1 && highslideonload==1){
			window.onload=function(){
				// define this not to show numberPosition 1/5 in hs
				if(num>1) position = 'caption'; else position='_';

				return hs.expand(document.getElementById('highslidethumb'), {maxWidth:dimension, numberPosition:position });
			};
		}
	}

	// check that piclayer id is set to exactly the dimension
	document.getElementById(piclayer).style.width = dimension+'px';
}

function adaptFirstParagraph(sourceid, keepimages){
	if(document.getElementById('narrowpicture').innerHTML!='') return;
	var paragraphs = []; 
	var captions = []; 
	var caption = []; 
	var text;

	var innerContent = document.getElementById(sourceid);
	var innerGallery = [];
	//alert(innerContent.innerHTML);

	var innerImages = innerContent.getElementsByTagName('img');
	if(innerImages.length==0)	return;

	paragraphs = innerContent.getElementsByTagName("p"); 
	// adapt the first paragraph for correct wrapping
	// exclude if classname wp-caption-text, resize inner images - if any
	// count characters
	var countchars=0;
	for(var a=0;a<paragraphs.length;a++){
		if(countchars<512){
			if(paragraphs[a] && paragraphs[a].innerHTML){
				//alert(paragraphs[a].innerHTML);
				if(paragraphs[a].className.indexOf("caption")!=-1){
					// eliminate caption paragraph
					paragraphs[a].style.display='none';
					paragraphs[a].parentNode.style.display='none';
				}
				// get all images in paragraph - transfer to far right
				if(keepimages==1){
					// leave images in paragraphs as they were
					//alert(keepimages);
				} else {
					var images = paragraphs[a].getElementsByTagName("img"); 
					for(var i=0;i<images.length;i++){
						images[i].style.width='0px';
						images[i].style.height='0px';
						images[i].style.display='none';
					}
				}
				// get all the image texts captions
				caption = paragraphs[a].getElementsByTagName("p");
				if(caption.length>0){
					i=0; j=0;
					while (element = caption[i++]) { 
						if(element.className.indexOf("caption")!=-1){ 
							captions[j] = caption[i-1]; 
							j++;
						}
					} 
				}
				// eliminate captions in paragraph
				for(var i=0;i<captions.length;i++)	captions[i].style.display='none';

				// change width
				// make paragraph small
				paragraphs[a].style.width = '300px'; //ok
				paragraphs[a].className = 'narrow'; //ok, if defined in css
				//paragraphs[a].style.height = 'auto'; //ok

				if(keepimages==1){ // check html
					text = paragraphs[a].innerHTML;
				} else { // check text
					if(document.all) text = paragraphs[a].innerText;
					else  text = paragraphs[a].innerContent;
				}				
				if(text!=""){
					paragraphs[a].style.display = 'block'; //ok
				} else {
					paragraphs[a].style.display = 'none'; //ok
				}
				//alert(paragraphs[a].innerHTML);
				// count characters
				if(document.all)	countchars += paragraphs[a].innerText.length;
				else countchars += paragraphs[a].textContent.length;

			} else {	// hide empty paragraphs
				paragraphs[a].style.width = '300px'; //ok
				//paragraphs[a].className = 'narrow'; //ok, if defined css
				paragraphs[a].style.display = 'none'; //ok
			}
		}
	}
}

function refurbishAllOthers(item, color){
	var captions = []; 
	// get all the text captions in array
	if (document.getElementsByClassName) {
		// IE does not support this - but is not used here anyway
		// innerTexts is caption
		captions = document.getElementsByClassName("catlink"); 
	} else {
		i=0; j=0;
		caption = document.getElementsByTagName("a");
		if(caption.length>0){
			while (element = caption[i++]) { 
				if(element.className.indexOf("catlink")!=-1){ 
					captions[j] = caption[i-1]; 
					j++;
				}
			} 
		}
	}
	// eliminate captions in paragraph
	for(var i=0;i<captions.length;i++){
		if(item != captions[i]) captions[i].style.color=color;
	}
}
