//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);			
			}
	} 
	
//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();
					}
			}
	}
	
//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(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(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';
			}
	}

//create cookie
function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = '; expires='+date.toGMTString();
	} else {
		var expires = '';
	}
	
	document.cookie = name+'='+value+expires+'; path=/';
}

//read cookie
function readCookie(name) {
	var nameEQ = name + '=';
	var ca     = document.cookie.split(';');
	
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

//delete cookie
function eraseCookie(name) {
	createCookie(name, '', -1);
}	
	
/* -------------------- specific functions -------------------- */

//display definition
function displayDefinition(value)
	{
		Tip(value);
	}
	
//display definition
displayed = false;

function displayDetails(id)
	{
		var link_id = id + '_link';
		
		if (displayed == false)
			{
				//change display status
				displayed = true 
				
				//show div with details
				show(id);
				
				//modify link				
				document.getElementById(''+link_id+'').innerHTML = 'collapse<img src="http://www.petinsurancereviews.org/compare/images/en/arrow-up.gif" /></a>'
			}
		else
			{
				//change display status
				displayed = false 
				
				//hide div with details
				hide(id);
				
				//modify link				
				document.getElementById(''+link_id+'').innerHTML = 'expand<img src="http://www.petinsurancereviews.org/compare/images/en/arrow-down.gif" /></a>'
			}		
	}

//mark entry
function mark_this(entry)
	{
		var cookie  = 'compare';
		var action  = 'add';		
		var compare = readCookie(cookie);
		
		if (compare) {
			var old_array  = compare.split(',');
			var old_length = old_array.length
		}
		else {
			var old_length = 0;
		}
		
		var new_array = new Array();
		var j         = -1;
		
		for (i = 0; i < old_length; i++) {									
			if (old_array[i] != entry) {
				j++;
				new_array[j] = old_array[i];
			} else {
				action = 'remove';
			}
		}
		
		if (action == 'add') {
			j++;
			new_array[j] = entry;
		}
				
		if (new_array.length > 3) {
			var selected_entry = 'check-' + entry;
			document.getElementById(selected_entry).checked = '';
			alert ('No more than 3 plans can be selected for comparation');
		}
		else {
			var new_compare = new_array.join(',');
			createCookie(cookie, new_compare, 1);
		}
	}
		
//compare
function compare()
	{
		var cookie   = 'compare';
		var compare  = readCookie(cookie);

		if (compare) {
			var compare_array  = compare.split(',');
			var compare_length = compare_array.length
		}
		else {
			var compare_length = 0;
		}
		
		if (compare_length > 3) {
			alert ('No more than 3 plans can be selected for comparation');
		} else if (compare_length > 1) {			
			document.actions.action = 'http://www.petinsurancereviews.org/compare/insurance_view.php?action=compare';
			//document.actions.action.value = 'compare';
			document.actions.submit();				
		} else {
			alert ('Please select at least 2 plans for comparation');
		}	
	}
	
//sort function for 'list page' 
function re_sort(sort_by)
	{
		var c_direction = readCookie('c_direction');
			
		if (c_direction == 'ASC') {
				c_direction = 'DESC';
		}
		else {
			c_direction = 'ASC';
		}
		
		createCookie('c_direction', c_direction, 1);
		createCookie('c_order', sort_by, 1);
		document.actions.submit();		
	}	
