﻿

/*==========================================================
============================================================
Author			:	Igor Krstev, Arkus 
Created			:	2008.01.01
Description		:	Ajax Library 
Code			:	
Dependencies	: 
Libraries		: 
Includes		: 
Other			: 
Revisions		: 
============= Copyright	Arkus ©2008 ====================
=========================================================*/

/*  example of using

function btnDoAjaxRequest_onclick() 
{
        do_ajax_callback('some_page.aspx','',OnAjaxResponseCompleted);
}

function OnAjaxResponseCompleted(reponse)
{   
    alert(reponse);
}


*/

//Pravi callback do server
//callback_url                      - url do stranata na koja pravi callback
//post_data          - sodrzinata na requestot koj se praka kon server. preku nego moze da se prakaat parametri od klient do server
//on_callback_response_handler      - funkcija koja ke se povika koga ke dobie uspesen response od server. Funkcijata go prima response-ot os server kako parmetar

function do_ajax_callback(callback_url,post_data,on_callback_response_handler)
{
    var xml_http = get_xml_http();
    if(!xml_http)
        return;
        
    xml_http.onreadystatechange = function ()
    {
        if (xml_http.readyState == 4)
        {
            // only if "OK"
            if (xml_http.status == 200)
            {
                // result
                var response = xml_http.responseText;
                if(!IsNullOrUndefined(on_callback_response_handler))
                    on_callback_response_handler(response);
               
            } 
            else 
            {
                alert('Error on async request \n'+ xml_http.status +':'+ xml_http.statusText);
            }
        }
        
    }
	xml_http.open("POST", callback_url, true);
	
	var __ajax_post_data = '';
	
	if(post_data!= null)
	{
	    xml_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
	    __ajax_post_data = '__AJAXPOSTDATA='+post_data;
	}
	
    xml_http.send(__ajax_post_data);
}

function get_xml_http()
{
    var result = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) 
    {
    	try 
    	{
			result = new XMLHttpRequest();
        } catch(e) 
        {
			result = false;
        }
    // branch for IE/Windows ActiveX version
    } 
    else if(window.ActiveXObject) 
    {
       	try 
       	{
        	result = new ActiveXObject("Microsoft.XMLHTTP");
      	} catch(e) 
      	{
        	try 
        	{
          		result = new ActiveXObject("Msxml2.XMLHTTP");
        	} catch(e) 
        	{
          		result = false;
        	}
		}
    }    
    return result;
}
