/**
 * AJAX functions
 *
 * Funkcije za asinhrono branje podatkov iz streznika.
 * Narejeno z rahlo pomocjo ratkota
 *
 * @author benjamin.povirk@gmail.com
 */


/**
 * Funkcija vrne objekt, katerega id podamo kot parameter.
 *
 * @param string id id objekta, ki ga poiscemo med elementi HTML strani.
 */
function getById(id) {
	if (document.getElementById)
		return document.getElementById(id);
	return document.all[id];
}


/**
 * Funkcija vrne XMLHttpRequest objekt, ki izvede AJAX
 */
function getRPCObject() {
	var req;
	if (window.XMLHttpRequest)
		req = new XMLHttpRequest();
	else if (window.ActiveXObject)
		req = new ActiveXObject("Microsoft.XMLHTTP");
	return req;
}


/**
 * Funkcija poklice XMLHttpRequest objekt in nastavi katera funkcija se bo klicala, ko XMLHttpRequest dobi podatke
 *
 * @param string method POST ali GET
 * @param string URL, ki se poklice
 * @param string data podatki, ki se posljejo, ce gre request rpeko POST metode (null za GET)
 * @param function procRequestFunct pointer na funkcijo, ki naj se poklice, ko XMLHttpRequest dobi podatke
 */
function loadXMLDoc( method, url, data, procRequestFunct ) {

	req = getRPCObject();

	if(!req)
		return false;

	req.onreadystatechange = procRequestFunct;
	req.open(method, url, true);

//        req.setRequestHeader("Content-Type", "text/html; charset=ISO-8859-2");

	if (data != null) {
		req.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8' );
		req.send( data );
	} else {
		req.send('');
	}

	return req;
}


/**
 * Funkcija vrne:
 *      0: XMLHttpRequest se ni dobil podatkov,
 *      1: XMLHttpRequest je dobil podatke (200 ali 404 je status serverja),
 *     -1: server ni vrnil 200 ali 404
 */
function processReqChange(req) {

	if (!req)
		return 0;

	if (req.readyState == 4) {
		// only if "OK"
		if ((req.status == 200) || (req.status == 404)) {
			return 1; // it's safe now go ahead
		} else {
			return -1;
		}
	}

	return 0;
}


/**
 * Funkcija pregleda responseText, in iz njega izlusci vso javascript kodo. najdeno
 *      kodo nato izvede preko eval() funkcije.
 *
 * @param string responseText Tekst, v katerem iscemo javascript
 */
function ajax_javascript(responseText) {
	var ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:</script>)';

	var match    = new RegExp(ScriptFragment, 'img');
	var scripts  = responseText.match(match);

	if(scripts) {
		var js  = '';
		var tmp = '';
		for(var s = 0; s < scripts.length; s++) {
			var match = new RegExp(ScriptFragment, 'im');
			var tmp = scripts[s].match(match)[1];

			if (tmp.indexOf('banner_show') == -1)
				js += tmp;
		}

	       eval(js);
	}
}

/**
 * Funkcija poslje na server geslo in novo geslo uporabnika.
 *
 * Podatke dobimo direktno iz forme za posiljanje gesla
 */
function user_change_password(user_id) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
	var url        = '/bin/user_change_password.php';
	var user_id 	= user_id;
	var pwd1       	= document.change_user_password.pwd1.value;
	var pwd2       	= document.change_user_password.pwd2.value;
		var data = 'user_id=' + user_id + '&pwd1=' + pwd1 + '&pwd2=' + pwd2;

		var alert_msg = getById('rpc_msg_chpass');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Pošiljanje podatkov ...';
		//ga pokazem ker je po def hidden
		alert_msg.style.display='block';
		opacity('rpc_msg_chpass', 100, 0, 1600);

	var func = function() {
			if (processReqChange(req)) {
					alert_msg.innerHTML = req.responseText;
					opacity('rpc_msg_chpass', 0, 100, 1600);
					//spremenim cursor nazaj
					var cur = curchange("default");
			}
	   }

	var req = loadXMLDoc( 'POST', url, data, func );
		clear_fields(gesli);
}

/**
 * Funkcija poslje na server zadevo in text uporabnika, ki se tam pošlje na mail.
 *
 * Podatke dobimo direktno iz forme za posiljanje
 */
function user_mail_send() {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/user_mail_send.php';
	var contact_subject	= document.user_contact.contact_subject.value;
	var contact_text   	= document.user_contact.contact_text.value;
	var contact_email  	= document.user_contact.contact_email.value;
		var data = '&contact_subject=' + contact_subject + '&contact_text=' + contact_text + '&contact_email=' + contact_email;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('rpc_msg_contact');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Pošiljam sporočilo ...';
		//ga pokazem ker je po def hidden
		alert_msg.style.display='block';
		opacity('rpc_msg_contact', 100, 0, 1600);

		var func = function() {
			if (processReqChange(req)) {
					alert_msg.innerHTML = req.responseText;
					opacity('rpc_msg_contact', 0, 100, 1600);
					//spremenim cursor nazaj
					var cur = curchange("default");


			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}

/**
 * Funkcija poslje na server zadevo in text uporabnika, ki se tam pošlje na mail.
 *
 * Podatke dobimo direktno iz forme za posiljanje
 */
function search_site() {
	//kje se izvede php, kaj za ene parametre nesem
	var url = 'bin/search_site.php';
	var searchlang	= document.search.searchlang.value;
	var searchbar	= document.search.searchbar.value;
	var searchnews	= document.search.searchnews.checked;
	var searchnotes	= document.search.searchnotes.checked;

	//ce je vse odkljukano
	if ( searchnews == false && searchnotes == false )
		return false;

	//spremenim cursor na wait
	var cur = curchange("wait");

	var data = '&searchlang=' + searchlang + '&searchbar=' + searchbar + '&searchnews=' + searchnews + '&searchnotes=' + searchnotes;

	//kam vpisujem dobljene podatke
	var alert_msg = getById('searchresult');
	if ( !alert_msg)
		return false;

	alert_msg.innerHTML = '<center><img src="images/site/ajax-loader.gif" alt="" border="" /><br />iščem ...</center>';
		//ga pokazem ker je po def hidden
		alert_msg.style.display='block';

		var func = function() {
			if (processReqChange(req)) {
					alert_msg.innerHTML = req.responseText;
					//spremenim cursor nazaj
					var cur = curchange("default");


			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}


/**
 * Funkcija poslje na server username in email uporabnika, tam se preverita in potem se pošlje novo geslo.
 *
 * Podatke dobimo direktno iz forme za posiljanje
 */
function user_password_forgoten() {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/user_send_new_password.php';
	var user_username	= document.login.u_ime.value;
	var user_email   	= document.login.geslo.value;
		var data = 'user_username=' + user_username + '&user_email=' + user_email;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('alert_msg');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Pošiljam novo geslo ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );

}


//funkcije za ...

/**
 * Funkcija poslje na server drugi naslov za dostavo.
 *
 * Podatke dobimo direktno iz forme za posiljanje
 */
function user_add_address(user_id,action) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
	var url         = '/bin/user_add_address.php';
	var user_id 	= user_id;
	var name2		= document.change_user_password.name2.value;
	var address2	= document.change_user_password.address2.value;
	var post2   	= document.change_user_password.post2.value;
		var data = 'action=' + action + '&user_id=' + user_id + '&name2=' + name2 + '&address2=' + address2 + '&post2=' + post2;
		if (action=='del') {
		input_box=confirm("Želite izbrisati drugi naslov?");
			if (input_box!=true) {
				//if not ok
				var cur = curchange("default");
				return false;
			}
		}

		var alert_msg = getById('rpc_msg_chaddress2');
		if ( !alert_msg)
		return false;

		alert_msg.innerHTML = 'Pošiljanje podatkov ...';
		//ga pokazem ker je po def hidden
		alert_msg.style.display='block';
		opacity('rpc_msg_chaddress2', 100, 0, 1600);


			var func = function() {

				if (processReqChange(req)) {
						alert_msg.innerHTML = req.responseText;
						opacity('rpc_msg_chaddress2', 0, 100, 1600);
						//spremenim cursor nazaj
						var cur = curchange("default");
				}
		}

	var req = loadXMLDoc( 'POST', url, data, func );
		if (action=='del')
			clear_fields(naslov2);
}

//galerije...........................................
function fotogalerija(num, name) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/open_photogallery.php';
		var num = num;
		var name = name;
		var data = 'gallery_group=' + num;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('galerija');
		if ( !alert_msg)
		return false;

		var alert_msg2 = getById('poem');
		if ( !alert_msg2)
		return false;

	alert_msg.innerHTML = 'Odpiram galerijo ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					alert_msg2.innerHTML = "<div class='group_name'>FOTOGALERIJA :: " + name + "</div>";
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );

}

//galerije...........................................
function fotogalerija2(num, name) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/open_photogallery2.php';
		var num = num;
		var name = name;
		var data = 'gallery_group=' + num;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('galerija');
		if ( !alert_msg)
		return false;

		var alert_msg2 = getById('poem');
		if ( !alert_msg2)
		return false;

	alert_msg.innerHTML = 'Odpiram galerijo ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					alert_msg2.innerHTML = "<div class='group_name'>VIDEOGALERIJA :: " + name + "</div>";
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );

}

function show_media(path) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/show_media.php';
		var path = path;
		var data = 'path=' + path;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('show_media');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Odpiram sliko ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}

function show_title(path) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/show_title.php';
		var path = path;
		var data = 'path=' + path;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('show_title');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Nalagam opis ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}

/**
 * Funkcija poslje na server povpraševanje uporabnika
 *
 * Podatke dobimo direktno iz forme za posiljanje
 */
function user_buyrequest_send() {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/user_buyrequest_send.php';
		var spol	= document.user_contact.spol.value;
		var starost	= document.user_contact.starost.value;
		var znanje   	= document.user_contact.znanje.value;
		var email  	= document.user_contact.email.value;
		var data = '&spol=' + spol + '&starost=' + starost + '&znanje=' + znanje + '&email=' + email;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('rpc_msg_contact');
		if ( !alert_msg)
			return false;

	alert_msg.innerHTML = 'Pošiljam povpraševenje ...';
		//ga pokazem ker je po def hidden
		alert_msg.style.display='block';
		opacity('rpc_msg_contact', 100, 0, 1600);

		var func = function() {
			if (processReqChange(req)) {
					alert_msg.innerHTML = req.responseText;
					opacity('rpc_msg_contact', 0, 100, 1600);
					//spremenim cursor nazaj
					var cur = curchange("default");


			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}


function show_navigation(path, group_id, file) {
		//spremenim cursor na wait
		var cur = curchange("wait");

		//kje se izvede php, kaj za ene parametre nesem
		var url = 'bin/show_navigation.php';
		var path = path;
		var group_id = group_id;
		var file = file;
		var data = 'path=' + path + '&group_id=' + group_id + '&file=' + file;

		//kam vpisujem dobljene podatke
		var alert_msg = getById('show_navigation');
		if ( !alert_msg)
		return false;

	alert_msg.innerHTML = 'Odpiram navigacijo ...';

		var func = function() {
			if (processReqChange(req)) {

					alert_msg.innerHTML = req.responseText;
					//spremenim cursor nazaj
					var cur = curchange("default");

			}
	   }

       var req = loadXMLDoc( 'POST', url, data, func );
}

