// JavaScript Document
function initXMLHttpClient() {
var xmlhttp;
try {
    // Mozilla / Safari / IE7
    xmlhttp = new XMLHttpRequest();
    } catch (e) {
    // IE
      var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
                                  'MSXML2.XMLHTTP.4.0',
                                  'MSXML2.XMLHTTP.3.0',
                                  'MSXML2.XMLHTTP',
                                  'Microsoft.XMLHTTP' );
      var success = false;
      for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
          try {
                xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
                  success = true;
              } catch (e) {}
      }
        if (!success) {
            throw new Error('Unable to create XMLHttpRequest.');
        }
    }
  return xmlhttp;
}

  function HttpClient() { }
  HttpClient.prototype = {
      // type GET,POST passed to open
      requestType:'GET',
      // when set to true, async calls are made
      isAsync:false,

      // where an XMLHttpRequest instance is stored
      xmlhttp:false,

      // what is called when a successful async call is made
      callback:false,

      // what is called when send is called on XMLHttpRequest
      // set your own function to onSend to have a custom loading
     // effect
       onSend:function() {
         document.getElementById('HttpClientStatus').style.display =
                               'block';
     },

     // what is called when readyState 4 is reached, this is
     // called before your callback
      onload:function() {
          document.getElementById('HttpClientStatus').style.display =
                              'none';
      },

     // what is called when an http error happens
     onError:function(error) {
         alert(error);
     },

     // method to initialize an xmlhttpclient
     init:function() {
       try {
           // Mozilla / Safari
            this.xmlhttp = new XMLHttpRequest();
       } catch (e) {
           // IE
           var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
           var success = false;
           for (var i=0;i < XMLHTTP_IDS.length &&
             !success; i++) {
               try {
                   this.xmlhttp = new ActiveXObject
                     (XMLHTTP_IDS[i]);
                   success = true;
               } catch (e) {}
           }
           if (!success) {
               this.onError('Unable to create XMLHttpRequest.');
           }
        }
     },

     // method to make a page request
     // @param string url  The page to make the request to
     // @param string payload  What you're sending if this is a POST
    //                        request
    makeRequest: function(url,payload) {
         if (!this.xmlhttp) {
             this.init();
         }
         this.xmlhttp.open(this.requestType,url,this.isAsync);

         // set onreadystatechange here since it will be reset after a
        //completed call in Mozilla
         var self = this;
         this.xmlhttp.onreadystatechange = function() {
        self._readyStateChangeCallback(); }

         this.xmlhttp.send(payload);

         if (!this.isAsync) {
             return this.xmlhttp.responseText;
         }
    },

     // internal method used to handle ready state changes
    _readyStateChangeCallback:function() {
         switch(this.xmlhttp.readyState) {
              case 2:
               this.onSend();
               break;
            case 4:
               this.onload();
               if (this.xmlhttp.status == 200) {
                   this.callback(this.xmlhttp.responseText);
               } else {
                   this.onError('HTTP Error Making Request: '+
                                       '['+this.xmlhttp.
                                         status+']'+this.xmlhttp.
                                         statusText);
               }
               break;
         }
     }
}

function GetValue(obj)
{
  var Object = document.getElementById(obj).value;
  return Object;
}



//custom functions
function getsubcat(id) {
document.getElementById('subcat_list').style.display = 'none';
document.getElementById(divloading).style.display = 'block';
var client = new HttpClient();
client.isAsync = true;
client.callback = function(result) {
  document.getElementById(divto).style.display = 'block';
  document.getElementById(divloading).style.display = 'none';
  document.getElementById(divto).innerHTML = result;
}
  var pages = page + '?type=' + type + '&chrn=' + chrn;
  client.makeRequest(pages,null);
}

function urlencode (str) {
	str = escape(str);
	return str.replace(/[*+\/@]|%20/g,
	function (s) {
		switch (s) {
			case "*": s = "%2A"; break;
			case "+": s = "%2B"; break;
			case "/": s = "%2F"; break;
			case "@": s = "%40"; break;
			case "%20": s = "+"; break;
		}
		return s;
	}
	);
}

function mAnnouncement(act,id) {
	
	switch(act) {
		
		case "add"	: 	var client = new HttpClient();
						client.isAsync = true;
						client.callback = function(result) {						  
						  document.getElementById('add').innerHTML = result;
						}
						var pages = 'ajax_announcement.php' + '?act=add';
						client.makeRequest(pages,null);						
		
						break;
						
		case "addsave" :	var str=document.getElementById('message').value;
							var str2=document.getElementById('title').value;
							var client = new HttpClient();
							client.isAsync = true;
							client.callback = function(result) {						  
							  document.getElementById('refresh').innerHTML = result;
							}
							var pages = 'ajax_announcement.php' + '?act=addsave&text=' + urlencode(str) +'&title='+str2;
							client.makeRequest(pages,null);						
			
							break;
	
		case "edit"	:		var divto='ann'+id;
							var divloading='ann'+id+"_loading";
							document.getElementById(divto).style.display = 'none';
							document.getElementById(divloading).style.display = 'block';
							var client = new HttpClient();
							client.isAsync = true;
							client.callback = function(result) {
							  document.getElementById(divto).style.display = 'block';
							  document.getElementById(divloading).style.display = 'none';
							  document.getElementById(divto).innerHTML = result;
							}
							  var pages ='ajax_announcement.php?act=edit&id=' + id;
							  client.makeRequest(pages,null);
							  
							break;
							
		case "editsave"	:	var divto='ann'+id;
							var divloading='ann'+id+"_loading";
							var str=document.getElementById('message'+id).value;
							var str2=document.getElementById('title'+id).value;
							document.getElementById(divto).style.display = 'none';
							document.getElementById(divloading).style.display = 'block';
							var client = new HttpClient();
							client.isAsync = true;
							client.callback = function(result) {
							  document.getElementById(divto).style.display = 'block';
							  document.getElementById(divloading).style.display = 'none';
							  document.getElementById(divto).innerHTML = result;
							}
							  var pages ='ajax_announcement.php?act=editsave&id=' + id +'&text=' + urlencode(str)+'&title='+str2;
							  client.makeRequest(pages,null);
							
							break;
							
		case "del"	:		var divto='ann'+id;
							var divloading='ann'+id+"_loading";
							document.getElementById(divto).style.display = 'none';
							document.getElementById(divloading).style.display = 'block';
							
							var client = new HttpClient();
							client.isAsync = true;
							client.callback = function(result) {	
							  document.getElementById(divloading).style.display = 'none';	
							  document.getElementById(divto).innerHTML = result;
							}
							  var pages ='ajax_announcement.php?act=del&id=' + id;
							  client.makeRequest(pages,null);
							  
							  break;
							  
		case "refresh"	:	var client = new HttpClient();
							client.isAsync = true;
							client.callback = function(result) {							 
							  document.getElementById('refresh').innerHTML = '';
							}
							  var pages ='ajax_announcement.php?act=refresh';
							  client.makeRequest(pages,null);
							  
							  break;
		
	}

}


function cProfile(field,value,act) {

	var divto=field;
	var input="input_"+field;	
	
	var str= (act=="save") ? document.getElementById(input).value : value;
		//alert('123');
	var client = new HttpClient();
	client.isAsync = true;
	
	client.callback = function(result) {
	  document.getElementById(divto).innerHTML = result;
	}
	
	var pages ='ajax_client_profile.php?key='+ field +'&value='+ str +'&act=' + act;
	
	client.makeRequest(pages,null);

}