/*

AJAX Plant JavaScript (PJS) libary
==========================

version:		0.1.0 RC1
author:			Dragan Lalos (rori), draganbl@gmail.com
copyright:		(c) Copyright by geeksolutions - Dragan Lalos


6.5.2007 - http://www.captain.at/howto-ajax-form-post-request.php (line: 21-55)

*/
function go(url) {
		if (url.charAt(0) == '/') location.href = url;
		else location.href = url;
	}
	
function PJS()
{
	
	
	//-- konstruktor ---------------------------------------------------------------------------
	
	this.request = false;
	
	// NON IE, regular XMLHTTP
	if(window.XMLHttpRequest) 
	{
		this.request = new XMLHttpRequest();
		if (this.request.overrideMimeType)
		{
			this.request.overrideMimeType('text/html');
		}
	}
	
	// IE 
	else if(window.ActiveXObject)
	{
		try 
		{
			this.request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		
		catch (e)
		{
			try 
			{
				this.request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
			catch (e) {}
		}
	}
	
	if ( !this.request ) 
	{
         alert('Plant Java Script error\n ErrorCode: 0x0001\n SystemMsg: Your browser doesn\'t support XMLHttp connection');
         return false;
	}
	//------------------------------------------------------------------------------------------
	
	
	
	
	//-- change (change some element (ID) content) ---------------------------------------------
	this.change = function(targetID, sourceUrl)
	{
	
		if( !this.request )
		{
			alert('Plant Java Script error\n ErrorCode: 0x0001\n SystemMsg: Your browser doesn\'t support XMLHttp connection');	
			return 0;
		}
		else
		{
			var req = this.request;
		}
		
		// loading
		document.getElementById(targetID).innerHTML = '<div style="color: #637814;"><img src="images/loading.gif"> loading...</div>';
		
		// XMLHttpRequest it's OK
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				if(req.status == 200)
				{
					data = req.responseText;
					document.getElementById(targetID).innerHTML = data;
				}
					
				else
				{
					document.getElementById(targetID).innerHTML = "Plant Java Script error\n ErrorCode: 0x0002\n SystemMsg: " + req.statusText;
				}
			}
		}
			
		req.open("GET", sourceUrl, true);
		req.send(null);
	}
	//------------------------------------------------------------------------------------------
	
	
	
	
	//-- do_submit -----------------------------------------------------------------------------
	this.do_submit = function(method, url, parameters, ret_el)
	{
		if( !this.request )
		{
			alert('Plant Java Script error\n ErrorCode: 0x0001\n SystemMsg: Yout browser doesn\'t support XMLHttp connection');	
			return 0;
		}
		else
		{
			var req = this.request;
		}
		
		if(!method) { method = 'GET'; }
		
		if(method == 'GET' || method == 'get')
		{
			req.open('GET', url + parameters, true);
			req.send(null);
		}
		
		if(method == 'POST' || method == 'post')
		{
			
			// u slucaju da postoji return element u njega ide output
			if(ret_el)
			{
				req.onreadystatechange = function()
				{
				if(req.readyState == 4)
					{
						if(req.status == 200)
						{
							data = req.responseText;
							if(ret_el != 0)
							{
								document.getElementById(ret_el).innerHTML = data;
							}
						}
							
						else
						{
							document.getElementById(ret_el).innerHTML = "Plant Java Script error\n ErrorCode: 0x0002\n SystemMsg: " + req.statusText;
						}
					}
				}
			}
			
			// nastavak forme
			req.open('POST', url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", parameters.length);
			req.setRequestHeader("Connection", "close");
			req.send(parameters);
		}
	}
	//------------------------------------------------------------------------------------------
	
		
	//-- form_submit ---------------------------------------------------------------------------
	this.form_submit = function(formName, action, method, return_element)
	{
		if(!method) { method = 'GET'; }
		
		
		
		// GET METHOD
		if(method == 'GET' || method == 'get')
		{
			// var medju_string = "&";
			var this_form = document.forms[formName];
			var parameters = '?js=1&submit=1';
			var el_num = this_form.elements.length;
			var i = 0;
			
			for(i = 0; i < el_num; i++)
			{
				// provjerava postojanje elementa - naziva
				if(this_form.elements[i].name)
				{
					// provjerava da li je element disejblovan
					if(this_form.elements[i].disabled == false)
					{

						// radio && checkbox
						if(this_form.elements[i].type == "checkbox" || this_form.elements[i].type == "CHECKBOX" || this_form.elements[i].type == "radio"|| this_form.elements[i].type == "RADIO")
						{
							if(this_form.elements[i].checked == true)
							{
								tmp_kobas = this_form.elements[i].name + '=' + this_form.elements[i].value;
								parameters = parameters +'&'+ tmp_kobas;
							}
							else
							{
								;
							}
						}

						// textarea, text, select, hidden, password
						else
						{
							tmp_kobas = this_form.elements[i].name + '=' + this_form.elements[i].value;
							parameters = parameters +'&'+ tmp_kobas;
						}
					}
				}
			}
			
			// do it
			this.do_submit(method, action, parameters);
			
		}
		
		// POST METHOD
		if(method == 'POST' || method == 'post')
		{
			var this_form = document.forms[formName];
			var parameters = '?js=1&submit=1';
			var el_num = this_form.elements.length;
			var i = 0;
			
			for(i = 0; i < el_num; i++)
			{
				// provjerava postojanje elementa - naziva
				if(this_form.elements[i].name)
				{
					// provjerava da li je element disejblovan
					if(this_form.elements[i].disabled == false)
					{

						// radio && checkbox
						if(this_form.elements[i].type == "checkbox" || this_form.elements[i].type == "CHECKBOX" || this_form.elements[i].type == "radio"|| this_form.elements[i].type == "RADIO")
						{
							if(this_form.elements[i].checked == true)
							{
								tmp_kobas = this_form.elements[i].name + '=' + encodeURI(this_form.elements[i].value);
								parameters = parameters +'&'+ tmp_kobas;
							}
							else
							{
								;
							}
						}

						// textarea, text, select, hidden, password
						else
						{
							tmp_kobas = this_form.elements[i].name + '=' + encodeURI(this_form.elements[i].value);
							parameters = parameters +'&'+ tmp_kobas;
						}
					}
				}
			}
		}
		
		this.do_submit(method, action, parameters, return_element);
		
	}
	//------------------------------------------------------------------------------------------
	


}
