//call ajax script
function call_ajax(method, element_id, script_link, parameters)
	{
		var xmlHttp;
	
		try
			{
				// Firefox, Opera 8.0+, Safari
				xmlHttp = new XMLHttpRequest();
			}
		catch (e)
			{
				// Internet Explorer
				try
					{
						xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
					}
				catch (e)
					{
						try
							{
								xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
							}
						catch (e)
							{
								alert("Your browser does not support AJAX!");
								return false;
							}
					}
			}
		
		xmlHttp.onreadystatechange = function()
			{
				if(xmlHttp.readyState == 4)
					{
						var result = xmlHttp.responseText;
						
						if (!element_id)
							{
								alert (result);
							}
						else
							{
								document.getElementById(element_id).innerHTML = result;
							}
					}
			}
			
		if (method == 'post')
			{			
				xmlHttp.open('POST', script_link, true);
				xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlHttp.setRequestHeader("Content-length", parameters.length);
				xmlHttp.setRequestHeader("Connection", "close");		
				xmlHttp.send(parameters);
			}
		else
			{			
				xmlHttp.open('GET', script_link, true);
				xmlHttp.send(null);			
			}
	} 	

//set cookie 
function set_cookie(object, value) 
	{
		var expireDate  = new Date()
		var expstring   = expireDate.setDate(expireDate.getDate() + 5) //curent date  + 5 days
		document.cookie = object+'='+value+'; expires='+expireDate.toGMTString()+'; path=/'; //set cookie
	}	

//used to auto-start function on page load 	
function addLoadEvent(func) 
	{
		var oldonload = window.onload;
		if (typeof window.onload != 'function') 
			{
				window.onload = func;
			}
		else
			{
				window.onload = function()
					{
						if (oldonload)
							{
								oldonload();
							}
						func();
					}
			}
	}

//bookmark
function add_to_bookmark(url, title)
	{
		if (document.all)
			{
				window.external.AddFavorite(url, title);
			}
		else
			{
				alert('Press CTRL+D to bookmark page');
			}
	}
	
//open popup window
function open_popup(url, target, features) 
	{
		if (!features)
			{
				features = 'top=100, left=100, resizable=1, scrollbars=1, location=0, menubar=0, statusbar=0, titlebar=0, width=650, height=420';
			}
		
		var theWindow = window.open(url, target, features);
		theWindow.focus();		
	}

//submit form function to specific action
function submit_form(form_id, action)
	{
		var form = document.getElementById(form_id);						
		if (action)
			{
				form.action.value = action
			}
		form.submit();
	}
	
//show / hide div 
function toggleDiv(id, flagit, flagclass) 
	{
		if (flagit == '1')
			{			
				divs = document.getElementsByTagName("div");
				
				for (x = 0; x < divs.length; x++) 
					{
						if (flagclass == divs[x].className) 
							{
								var sid = divs[x].getAttribute("id");						
								
								if (document.layers) document.layers[''+sid+''].visibility = 'hide'
								else if (document.all) document.all[''+sid+''].style.visibility = 'hidden'
								else if (document.getElementById) document.getElementById(''+sid+'').style.visibility = 'hidden'						
							}
					}
								
				if (document.layers) document.layers[''+id+''].visibility = 'show'
				else if (document.all) document.all[''+id+''].style.visibility = 'visible'
				else if (document.getElementById) document.getElementById(''+id+'').style.visibility = 'visible'	
			}
		else if (flagit == '0')
			{
				if (document.layers) document.layers[''+id+''].visibility = 'hide'
				else if (document.all) document.all[''+id+''].style.visibility = 'hidden'
				else if (document.getElementById) document.getElementById(''+id+'').style.visibility = 'hidden'
			}
	}	
	
//show element based on id 
function show_element(object) 
	{
		if (document.getElementById) 
			{
				document.getElementById(object).style.visibility = 'visible';
				document.getElementById(object).style.display = 'block';
			}
		else if (document.layers && document.layers[object]) 
			{
				document.layers[object].visibility = 'visible';
				document.layers[object].display = 'block';
			}
		else if (document.all) 
			{
				document.all[object].style.visibility = 'visible';
				document.all[object].style.display = 'block';
			}
	}

//hide element based on id 
function hide_element(object) 
	{
		if (document.getElementById) 
			{
				document.getElementById(object).style.visibility = 'hidden';
				document.getElementById(object).style.display = 'none';
			}
		else if (document.layers && document.layers[object]) 
			{
				document.layers[object].visibility = 'hidden';
				document.layers[object].display = 'none';
			}
		else if (document.all) 
			{
				document.all[object].style.visibility = 'hidden';
				document.all[object].style.display = 'none';
			}
	}

//change html element opacity from css value to 100
function fadeText(element, opacity)
	{
		var obj = document.getElementById(element);
		
		if (opacity < 100)	
			{
				//variables
				var new_opacity = opacity + 25;
				
				//set new opacity
				setOpacity(obj, new_opacity);
			}

		if (new_opacity < 100)
			{		
				//reinitiate fadeText
				setTimeout(function() {fadeText(element, new_opacity)}, 25);
			}		
	}
		
//set the opacity of an element to a specified value
function setOpacity(obj, o) {

    obj.style.opacity = (o / 100);
    obj.style.MozOpacity = (o / 100);
    obj.style.KhtmlOpacity = (o / 100);
    obj.style.filter = 'alpha(opacity=' + o + ')';
}
	
// -------------------- specific functions -------------------- //

//display definition
function displayDefinition(value)
	{
		Tip(value);
	}
	
//select smile
function select_smile(emoticon)
	{
		document.comment_form.c_content.value += emoticon; 
		document.comment_form.c_content.scrollTop = document.comment_form.c_content.scrollHeight; 
		document.comment_form.c_content.focus();
	}
	
//character count
function charCount(field, show, limit) 
	{		
		if (document.getElementById(field).value.length > limit) {
			document.getElementById(field).value = document.getElementById(field).value.substring(0, limit);
		} else {
			var char_left = limit - document.getElementById(field).value.length;
			document.getElementById(show).innerHTML = char_left + ' characters left';
		}
	}

// -------------------- software list -------------------- //

//set direction for software list pages
function set_sl_direction(sort_by) 
	{
		//set cookie value
		set_cookie('u_direction', sort_by);
		
		//refresh page
		location.reload(true);
	}

//set order for software list pages
function set_sl_order(order_by) 
	{
		//set cookie value
		set_cookie('u_order', order_by);
		
		//refresh page
		location.reload(true);
	}	

// -------------------- software page -------------------- //

//show tab description
function show_description()
	{
		hide_element('tab_images');
		show_element('tab_description');		
	}

//show tab images	
function show_images()
	{
		hide_element('tab_description');
		show_element('tab_images');	
	}
	
// -------------------- member panel -------------------- //

//sort function for 'list' pages
function re_sort(sort_by)
	{
		if (document.actions.s_direction.value == 'ASC')
			{
				document.actions.s_direction.value = 'DESC';
			}
		else
			{
				document.actions.s_direction.value = 'ASC';
			}     
		document.actions.s_order.value = sort_by;	
		document.actions.page.value = 1;
		document.actions.submit();
	}

//change page number function for 'list' pages	
function set_page(page_value)
	{
		document.actions.show_error.value = '';
		document.actions.page.value = page_value;
		document.actions.submit();
	}

//apply filter function for 'list' pages				
function apply_filter()
	{
		document.actions.page.value = 1;
		document.actions.submit();
	}

//set action function for 'list' pages - single entry
function set_action(action, message, id)
	{
		message = message + '? Press OK to continue';
		if(confirm(message)) 
			{ 
				document.actions.ident.value  = id;
				document.actions.action.value = action;
				document.actions.submit();
			}	
	}
		
// -------------------- settings -------------------- //	

//addthis settings
var addthis_pub        = "bamse";
var addthis_brand      = "Softbull.com";
var addthis_options    = 'favorites, google, digg, facebook, twitter, myspace, live, myaol, linkedin, more';
var addthis_offset_top = -15;