//window.onerror=new Function('return true;');

var curProportions=new Array(64, 64);
var curIcon='';
var selectorOpened=false;
var allowHideSelector=false;
var allowHideSubscription=false;
var genImage='';
var imageTimeout=0;
var bodyShown=false;

var imageObj = new Array();

function changeClass(divId, c)
{
	if(document.getElementById(divId))
		document.getElementById(divId).className=c;
}

function resetProportions()
{
	document.getElementById('widthId').value=curProportions[0];
	document.getElementById('heightId').value=curProportions[1];
}

function swapSizes()
{
	var w=document.getElementById('widthId');
	var h=document.getElementById('heightId');
	var tW=w.value;
	w.value=h.value;
	h.value=tW;
}

function constrainProportions(prop, val)//prop->0=>width; prop->1=>height
{
	if(!isNaN(val) && val>0)
	{
		if(document.getElementById('proportionsId').checked)
		{
			if(prop)
			{
				h=val;
				w=parseInt(val)*(curProportions[0]/curProportions[1]);
			}
			else
			{
				w=val;
				h=parseInt(val)*(curProportions[1]/curProportions[0]);
			}
			document.getElementById('widthId').value=parseInt(w);
			document.getElementById('heightId').value=parseInt(h);
		}
	}
	else
	{
		document.getElementById('widthId').value='';
		document.getElementById('heightId').value='';
	}
}

function moveDown(divId)
{
	selectorOpened=true;
	if(document.getElementById(divId))
	{
		if(divId=='iconsDiv')
			document.getElementById(divId).className='icons_div vis';
		else if(divId=='typesDiv')
			document.getElementById(divId).className='types_div vis';
	}
}

function moveUp(divId)
{
	if(allowHideSelector)
	{
		selectorOpened=false;
		if(document.getElementById(divId))
			document.getElementById(divId).className='displaynone';
	}
}

function setType(t)
{
	document.getElementById('typeId').value=document.getElementById('typeDisplayId').innerHTML=t;
	if(t=='.JPEG' || t=='.BMP')
	{
		changeClass('transBackOverlay', 'overlay');
	}
	else
	{
		if(document.getElementById('transparentBackId1').checked)
			changeClass('backgroundOverlay', 'overlay');
		changeClass('transBackOverlay', 'displaynone');
	}
}

function selectIcon(pId)
{
	document.getElementById('iconId').value=iconsArr[pId][0];
	document.getElementById('iconPreviewDiv').innerHTML='<img src="/files/thumb/'+iconsArr[pId][1]+'" />';
	
	//document.getElementById('widthId').value=curProportions[0]=64;
	//document.getElementById('heightId').value=curProportions[1]=64;
	curIcon=pId;
	changeClass('iconsDiv', 'displaynone');
}


function generateIcon(download, foreColor, backColor, width, height, transparency, colorize, type)
{
	if(transparency)
		transparency=1;
	else
		transparency=0;
		
	if(colorize)
		colorize=1;
	else
		colorize=0;
	
	if(document.getElementById('proportionsId').checked)
		cProp=1;
	else
		cProp=0;
	
	
	var cont=true;
	if(!curIcon)
	{
		cont=false;
		document.getElementById('contentDiv2').innerHTML='<center><div class="err">'+texts[0]+'</center></div>';
	}
	else if(width>256 || width<5 || height>256 || height<5)
	{
		cont=false;
		document.getElementById('contentDiv2').innerHTML='<center><div class="err">'+texts[1]+'</center></div>';
	}

	if(cont)
	{
		/*if(transparency)
		t=1;
		else
		t=0;*/
		t=transparency;
		
		if(download)
		{
			window.frames['generatorFrame'].location.href='/generator.php?image='+curIcon+'&fore_color='+foreColor+'&back_color='+backColor+'&size='+width+'x'+height+'&transparency='+t+'&colorize='+colorize+'&type='+type+'&download&uncacher='+(Math.random()*100);
		}
		else
		{
			document.getElementById('mLoadingDiv2').innerHTML=texts[3]+'...';
			document.getElementById('contentDiv2').innerHTML='';
			
			//imageLoader('/classes/phpthumb/phpThumb.php?src=files/orig_gray');
			genImageLoader('/generator.php?image='+curIcon+'&fore_color='+foreColor+'&back_color='+backColor+'&size='+width+'x'+height+'&transparency='+t+'&colorize='+colorize+'&type='+type+'&uncacher='+(Math.random()*100), 'showImage(\''+foreColor+'\', \''+backColor+'\', \''+width+'\', \''+height+'\', '+transparency+', '+colorize+', \''+type+'\')');
			
			setSettingsCookie('settingsCookie', foreColor+'---'+backColor+'---'+width+'---'+height+'---'+t+'---'+colorize+'---'+type+'---'+cProp, 30);
		}
	}
}

function showImage(foreColor, backColor, width, height, transparency, colorize, type)
{
	var curDiv=document.getElementById('contentDiv2');
	curDiv.innerHTML='';
	curDiv.appendChild(genImage);
	curDiv.innerHTML='<center>'+curDiv.innerHTML+'</center>';
	curDiv.innerHTML+='<br /><br /><center><a href="#" class="download_button" title="Download" onclick="generateIcon(true, \''+foreColor+'\', \''+backColor+'\', \''+width+'\', \''+height+'\', '+transparency+', '+colorize+', \''+type+'\'); return false;"></a><br /><table border="0"><tr><td><div class="empty_href">'+words[0]+':&nbsp;&nbsp;&nbsp;</td><td><div id="fileSizeDiv" class="empty_href">'+words[1]+'</div></td></tr></table></div></center>';
	
	makeRequest('/file_size.php?image='+curIcon+'&fore_color='+foreColor+'&back_color='+backColor+'&size='+width+'x'+height+'&transparency='+transparency+'&colorize='+colorize+'&type='+type, 'showFileSize');
	
	document.getElementById('mLoadingDiv2').innerHTML='';
}

function showFileSize()
{
	if(document.getElementById('fileSizeDiv'))
	{
		fD=document.getElementById('fileSizeDiv');
		if(dataReturn=='0' || dataReturn=='')
			fD.innerHTML=words[2];
		else
		{
			var tR=dataReturn+' B (~'+Math.round((dataReturn/1024))+' KB)';
			fD.innerHTML=tR;
		}
	}
	else
		fD.innerHTML=words[2];
}

function validateSearch()
{
	var kw=document.forms.search_form.keywords.value;
	var errorDiv=document.getElementById('searchError');
	
	var reg = /^([A-Za-z0-9_\-\.\s])+$/;
	var reg2=/^([A-Za-z0-9_\-\.\s])*([\<\>\"\?\&\!\@\#\$\%\^\*\(\)\/\+\=])+$/;
	
	if(trimString(kw).length<3)
	{
		errorDiv.style.display='block';
		errorDiv.innerHTML=texts[4] ;
	}
	else if(reg2.test(kw))
	{
		errorDiv.style.display='block';
		errorDiv.innerHTML=texts[5];
	}
	else if(reg.test(kw)) 
	{
		errorDiv.style.display='none';
		location.href="/"+siteLang+"/search/"+kw;
	}
	else
	{
		errorDiv.style.display='none';
		location.href='/?lang='+siteLang+'&category=search&keywords='+kw;
	}
	
	//location.href="/"+siteLang+"/search/"+kw;
}

function trimString(s)
{
	return s.replace(/^\s+|\s+$/g,"");
}

function setSettingsCookie(name, value, expires)
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" );
}

function getSettingsCookie( checkName ) {
	var aAllCookies = document.cookie.split( ';' );
	var aTempCookie = '';
	var cookieName = '';
	var cookieValue = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < aAllCookies.length; i++ )
	{
		aTempCookie = aAllCookies[i].split( '=' );
		cookieName = aTempCookie[0].replace(/^\s+|\s+$/g, '');
		if ( cookieName == checkName )
		{
			b_cookie_found = true;
			if ( aTempCookie.length > 1 )
			{
				cookieValue = unescape( aTempCookie[1].replace(/^\s+|\s+$/g, '') );
			}
			
			if(cookieValue!='')
			{
				var cookieArr=cookieValue.split('---');
				
				curSelector='background';
				document.getElementById('backgroundId').value=cookieArr[1];
				document.getElementById('colorId').value=cookieArr[1]; 
				eventFirer(document.getElementById('colorId'), 'change');
				
				curSelector='foreground';
				document.getElementById('foregroundId').value=cookieArr[0];
				document.getElementById('colorId').value=cookieArr[0]; 
				eventFirer(document.getElementById('colorId'), 'change');
				
				document.getElementById('backgroundPreviewId').style.background='#'+cookieArr[1];
				
				if(cookieArr[7]=='1')
					document.getElementById('proportionsId').checked=true;
				else
					document.getElementById('proportionsId').checked=false;
				
				document.getElementById('widthId').value=cookieArr[2];
				document.getElementById('heightId').value=cookieArr[3];
				
				setType(cookieArr[6]);
				
				if(cookieArr[4]=='1')
					document.getElementById('transparentBackId1').click();
				else
					document.getElementById('transparentBackId0').click();
				if(cookieArr[5]=='1')
					document.getElementById('colorizeId1').click();
				else
					document.getElementById('colorizeId0').click();
					
			}
			break;
		}
		aTempCookie = null;
		cookieName = '';
	}
	if ( !b_cookie_found )
	{
		document.getElementById('widthId').value=curProportions[0];
		document.getElementById('heightId').value=curProportions[1];
	}
}

function clearForm()
{
	curSelector='background';
	document.getElementById('backgroundId').value='FFFFFF';
	document.getElementById('colorId').value='FFFFFF'; 
	eventFirer(document.getElementById('colorId'), 'change');
	
	curSelector='foreground';
	document.getElementById('foregroundId').value='#000000';
	document.getElementById('colorId').value='#000000'; 
	eventFirer(document.getElementById('colorId'), 'change');
	
	document.getElementById('backgroundPreviewId').style.background='#FFFFFF';
	document.getElementById('proportionsId').checked=true;
	document.getElementById('widthId').value='64';
	document.getElementById('heightId').value='64';
	setType('.GIF');
	document.getElementById('transparentBackId0').click();
	document.getElementById('colorizeId1').click();
	setSettingsCookie('settingsCookie', '', 0);
}

function showBody()
{
	if(!bodyShown)
	{
		document.getElementById('wholeLoading').style.display='none'; 
		document.getElementById('wholeContent').style.display='block';
		bodyShown=true;
	}
}

function reduceIconsTotal(iconId)
{
	var iT=document.getElementById('iconsTotal');
	iconsRemaining=parseInt(iT.innerHTML)-1;
	if(iconsRemaining<=0)
	{
		setTimeout('showBody()', 500);
	}
	else
		iT.innerHTML=iconsRemaining;
	
	document.getElementById('loadingInner').style.width=Math.ceil((200/iconsTotal)*(iconsTotal-iconsRemaining))+'px';
	document.getElementById('loadingPercentage').innerHTML=Math.ceil(((iconsTotal-iconsRemaining)*100)/iconsTotal)+'%';
}


function imageLoader(s, iconId)
{
	imageObj[iconId] = new Image();
	//imageObj[imageObj.length-1].id=id;

	imageObj[iconId].onload =  function(){reduceIconsTotal(iconId);};
	//genImage.onload=(function(bool){ return function (){reduceIconsTotal(this, iconId)}});
	//genImage.onerror=function (){imageTimeout=setTimeout(fun, 0)};
	imageObj[iconId].src=s;
	document.getElementById('iconsList').innerHTML+='<div class="inner_p_div" onclick="selectIcon('+iconId+')" id="iconDiv_'+iconId+'"></div>';
	document.getElementById('iconDiv_'+iconId).appendChild(imageObj[iconId]);
	//alert(document.getElementById('iconsList').innerHTML);
	//imageObj[imageObj.length-1]=genImage;
}

function genImageLoader(s, fun)
{
	clearTimeout(imageTimeout);
	imageTimeout=0;
	genImage = new Image();
	genImage.onload=function (){imageTimeout=setTimeout(fun, 0)};
	genImage.onerror=function (){imageTimeout=setTimeout(fun, 0)};
	genImage.src=s;
}