/*widget = {
	showCover : function(title){
		alert(title);
		title : titl,
//		mainPath : "http://x-men.marvelcomics.pl/stuff/covers/",
		secPath : function(){
			title = this.title;
			title = title.toLowerCase();
			title = title.replace(' ','_');
			this.title = title;
		};
		alert(this.title);
	}
}*/

function rmElement(element){
	 element.parentNode.removeChild(element);
}
function disableElement(element){
	 element.style.display = 'none';
}
function showElement(element){
	 element.style.display = 'block';
}

// dorobic buforowanie do cloud'ow i wsadzic je do klasy widget

var resTimeout = null;
var resTimeoutHidden = null;
// identyfikatro opoznienia dla wyslania requesta na serwer po najechaniu mysza na postac
var sendAnswerTimeout = null;
var sendAnswerInterval = null;
// przechowuje id aktywnego elementu
var activeCloud = null;

function cloud2(e,object,option){
	var objSpan = object
	var req = mint.Request();
	req.OnLoading = function() { 
		$('resContener').style.display = 'none';
		$('resNoResponse').style.display = 'none';
		$('resLoading').style.display = 'block';
		var response = $('response');
		response.style.display = 'block';	
		response.style.opacity = 50;
//		response.style.width = 'auto';
		response.style.textAlign = 'center';
	}
	req.OnSuccess = function(fromCache) {
		clearTimeout(resTimeout);
		
		var responseObj = $('response');
		var resContenerObj = $('resContener');
		var resLoadingObj = $('resLoading');
		
    	if(fromCache){
    		var infoHero = fromCache;
    	} else {
    		var infoHero = this.responseJSON;
    		if(infoHero.cid){
    			cacheT.save('__'+infoHero.cid,this.responseText);
    		} else {
    			cacheT.save(infoHero.sname,this.responseText);    			
    		}    		
    	}
    	if(infoHero.name){	
    		$('resNoResponse').style.display = 'none';
    		if(infoHero.sname == activeCloud){ 
    			$(infoHero.sname).className = 'cloudLink';
    			resLoadingObj.style.display = 'none';
    			resContenerObj.style.display = 'block';
	    		responseObj.style.display = 'block';
	    		responseObj.style.opacity = 0;
	    		responseObj.style.textAlign = 'left';
	    		mint.fx.Style("response", "opacity", 0, 95, 10, 300);
		    	$('imgHero').src = infoHero.imgName;
		    	$('imgHero').alt = infoHero.name;
	//	    	$('name').innerHTML 	= '<b>'+infoHero.name+'</b> <button onclick="$(\'response\').style.display = \'none\';">zamknij</button>';
				$('name').innerHTML 	= '<b>'+infoHero.name+'</b>'; // <button onclick="closeCloud();">zamknij</button>';
		    	if(infoHero.trueName){$('trueName').innerHTML = '<b>Imie i nazwisko:</b> '+infoHero.trueName;showElement($('trueName'));} 
		    		else {disableElement($('trueName'));}
		    	if(infoHero.nation){$('nation').innerHTML = '<b>Narodowość:</b> '+infoHero.nation;showElement($('nation'));} 
		    		else {disableElement($('nation'));}
		    	if(infoHero.pseudo){$('pseudo').innerHTML = '<b>Inne pseudonimy:</b>: '+infoHero.pseudo.substr(0,70)+'...';showElement($('pseudo'));} 
		    		else {disableElement($('pseudo'));}
		    	if(infoHero.classHero){$('class').innerHTML = '<b>Klasa:</b> '+infoHero.classHero;showElement($('class'));}
		    	 	else {disableElement($('class'));}
		    	 if(infoHero.first){$('first').innerHTML = '<b>Pierwsze pojawienie się:</b> '+infoHero.first;showElement($('first'));}
		    	 	else {disableElement($('first'));}
		    	 if(infoHero.desc){$('desc').innerHTML = '<b>Uwagi:</b> '+infoHero.desc.substr(0,200)+'...';showElement($('desc'));}
		    	 	else {disableElement($('desc'));}
		    	 if(infoHero.power){$('power').innerHTML = '<b>Moce:</b> '+infoHero.power.substr(0,100)+'...';showElement($('power'));}
		    	 	else {disableElement($('power'));}
	//		   	$('linkCat').innerHTML 	= (infoHero.cid) ?  '<a href="http://www.marvelcomics.pl/index.php?cmd=showCatalog&cat='+infoHero.cid+'"><b>Katalog</b></a>' : '';alert('aaaaaaaaaaaaa');
	//	   		$('linkBios').innerHTML = (infoHero.bid) ?  '<a href="http://www.marvelcomics.pl/index.php?cmd=showBios&bio='+infoHero.bid+'"><b>Bios</b></a>' : '';
		   		
				var toSourceLink;
		   		if(!infoHero.bid){
		   			toSourceLink = 'c'+infoHero.cid;
		   		} else {
		   			toSourceLink = 'b'+infoHero.bid;
		   		}
		   		if(!$(infoHero.sname).events["onclick"] != 'undefined'){
		   			AddEvent($(infoHero.sname), "click", function(event) {linkToSource(toSourceLink)});
		   		}   
		   		 			
    		} else {
    			$(infoHero.sname).className = 'noCloudLink';
    		}
    	} else {
    		resLoadingObj.style.display = 'none';
    		if(resContenerObj.style.display == 'none'){
    			$('resNoResponse').style.display = 'block';
    		}
//    		$('response').style.display = 'none';
//    		$('resNoResponse').style.display = 'none';
// 			$(infoHero.name).className = 'noCloudLink';
    		return 0;
    	}
    	
    }	
	if(sendAnswerTimeout){
		clearTimeout(sendAnswerTimeout);
	}
	clearTimeout(resTimeout);
	if(activeCloud) $(activeCloud).className = 'noCloudLink';
	activeCloud = object.id;
		
/*********** stare linkowanie start	**************/	
	if(objSpan.id.substr(0,2) == '__'){
		var value = objSpan.id.substr(2);
	} else {
		var value = objSpan.innerHTML;
	}
/*********** stare linkowanie end ************/	

	objSpan.className = 'cloudMouseOver';
	
	var infoContener = $('response');
	var infoContenerImg = $('imgHero');
	try {
		if(infoContener.style.display == 'block'){
			infoContener.style.display = 'none';
			infoContenerImg.src = '';
		}	
		// sprawdzamy czy obiekt miesci sie w oknie
		if(e.pageX+200 >= window.innerWidth){
			infoContener.style.left = (-425+window.innerWidth)+'px'; 
		} else if(e.pageX-220 < 0) {
			infoContener.style.left = '20px'; 
		} else {
			infoContener.style.left = (e.pageX-220)+'px';			 
		}
		infoContener.style.top = (e.pageY+20)+'px';		
	} catch (err){
		// sprawdzamy czy obiekt miesci sie w oknie
		if(e.clientX+200 >= document.body.offsetWidth){
			infoContener.style.left = (-435+document.body.offsetWidth)+'px'; 
		} else if(e.clientX-220 < 0) {
			infoContener.style.left = '20px'; 
		} else {
			infoContener.style.left = (e.clientX-220);		 
		}		
		if(document.documentElement.scrollTop != 0){
			infoContener.style.top = (document.documentElement.scrollTop + e.clientY+20);	
		} else {
			infoContener.style.top = (document.body.scrollTop + e.clientY+20);	
		}

	}
	
//	var inCache = cacheT.remove(objSpan.id)
	var fromCache = cacheT.get(objSpan.id)
	if(fromCache){
		fromCache = eval('('+fromCache+')');
		var d = new Date().getTime()/1000;
		if(fromCache.timeToCache && fromCache.timeToCache < parseInt(d)){
			var value = objSpan.id.substr(2);	
			req.getJSON = true;
	    	req.AddParam('name',value);
	    	sendAnswerTimeout = true;
	    	sendAnswerTimeout = setTimeout(function(){req.Send("index.php?cmd=getHeroInfo")},300);				
		} else {
			req.OnSuccess(fromCache);
		}
	} else {
		var value = objSpan.id.substr(2);	
		req.getJSON = true;
    	req.AddParam('name',value);
    	sendAnswerTimeout = true;
    	sendAnswerTimeout = setTimeout(function(){req.Send("index.php?cmd=getHeroInfo")},300);		
	}
}

function closeCloud2(object){
	if(object) {
		object.className = 'noCloudLink';
		if($('response').style.display == 'block'){
			resTimeout = setTimeout(function(){mint.fx.Style("response", "opacity", 95, 0, 10, 300);$('response').style.display = 'none';},1);
		}		
	} else {
		if($('response').style.display == 'block'){
			mint.fx.Style("response", "opacity", 95, 0, 10, 300);
			$('response').style.display = 'none';
		}
	}
}





function cloud(e,object,option){
	var onMouseOver = true;
	$('onMouseOver').value = true;
	
	var objSpan = object
	var req = mint.Request();
	req.OnLoading = function() { 
		$('resContener').style.display = 'none';
		$('resNoResponse').style.display = 'none';
		$('resLoading').style.display = 'block';
		var response = $('response');
		response.style.display = 'block';	
		response.style.opacity = 50;
//		response.style.width = 'auto';
		response.style.textAlign = 'center';
		sendAnswerInterval = setInterval(function(){
								if($('onMouseOver').value == 'false'){
									closeCloud();
									clearInterval(sendAnswerInterval);
								}
							},200);
	}
	req.OnSuccess = function(fromCache) {
		if($('onMouseOver').value == 'true'){
			clearTimeout(resTimeout);	
			clearTimeout(resTimeoutHidden);	
			var responseObj = $('response');
			var resContenerObj = $('resContener');
			var resLoadingObj = $('resLoading');
			
	    	if(fromCache){
	    		var infoHero = fromCache;
	    	} else {
	    		var infoHero = this.responseJSON;
	    		if(infoHero.cid){
	    			cacheT.save('__'+infoHero.cid,this.responseText);
	    		} else {
	    			cacheT.save(infoHero.sname,this.responseText);    			
	    		}    		
	    	}
	    	if(infoHero.name){	
	    		$('resNoResponse').style.display = 'none';
	    		if(infoHero.sname == activeCloud){ 
	    			$(infoHero.sname).className = 'cloudLink';
	    			resLoadingObj.style.display = 'none';
	    			resContenerObj.style.display = 'block';
		    		responseObj.style.display = 'block';
		    		responseObj.style.opacity = 0;
		    		responseObj.style.textAlign = 'left';
		    		mint.fx.Style("response", "opacity", 0, 95, 10, 300);
			    	$('imgHero').src = infoHero.imgName;
			    	$('imgHero').alt = infoHero.name;
		//	    	$('name').innerHTML 	= '<b>'+infoHero.name+'</b> <button onclick="$(\'response\').style.display = \'none\';">zamknij</button>';
					$('name').innerHTML 	= '<b>'+infoHero.name+'</b>'; // <button onclick="closeCloud();">zamknij</button>';
			    	if(infoHero.trueName){$('trueName').innerHTML = '<b>Imie i nazwisko:</b> '+infoHero.trueName;showElement($('trueName'));} 
			    		else {disableElement($('trueName'));}
			    	if(infoHero.nation){$('nation').innerHTML = '<b>Narodowość:</b> '+infoHero.nation;showElement($('nation'));} 
			    		else {disableElement($('nation'));}
			    	if(infoHero.pseudo){$('pseudo').innerHTML = '<b>Inne pseudonimy:</b>: '+infoHero.pseudo.substr(0,70)+'...';showElement($('pseudo'));} 
			    		else {disableElement($('pseudo'));}
			    	if(infoHero.classHero){$('class').innerHTML = '<b>Klasa:</b> '+infoHero.classHero;showElement($('class'));}
			    	 	else {disableElement($('class'));}
			    	 if(infoHero.first){$('first').innerHTML = '<b>Pierwsze pojawienie się:</b> '+infoHero.first;showElement($('first'));}
			    	 	else {disableElement($('first'));}
			    	 if(infoHero.desc){$('desc').innerHTML = '<b>Uwagi:</b> '+infoHero.desc.substr(0,200)+'...';showElement($('desc'));}
			    	 	else {disableElement($('desc'));}
			    	 if(infoHero.power){$('power').innerHTML = '<b>Moce:</b> '+infoHero.power.substr(0,100)+'...';showElement($('power'));}
			    	 	else {disableElement($('power'));}
		//		   	$('linkCat').innerHTML 	= (infoHero.cid) ?  '<a href="http://www.marvelcomics.pl/index.php?cmd=showCatalog&cat='+infoHero.cid+'"><b>Katalog</b></a>' : '';alert('aaaaaaaaaaaaa');
		//	   		$('linkBios').innerHTML = (infoHero.bid) ?  '<a href="http://www.marvelcomics.pl/index.php?cmd=showBios&bio='+infoHero.bid+'"><b>Bios</b></a>' : '';
			   		
					var toSourceLink;
			   		if(!infoHero.bid){
			   			toSourceLink = 'c'+infoHero.cid;
			   		} else {
			   			toSourceLink = 'b'+infoHero.bid;
			   		}
			   		if(!$(infoHero.sname).events["onclick"] != 'undefined'){
			   			AddEvent($(infoHero.sname), "click", function(event) {linkToSource(toSourceLink)});
			   		}   
			   		 			
	    		} else {
	    			$(infoHero.sname).className = 'noCloudLink';
	    		}
	    	} else {
	    		resLoadingObj.style.display = 'none';
	    		if(resContenerObj.style.display == 'none'){
	    			$('resNoResponse').style.display = 'block';
	    		}
	//    		$('response').style.display = 'none';
	//    		$('resNoResponse').style.display = 'none';
	// 			$(infoHero.name).className = 'noCloudLink';
	    		return 0;
	    	}
		} else {
			closeCloud();
		}
    }	
	if(sendAnswerTimeout){
		clearTimeout(sendAnswerTimeout);
	}
	clearTimeout(resTimeout);
	clearTimeout(resTimeoutHidden);
	if(activeCloud) $(activeCloud).className = 'noCloudLink';
	activeCloud = object.id;
		
/*********** stare linkowanie start	**************/	
	if(objSpan.id.substr(0,2) == '__'){
		var value = objSpan.id.substr(2);
	} else {
		var value = objSpan.innerHTML;
	}
/*********** stare linkowanie end ************/	

	objSpan.className = 'cloudMouseOver';
	
	var infoContener = $('response');
	var infoContenerImg = $('imgHero');
	try {
		if(infoContener.style.display == 'block'){
			infoContener.style.display = 'none';
			infoContenerImg.src = '';
		}	
		// sprawdzamy czy obiekt miesci sie w oknie
		if(e.pageX+200 >= window.innerWidth){
			infoContener.style.left = (-425+window.innerWidth)+'px'; 
		} else if(e.pageX-220 < 0) {
			infoContener.style.left = '20px'; 
		} else {
			infoContener.style.left = (e.pageX-220)+'px';			 
		}
		infoContener.style.top = (e.pageY+20)+'px';		
	} catch (err){
		// sprawdzamy czy obiekt miesci sie w oknie
		if(e.clientX+200 >= document.body.offsetWidth){
			infoContener.style.left = (-435+document.body.offsetWidth)+'px'; 
		} else if(e.clientX-220 < 0) {
			infoContener.style.left = '20px'; 
		} else {
			infoContener.style.left = (e.clientX-220);		 
		}		
		if(document.documentElement.scrollTop != 0){
			infoContener.style.top = (document.documentElement.scrollTop + e.clientY+20);	
		} else {
			infoContener.style.top = (document.body.scrollTop + e.clientY+20);	
		}

	}
	
//	var inCache = cacheT.remove(objSpan.id)
	var fromCache = cacheT.get(objSpan.id)
	if(fromCache){
		fromCache = eval('('+fromCache+')');
		var d = new Date().getTime()/1000;
		if(fromCache.timeToCache && fromCache.timeToCache < parseInt(d)){
			var value = objSpan.id.substr(2);	
			req.getJSON = true;
	    	req.AddParam('name',value);
	    	sendAnswerTimeout = true;
	    	sendAnswerTimeout = setTimeout(function(){req.Send("index.php?cmd=getHeroInfo")},500);				
		} else {
			req.OnSuccess(fromCache);
		}
	} else {
		var value = objSpan.id.substr(2);	
		req.getJSON = true;
    	req.AddParam('name',value);
    	sendAnswerTimeout = true;
    	sendAnswerTimeout = setTimeout(function(){req.Send("index.php?cmd=getHeroInfo")},500);		
	}
}

function closeCloud(object){
	try{
		if(object) {
			object.className = 'noCloudLink';
			if($('response').style.display == 'block'){
				resTimeout = setTimeout(function(){
						mint.fx.Style("response", "opacity", 95, 0, 25, 900);
						resTimeoutHidden = setTimeout(function(){$('response').style.display = 'none';},1000);},1000);	
			}
			onMouseOver = false;
			$('onMouseOver').value = false;
		} else {
			if($('response').style.display == 'block'){
				mint.fx.Style("response", "opacity", 95, 0, 10, 300);
				$('response').style.display = 'none';
			}
		}
	} catch(err){}
}












function linkToSource(toSourceLink){
	if(toSourceLink.substr(0,1) == 'c'){
		location.href = 'http://marvelcomics.pl/index.php?cmd=showCatalog&cat='+toSourceLink.substr(1);
	} else {
		location.href = 'http://marvelcomics.pl/index.php?cmd=showBios&bio='+toSourceLink.substr(1);
	}
}

function continueShow(){
	clearTimeout(resTimeout);
	$('response').style.opacity = 100;	
	$('response').style.display = 'block';
}


var func = {
	evalJSON : function(content){
		return eval(content);
	}
}

var widgets = {
	imgClouds : function(){ 
		var cloud = {
			resTimeout : null,
			showImgClouds : function(e,title){
				clearTimeout(this.resTimeout);
				var contener = $('miniCover');
				// wypozycjonowanie bloczka
				try {
					if(contener.style.display == 'block'){
						contener.style.display = 'none';
					}	
					contener.style.left = (e.pageX-65)+'px';
					contener.style.top = (e.pageY+20)+'px';		
				} catch (err){
					contener.style.left = (e.clientX-65);
					if(document.documentElement.scrollTop != 0){
						contener.style.top = (document.documentElement.scrollTop + e.clientY+20);	
					} else {
						contener.style.top = (document.body.scrollTop + e.clientY+20);	
					}
			
				}
				if(this.resTimeout == null){
					contener.style.opacity = 0;	
					contener.style.display = 'block';
					mint.fx.Style("miniCover", "opacity", 0, 95, 20, 600);
				} else {
					contener.style.opacity = 0;	
					contener.style.display = 'block';
					mint.fx.Style("miniCover", "opacity", 30, 95, 20, 200);
				}
				var reqParam = title.split('__');
				//alert(title);
				//$('coverView').src = 'index.php?cmd=getCover&name='+reqParam[0]+'&num='+reqParam[1];
				$('coverView').src = 'http://marvelcomics.pl/i/loading.gif';	
				$('coverView').src = 'http://marvelcomics.pl/stuff/covers/'+reqParam[0]+'/medium/'+reqParam[0]+'_'+reqParam[1]+'.jpg';

			},
			closeImgClouds : function(){				
				//this.resTimeout = setTimeout(function(){mint.fx.Style("miniCover", "opacity", 95, 0, 10, 500);},2000);
				this.resTimeout = setTimeout(function(){
					mint.fx.Style("miniCover", "opacity", 95, 0, 25, 1000);
					setTimeout(function(){$('miniCover').style.display = 'none';},1000)},1000);
			}
		}
		return cloud;
	},
	searchElements : function(){
		var search = {
		    sendAnswer : function(scmd,value){
		    	var req = mint.Request();
		    	req.getJSON = true;
		    	req.OnSuccess = function(){
					var response = this.responseJSON;
					var container = $('searchRes');
					container.innerHTML = '';
					if(response != ''){
						for(i in response){
//							container.innerHTML = container.innerHTML + '<div>'+response[i].name+'</div>';
							var divElem = document.createElement('div');
							divElem.setAttribute('id',response[i].idSearch);
							//divElem.id = response[i].idSearch;
							var divTextNode = document.createTextNode(response[i].name);
							divElem.appendChild(divTextNode);
							container.appendChild(divElem);
							AddEvent(divElem, "click", function(event) {$('str').value = this.innerHTML;
																		$('nameToShow').value = this.innerHTML;
																		$('strId').value = this.id;
																		$('searchRes').style.display = 'none';
																		$('searchRes').innerHTML = ''});
						}
						container.style.display = 'block';
					} else {
						container.style.display = 'none';
					}
		    	},
//		    	copyToInput : function(){
//		    		alert(value);
//		    	}			
		    	req.Send('index.php?cmd=search&scmd='+scmd+'&msg='+value); 
		    },
		    addNewElement : function(elemOne,elemTwo,elemThree,elemFour,elemFive){
		    	
		    	if(elemOne.value){
			    	var elemId = document.createElement('input');
			    	elemId.setAttribute('value',elemOne.value);
			    	elemId.setAttribute('name','catId[]');
			    	elemId.setAttribute('readonly','readonly');
			    	elemId.setAttribute('type','hidden');
			    	var elemName = document.createElement('input');
			    	elemName.setAttribute('value',elemTwo.value);
			    	elemName.setAttribute('name','catName[]');
			    	elemName.setAttribute('readonly','readonly');
			    	elemName.className = 'heroListForm';
			    	var elemNameToShow = document.createElement('input');
			    	elemNameToShow.setAttribute('value',elemThree.value);
			    	elemNameToShow.setAttribute('name','secName[]');
//			    	elemNameToShow.setAttribute('readonly','readonly');
			   		elemNameToShow.className = 'heroListForm';
			   		
			    	var elemHowRow = document.createElement('input');
			    	elemHowRow.setAttribute('value',elemFour.value);
			    	elemHowRow.setAttribute('name','howRow[]');
//			    	elemHowRow.setAttribute('readonly','readonly');
			   		elemHowRow.className = 'heroRadio';
			   					   		
			    	var delElement = document.createElement('a');
			    	delElement.href = 'javascript:void(0);';
			    	delElement.innerHTML = 'usuń';
			    	delElement.className = 'heroListDel';
			    	AddEvent(delElement, "click", function(event) {$('searchList').removeChild(divContainer);});
			    		 	
			    	var divContainer = document.createElement('div');
			    	divContainer.appendChild(elemId);
			    	divContainer.appendChild(elemName);
			    	divContainer.appendChild(elemNameToShow);
			    	divContainer.appendChild(elemHowRow);
			    	divContainer.appendChild(delElement);
			   
			    	
			    	var othersHeroes = $('othersHeroes').parentNode;
			    	othersHeroes.insertBefore($('searchList'),$('othersHeroes'));
			    	
			    	$('searchList').appendChild(divContainer);
			    	$('strId').value = '';
			    	$('str').value = '';
			    	$('nameToShow').value = '';
		    	} else {
		    		alert('Nie mozesz dodać pustego pola');
		    	}
		    }
		}
		return search;
	},
	sendForm : function(){
		var sForm = {
			send : function(id){
				var req = mint.Request();	
			    req.OnSuccess = function() {
			    	if(this.responseText.substr(0,2) == '1_'){
			    		$('strId').value = this.responseText.substr(2);
			    		$('str').value = $('CAT_Name').value;
			    		$('nameToShow').value = $('CAT_Name').value;
						$('newAddForm').style.display = 'none';
						$('optBackground').style.display = 'none';
			    	}
			        $("response").innerHTML = this.responseText;
		    	}
		    	req.SendForm(id);
			}		               
		}
		return sForm;
	}
}



/* to wywolanie dziala dobrze				
	mint.Request.getJSON = true;
	mint.Request("index.php?cmd=getCover&name=Cable & Deadpool #27",'miniCover',OnSuccess); 

	function OnSuccess () {
	//	alert('onSuccess');
	}
*/

iC = widgets.imgClouds();


function print_r(theObj){
if(theObj.constructor == Array ||
theObj.constructor == Object){
document.write("<ul>");
for(var p in theObj){
if(theObj[p].constructor == Array||
theObj[p].constructor == Object){
document.write("<li>["+p+"] => "+typeof(theObj)+"</li>");
document.write("<ul>");
print_r(theObj[p]);
document.write("</ul>");
} else {
document.write("<li>["+p+"] => "+theObj[p]+"</li>");
}
}
document.write("</ul>");
}
}
