//the urlArray must include 1) request Method <'GET'|'POST'>
//                          2) url to be fetched
//                          3) url variable string '?var1=res1+var2=res2...'
//                          4) return object/container pointer
//  and optionaly  5) the status DIV container


// constants
var HTTP_STATUS_OK = 200;
var READYSTATE_COMPLETED = 4;
var NODE_TYPE_ELEMENT = 1;

//global variable
var fetchMethod;	// request Method <'GET'|'POST'>
var fetchUrl;		// url to be fetched
var syncFlag;		// Sync flag true=do not wait|false=wait until get the result
var fetchString;	// url variable string '?var1=res1+var2=res2...'
var timer = 4000;

var containerObj;

var objArray=[];
var cntArray=[];
var statArray=[];

ajax = {

   printArray: function(urlArray) {
       alert(urlArray.length+' - '+urlArray[0][0]+': '+urlArray[0][1]+'?'+urlArray[0][2]+' -> '+urlArray[0][3]);
   },

   Array: function(urlArray) {

       document.body.style.cursor="wait";

       syncFlag=true;
       var requestObject = new Array(urlArray.length);

       for (i=0; i<urlArray.length; i++){

           fetchMethod=urlArray[i][0];
           fetchUrl=urlArray[i][1];
           fetchString=urlArray[i][2];

           requestObject[i] = ajax.initRequestObject();
           requestObject[i].onreadystatechange = function(){processRequest()};
       }
       
       function processRequest(req) {

         for (i=0; i<urlArray.length; i++){
            if (requestObject[i].readyState == READYSTATE_COMPLETED) {
                if (ajax.validateResponse(requestObject[i])) {
                    urlArray[i][3].innerHTML = requestObject[i].responseText.replace("status::","");
                }
           }
       }
    };

       setTimeout("document.body.style.cursor='auto'",1000);
   },

   //This method will holds every eiteriation until fully fetched
   Array_Semi_Sync: function(urlArray) {

       fetchMethod=urlArray[0][0];
       fetchUrl=urlArray[0][1];
       syncFlag=true;
       fetchString=urlArray[0][2];
 			  
       requestObject = ajax.initRequestObject();
       requestObject.onreadystatechange = function(){processRequest(urlArray)};

       function processRequest(urlArray) {

            if (requestObject.readyState == READYSTATE_COMPLETED) {
                 if (requestObject.status != HTTP_STATUS_OK ) { 
                          alert('There was a problem with ajax request.\n'+
                          urlArray[0][0]+': '+urlArray[0][1]+'?'+urlArray[0][2]+'->'+urlArray[0][3]+'\n'+
                          requestObject.statusText);
                 } else {
                      if (requestObject.responseText.replace("status::","") == 'Ops, SESSION TIMED OUT') {
                           void(self.location.href=self.location.href);
                           alert(requestObject.responseText.replace("status::",""));
                      } else {
                           urlArray[0][3].innerHTML = requestObject.responseText.replace("status::","");
	                  }
                 }

                 urlArray.shift();

                 if (urlArray.length > 0) {
                      ajax.Array(urlArray);
                 }
           }
       };
   },

   Get: function(url, pststr, container, status) {
       
       fetchMethod="GET";
       fetchUrl=url+'?' + Math.random();
       syncFlag=true;
	   if ( pststr != null ) { fetchString=pststr; fetchUrl=fetchUrl+'?'+fetchString; }
       //containerObj=container;
       statusObj=status;
 
 	   objArray.push(ajax.initRequestObject());
 	   cntArray.push(container);

       objArray[objArray.length-1].onreadystatechange = function(){ajax.processRequest(objArray[objArray.length-1],cntArray[cntArray.length-1])};
   },

   Post: function(url, pststr, container, status) {
       
       fetchMethod="POST";
       fetchUrl=url;
       syncFlag=true;
       fetchString=pststr;
       //containerObj=container;
       statusObj=status;
 
       //alert(pststr);
 	   objArray.push(ajax.initRequestObject());
 	   cntArray.push(container);

       objArray[objArray.length-1].onreadystatechange = function(){ajax.processRequest(objArray[objArray.length-1],cntArray[cntArray.length-1])};
   },

   formPost: function(url, pststr, container, status) {

       fetchMethod="POST";
       fetchUrl=url;
       syncFlag=false;  //function should wait until get the result
       fetchString=pststr;
       
       document.body.style.cursor='wait';
       
       requestObject = ajax.initRequestObject();
	
		// if the status object has been defined and the returened content includes the alert "status::" on it, basically returned warning, error or something.
       if ( status != null &&  requestObject.responseText.indexOf('status::')   != -1 ) {
       
						   temp=status.innerHTML;
                           status.innerHTML = requestObject.responseText.replace("status::","");
                           setTimeout(callme,3000);

      } else {
                           container.innerHTML = requestObject.responseText.replace("status::","");
					       document.body.style.cursor='auto';                     
      }

      function callme(){status.innerHTML = temp; document.body.style.cursor='auto';}
      
   },

   Get1: function(url, pststr, container, status) {
       
       fetchMethod="GET";
       fetchUrl=url;
       syncFlag=true;
       fetchString=pststr;
       containerObj=container;
       statusObj=status;
       
       requestObject = ajax.initRequestObject();
       requestObject.onreadystatechange = function(){ajax.processRequest(requestObject)};
   },

   Post1: function(url, pststr, container, status) {
   
       fetchMethod="POST";
       fetchUrl=url;
       syncFlag=true;
       fetchString=pststr;
       containerObj=container;
       statusObj=status;
       
       requestObject = ajax.initRequestObject();
       requestObject.onreadystatechange = function(){ajax.processRequest(requestObject)};
   },
   
   processRequest: function(requestObject,cnt) {

      rc=false;
      
      for (i=0; i<objArray.length;i++) {
         if (objArray[i].readyState == READYSTATE_COMPLETED) {
              if (objArray[i].status != HTTP_STATUS_OK ) { 
                    alert('There was a problem with ajax request.\n'+objArray[i].statusText);
              } else {
                    if (objArray[i].responseText.replace("status::","") == 'Ops, SESSION TIMED OUT') {
                        void(self.location.href=self.location.href);
                        alert(objArray[i].responseText.replace("status::",""));
                    } else {
 
                        if ( statusObj != null &&  objArray[i].responseText.indexOf('status::')  != -1 ) {
                       
                                    statusObj.innerHTML = objArray[i].responseText.replace("status::","");
                        } else {
                                    cntArray[i].innerHTML = objArray[i].responseText.replace("status::","");
                        }
                     
                        rc=true;
	               }
              }
           
              objArray.splice(i,1);
              cntArray.splice(i,1);           
              return rc;
         }
      }
   },

   processRequest1: function(requestObject) {
      if (requestObject.readyState == READYSTATE_COMPLETED) {
           if (requestObject.status != HTTP_STATUS_OK ) { 
                 alert('There was a problem with ajax request.\n'+
                 //urlArray[i][0]+': '+urlArray[i][1]+'?'+urlArray[i][2]+'->'+urlArray[i][3]+'\n'+
                 requestObject.statusText);
                 return false;
           } else {
                 if (requestObject.responseText.replace("status::","") == 'Ops, SESSION TIMED OUT') {
                     void(self.location.href=self.location.href);
                     alert(requestObject.responseText.replace("status::",""));
                     return false;
                 } else {
                     if ( statusObj != null &&  requestObject.responseText.indexOf('status::')  != -1 ) {
                                 statusObj.innerHTML = requestObject.responseText.replace("status::","");
                                 return;
                     }
                     containerObj.innerHTML = requestObject.responseText.replace("status::","");
	            }
           }
      }
   },

   initRequestObject: function() {

       ajax_request = false;

       if (window.XMLHttpRequest) {              // Mozilla, Safari,...
            ajax_request = new XMLHttpRequest();
            if (ajax_request.overrideMimeType) {
           // set type accordingly to anticipated content type
               ajax_request.overrideMimeType('text/html');
            }
       } else if (window.ActiveXObject) { // IE
            try {
                 ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                 try {
                    ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (e) {}
            }
       }

       if (!ajax_request) {
           alert('Cannot create XMLHTTP instance');
       }
	   //alert(fetchString);    // Debug Alert
       ajax_request.open(fetchMethod, fetchUrl, syncFlag);
       ajax_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       ajax_request.setRequestHeader("Content-length", fetchString.length);
       ajax_request.setRequestHeader("Connection", "close");
       ajax_request.send(fetchString);

       return ajax_request;
   }
}

function loadObjects(){
loadedobjects=""
   if (!document.getElementById)
      return
   for (i=0; i<arguments.length; i++){
      var file=arguments[i]
      var fileref=""
      
      if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
         if (file.indexOf(".js")!=-1){ //If object is a js file
            fileref=document.createElement('script')
            fileref.setAttribute("type","text/javascript");
            fileref.setAttribute("src", file);
        }
        else if (file.indexOf(".css")!=-1){ //If object is a css file
           fileref=document.createElement("link")
           fileref.setAttribute("rel", "stylesheet");
           fileref.setAttribute("type", "text/css");
           fileref.setAttribute("href", file);
        }
     }
     
     if (fileref!=""){
        document.getElementsByTagName("head").item(0).appendChild(fileref)
        loadedobjects+=file+" " //Remember this object as being already added to page
     }
   }
}

function eIDval(element){
//returns element's value
	return escape(encodeURI( document.getElementById(element).value));
}

function eID(element){
//returns element  by ID
	return document.getElementById(element);
}

function logIn() {
      
   poststr='cmd=logIn&username='+eIDval('username')+'&password='+eIDval('password');
           
   ajax.formPost('php/loginControl.php',poststr,eID('content'), eID('myform')); //was loginStat before
}

function wait(millis) {

	var date = new Date();
	var curDate = null;

	do { 
		curDate = new Date(); 
	} while(curDate-date < millis);
} 

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//<!-- This script and many more are available free online at -->
//<!-- The JavaScript Source!! http://javascript.internet.com -->

//<!-- Begin
var maximages = 4; // how many fade images do you have?
var fadespeed = 150; // fade frame time in milliseconds;  125 = 125 ms
var imageIndex=0;

var fadeintimer;
var fadeouttimer;
var fadeincount = 0;
var fadeoutcount = maximages-1;
var fadearray = new Array(4);  // enter all the fade images here

// the first item should be 0, then numbered through 1 less than your maximages

//fadearray[0][0]="images/banner0-0.jpg";

for (var i=0;i<4;i++){
	fadearray[i]= new Array(maximages);
	fadearray[i][0] = "images/banner0-0.jpg";
	for(var j=1;j<maximages;j++){
		fadearray[i][j] = "images/banner"+i+"-"+j+".jpg";
	}
}
//fadearray[4] = "http://javascript.internet.com/img/fading-rollover/fade04.jpg";
//fadearray[5] = "http://javascript.internet.com/img/fading-rollover/fade05.jpg";

//for (var i = 0; i <4; i++) {
//	for( var j=0;j<maximages;j++){
//		eval('pic' + ij + ' = new Image();');
//		eval('pic' + ij + '.src = fadearray[i][j];'); // preloads fade images
//	}
//}
function fade_in() {
clearTimeout(fadeouttimer);
if(fadeincount     > 0)document.images['fade-pic1'].src = fadearray[imageIndex][fadeincount];
if((fadeincount-1) > 0)document.images['fade-pic2'].src = fadearray[imageIndex][fadeincount-1];
if((fadeincount-2) > 0)document.images['fade-pic3'].src = fadearray[imageIndex][fadeincount-2];

if (fadeincount != maximages-1) {
	fadeincount++;
	fadeintimer = setTimeout('fade_in()', fadespeed);
}
else {
	clearTimeout(fadeintimer);
	fadeincount = 0;
   }
}

function fade_out() {
clearTimeout(fadeintimer);
if(fadeoutcount     >= 0)document.images['fade-pic1'].src = fadearray[imageIndex][fadeoutcount];
if((fadeoutcount-1) >= 0)document.images['fade-pic2'].src = fadearray[imageIndex][fadeoutcount-1];
if((fadeoutcount-2) >= 0)document.images['fade-pic3'].src = fadearray[imageIndex][fadeoutcount-2];

if (fadeoutcount != 0) {
fadeoutcount--;
fadeouttimer = setTimeout('fade_out()', fadespeed);

}
else {
clearTimeout(fadeouttimer);
fadeoutcount = maximages-1;
	
	imageIndex++;
	if(imageIndex > 3) imageIndex=0;
   }
}

function rollOverBanner(){
fade_out();

wait(3000);
//if ( document.images['fade-pic1'].src == fadearray[0]) loadPic();

//setTimeout('fade_out()', 300);
setTimeout('fade_in()', 1000);
setTimeout('rollOverBanner()', 6000);

}


/***********************************************
* Email Validation script- � Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

function checkmail(e){

var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i

var returnval=emailfilter.test(e.value)

if (returnval==false){
	alert("Please enter a valid email address.")
	e.select()
}

return returnval

}

//  End -->
