var curWidth = 0;
var curHeight  = 0;
var maxWidth = 400;
var maxHeight = 350;
var maxSteps = 50;
var image = null;
var siteTitle = null;
var siteURL = null;
var minusFlag = 0;

function makeDiv(evt){
	if (evt.pageX) {
		var x = evt.pageX;
	} else {
		var x = evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	}
	if (evt.pageY){
		var y = evt.pageY;
	} else {
		var y = evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	}
	if (x + maxWidth > get_window_width()){
		minusFlag = 1;
		x -= 10;
	} else {
		minusFlag = 0;
		x += 10;
	}
	y += 10;
	
	
	//var div = document.createElement ('div');
	//document.body.appendChild (div);
	var div = document.getElementById('siteDisplay');
	div.style.width='0px';
	div.style.height='0px';
	div.style.display = 'block';
	div.innerHTML = '';
	//div.setAttribute ('style','width:20px;padding-left:10px;height:20px;background-color:white;border-style:solid;position:absolute;z-index:10;');
	//div.setAttribute ('id','siteDisplay');
	div.style.top = y + 'px';

	div.style.left = x + 'px';
	curWidth = 0;
	curHeight = 0;
	setTimeout('growDiv()',1);
	
}
	
function growDiv(){
	var growX = maxWidth / maxSteps;
	var growY = maxHeight / maxSteps;
	
	if (curWidth < maxWidth){
		var div = document.getElementById('siteDisplay');
		if (!div){
			return;
		}
		curWidth += growX;
		curHeight += growY;
		if (minusFlag)
			div.style.left  =  (parseInt (div.style.left) - growX) + 'px';
		div.style.width = curWidth + 'px';
		div.style.height = curHeight + 'px';
		setTimeout ('growDiv()',1);
	} else {
		var w = image.width;
		
		image.style.width = (maxWidth) + 'px';
		image.style.height = image.height * (maxWidth / w);
		var div = document.getElementById('siteDisplay');
		div.appendChild (image);
		
	}
}
	
function startDiv(evt,title,url){
	image = new Image ();
	image.src = './portfolio_image.php?title=' + urlencode(title) + '&width=' + urlencode(maxWidth);
	maxHeight = image.height * (maxWidth / image.width);
	siteTitle = title;
	siteURL = url;
	makeDiv(evt);
	
	return true;
}

function preLoad (title){
	image = new Image ();
	image.src = './portfolio_image.php?title=' + urlencode(title) + '&width=' + urlencode(maxWidth);
}

function killDiv(){
	document.getElementById('siteDisplay').style.display='none';
	document.getElementById('siteDisplay').innerHTML = '';
	return true;
}

function moveDiv (evt){
	
	var x=mouseX(evt);
	var y=mouseY(evt);
	
	
	if (!document.getElementById('siteDisplay'))
		return;
	if (minusFlag)
		x -= curWidth + 10;
	if (x + maxWidth > (get_window_width() + document.documentElement.scrollWidth) - 10)
		x = ((get_window_width() + document.documentElement.scrollWidth) - 10) - maxWidth;
	if (y + maxHeight > (get_window_height() + document.documentElement.scrollTop) - 10)
		y = ((get_window_height() + document.documentElement.scrollTop) - 10) - maxHeight; 
	if (minusFlag)
		document.getElementById('siteDisplay').style.left = x - 10 + 'px';	
	else
		document.getElementById('siteDisplay').style.left = x + 10 + 'px';
	document.getElementById('siteDisplay').style.top = y + 10 + 'px';
	
	return true;
}

function mouseX(evt) {
if (evt.pageX) return evt.pageX;
else if (evt.clientX)
   return evt.clientX + (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else return null;
}
function mouseY(evt) {
if (evt.pageY) return evt.pageY;
else if (evt.clientY)
   return evt.clientY + (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else return null;
}



function urlencode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // %          note 1: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
                             
    var histogram = {}, unicodeStr='', hexEscStr='';
    var ret = (str+'').toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urldecode.
    histogram["'"]   = '%27';
    histogram['(']   = '%28';
    histogram[')']   = '%29';
    histogram['*']   = '%2A';
    histogram['~']   = '%7E';
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    histogram['\u00DC'] = '%DC';
    histogram['\u00FC'] = '%FC';
    histogram['\u00C4'] = '%D4';
    histogram['\u00E4'] = '%E4';
    histogram['\u00D6'] = '%D6';
    histogram['\u00F6'] = '%F6';
    histogram['\u00DF'] = '%DF';
    histogram['\u20AC'] = '%80';
    histogram['\u0081'] = '%81';
    histogram['\u201A'] = '%82';
    histogram['\u0192'] = '%83';
    histogram['\u201E'] = '%84';
    histogram['\u2026'] = '%85';
    histogram['\u2020'] = '%86';
    histogram['\u2021'] = '%87';
    histogram['\u02C6'] = '%88';
    histogram['\u2030'] = '%89';
    histogram['\u0160'] = '%8A';
    histogram['\u2039'] = '%8B';
    histogram['\u0152'] = '%8C';
    histogram['\u008D'] = '%8D';
    histogram['\u017D'] = '%8E';
    histogram['\u008F'] = '%8F';
    histogram['\u0090'] = '%90';
    histogram['\u2018'] = '%91';
    histogram['\u2019'] = '%92';
    histogram['\u201C'] = '%93';
    histogram['\u201D'] = '%94';
    histogram['\u2022'] = '%95';
    histogram['\u2013'] = '%96';
    histogram['\u2014'] = '%97';
    histogram['\u02DC'] = '%98';
    histogram['\u2122'] = '%99';
    histogram['\u0161'] = '%9A';
    histogram['\u203A'] = '%9B';
    histogram['\u0153'] = '%9C';
    histogram['\u009D'] = '%9D';
    histogram['\u017E'] = '%9E';
    histogram['\u0178'] = '%9F';
    
    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);
 
    for (unicodeStr in histogram) {
        hexEscStr = histogram[unicodeStr];
        ret = replacer(unicodeStr, hexEscStr, ret); // Custom replace. No regexing
    }
    
    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
}

function htmlentities(texto){
    //by Micox - elmicoxcodes.blogspot.com - www.ievolutionweb.com
    var i,carac,letra,novo='';
    for(i=0;i<texto.length;i++){
        carac = texto.charCodeAt(i);
        if( (carac > 47 && carac < 58) || (carac > 62 && carac < 127) ){
            //se for numero ou letra normal
            novo += texto.substr (i,1);
        }else{
            novo += "&#" + carac + ";";
        }
    }
    return novo;
}


function imageDetails(){
	killDiv();
	lightDisplay (get_window_width() - 100,get_window_height() - 50);
	document.getElementById('light_sub_label').innerHTML = siteTitle;
	image.style.width='550px';
	document.getElementById('light_sub_action').innerHTML = "<table><tr valign=\"top\"><td><img src='./portfolio_image.php?title=" + urlencode(siteTitle) + "' alt=\"Site Image\" style=\"margin:0px auto\" /></td><td></p><p style=\"text-align:center\"><b>URL:</b> " + htmlentities(siteURL) + "</p><div id=\"portfolio_desc\" style=\"background-color:#e6feff;padding:10px 10px 10px 10px;text-align:justify\"></div><p style=\"text-align:center\"><a href=\"" + siteURL + "\" target=\"_blank\">Visit Site</a></p><p style=\"text-align\"><a href=\"javascript:lightBoxClear()\" />Close Detail Screen</a></p></td></tr></table>";
	
	send_http("./portfolio_desc.php?title=" + urlencode(siteTitle),'portfolio_desc');
}

function get_window_height(){
	if (typeof (window.innerHeight)=='number'){
		return window.innerHeight;
	}else{
		return document.documentElement.clientHeight;
	}
}
	
function get_window_width(){
	if (typeof(window.innerWidth)=='number')
		return window.innerWidth;
	else
		return document.documentElement.clientWidth;
}


		function getXmlObject(){
		  	var xmlHttp = null;
  			try{
				xmlHttp=new XMLHttpRequest();
    			} catch (e){
   				try{
   					xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		      		}catch (e){
 
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	       			}	
			}

    	
  		return xmlHttp;
 		}


		function send_http(url,div){	
			
			var ajax=getXmlObject();
			if (ajax==null){
				alert ("oops on get object");
			}	
			ajax.onreadystatechange=function(){ 
				getResponseHttp(ajax,div);
			}
			ajax.open ("GET",url,true);
			ajax.send(null);

		}
		
		function getResponseHttp(ajax,div){
			if (ajax.readyState==4){
				
				if (div!=null){
					//alert (ajax.responseText);
					document.getElementById(div).innerHTML=ajax.responseText;
					
				} else {
					var bucket=ajax.responseText;
					//alert (ajax.responseText);
				}
			}
		}

