/**
 * Ajax.js
 *
 * Collection of Scripts to allow in page communication from browser to (struts) server
 * ie can reload part instead of full page
 *
 * How to use
 * ==========
 * 1) Call retrieveURL from the relevant event on the HTML page (e.g. onclick)
 * 2) Pass the url to contact (e.g. Struts Action) and the name of the HTML form to post
 * 3) When the server responds ...
 *		 - the script loops through the response , looking for <span id="name">newContent</span>
 * 		 - each <span> tag in the *existing* document will be replaced with newContent
 *
 * NOTE: <span id="name"> is case sensitive. Name *must* follow the first quote mark and end in a quote
 *		 Everything after the first '>' mark until </span> is considered content.
 *		 Empty Sections should be in the format <span id="name"></span>
 */

//global variables

// Create an array to hold the request objects

//global variables
  var req;
  var which;
  var req1;
  var which1;
  var commonURL;

  function retrieveURLs(url,tablename) {

      var date = new Date();
      var timestamp = date.getTime();
      var ques=url.indexOf('?');
  	if(ques!=-1){
  	url=url+"&time="+timestamp;
  	}else{
  		url=url+"?time="+timestamp;
	}

	which=tablename;
	commonURL=url;
    document.getElementById(which).innerHTML="<div align='center'><img src='/images/preloader.gif'/></div>";

    if (window.XMLHttpRequest) { // Non-IE browsers

      req = new XMLHttpRequest();
      req.onreadystatechange = processStateChangees;


      try {

        req.open("GET", url, true);



      } catch (e) {

       // alert(e);

      }

      req.send(null);

    } else if (window.ActiveXObject) { // IE

      req = new ActiveXObject("Microsoft.XMLHTTP");

      if (req) {

        req.onreadystatechange = processStateChangees;

        req.open("POST", url, true);

        req.send();

      }

    }

  }
 function processStateChangees() {



    if (req.readyState == 4) { // Complete

      if (req.status == 200) { // OK response


        document.getElementById(which).innerHTML = req.responseText;
        commonURL=commonURL+"commonzone:"+which+"";
		if(commonURL!=null && commonURL.indexOf("blockevent")==-1)
		{
			dhtmlHistory.add(commonURL, {message: commonURL} );
		}

      } else {

        //alert("Problem: " + req.statusText);

      }

    }

  }
function getFormAsString(formElements){

  var returnString ="";
  formElements=document.forms[0].elements;

  //loop through the array, building up the url
  //in the format '/strutsaction.do&name=value'

  for(var i=formElements.length-1;i>=0; --i ){
        //we escape (encode) each value
        returnString+="&"
        +escape(formElements[i].name)+"="
        +escape(formElements[i].value);
 }

   //returnString+="&blockevent";

 //return the values
 return returnString;
}


function getFormAsString1(formElements){

  var returnString ="";
  formElements=document.forms[0].elements;

  //loop through the array, building up the url
  //in the format '/strutsaction.do&name=value'

  for(var i=formElements.length-1;i>=0; --i ){
        //we escape (encode) each value
       if(formElements[i].name!="subject" && formElements[i].name!="message")
       {
        returnString+="&"

        +escape(formElements[i].name)+"="
        +escape(formElements[i].value);
	   }
 }

   returnString+="&blockevent";

 //return the values
 return returnString;
}
function getFormAsStringElement(formElements){

  var returnString ="";
  var str="";
  var cmd="";
  formElements=document.forms[0].elements;

   for(var i = 0;i < formElements.length;i++)
   {
        switch(formElements[i].type)
        {
		           case "text":
		                str += formElements[i].name +
		                 "=" + escape(formElements[i].value) + "&";
		                 break;
		           case "select-one":
		                str += formElements[i].name +
		                "=" + formElements[i].options[formElements[i].selectedIndex].value + "&";
		                break;
		           case "radio":

		                if(formElements[i].checked==true)
		                {
		                   str += formElements[i].name +
		                   "=" + formElements[i].value + "&";
		                }
		                break;
                   case "hidden":
		                str += formElements[i].name +
		                 "=" + escape(formElements[i].value) + "&";
		                 break;
		           case "checkbox":
		                if(formElements[i].checked==true)
		                {
		                   str += formElements[i].name +
		                       "=" + escape(formElements[i].value) + "&";
						}
		                break;
		          default :
		                str += formElements[i].name +
		                 "=" + escape(formElements[i].value) + "&";
		                 break;
		  }
    }
    str = str.substr(0,(str.length - 1));

  return str;
}


function retrieveURL1s(url,tablename) {

	var date = new Date();
	       var timestamp = date.getTime();
	       var ques=url.indexOf('?');
	   	if(ques!=-1){
	   	url=url+"&time="+timestamp;
	   	}else{
	   		url=url+"?time="+timestamp;
	}

	which1=tablename;
	commonURL=url;

    if (window.XMLHttpRequest) { // Non-IE browsers

      req1 = new XMLHttpRequest();
      req1.onreadystatechange = processStateChange1;

      try {

        req1.open("GET", url, true);

      } catch (e) {

       // alert(e);

      }

      req1.send(null);

    } else if (window.ActiveXObject) { // IE

      req1 = new ActiveXObject("Microsoft.XMLHTTP");

      if (req) {

        req1.onreadystatechange = processStateChange1;

        req1.open("GET", url, true);

        req1.send();

      }

    }

  }
 function processStateChange1s() {

    if (req1.readyState == 4) { // Complete

      if (req1.status == 200) { // OK response

        document.getElementById(which1).innerHTML = req1.responseText;


      } else {

        //alert("Problem: " + req1.statusText);

      }

    }

  }

//handling multiple Requests onload
var requestArray = new Array();
var result;
var ids=new Array();
var j=0;

function sendRequestss(url,tablename,j)
{
   ids[j]=tablename;
   var arrayPos = -1;
   result=tablename;

   document.getElementById(result).innerHTML="<div align='center'><img src='/images/preloader.gif'/></div>";   // Step through the array, looking next available slot
   for (var i=0; i<requestArray.length; i++)
   {
      if (requestArray[i].available == 1)
      {
        arrayPos = i;
        break;
      }
   }

  // If arrayPos equal -1, request has not been created yet
   if (arrayPos == -1)
   {
    // Length of array == next available slot
     arrayPos = requestArray.length;
    // Create new request by calling newRequest function
      requestArray[arrayPos] = new newRequest(1);
   }

  // If request exists in array[arrayPos]
   if (requestArray[arrayPos].xmlhttp)
   {
    requestArray[arrayPos].available = 0;

    // Send Request and wait for change
    requestArray[arrayPos].xmlhttp.open("GET",url,true);

    // Exectue function() when ready state changes
    requestArray[arrayPos].xmlhttp.onreadystatechange = function()
    {
      if (typeof(requestArray[arrayPos]) != 'undefined' &&
        requestArray[arrayPos].available == 0 &&
        requestArray[arrayPos].xmlhttp.readyState == 4)
         {
          // Execute when readyState == 4 (request is complete)
          if (requestArray[arrayPos].xmlhttp.status == 200 ||
            requestArray[arrayPos].xmlhttp.status == 304)
            {
              /*
              Handle the page updage here, using  the response
              stored in 'requestArray[arrayPos].xmlhttp.responseText'
              */
            //  alert("pos"+arrayPos);
            //  alert(ids[arrayPos]);
              document.getElementById(ids[arrayPos]).innerHTML = requestArray[arrayPos].xmlhttp.responseText;

          } else {
            /*
            Handle an error here
            */
          }
          requestArray[arrayPos].available = 1;
      }
    }
    if (window.XMLHttpRequest)
    {
      requestArray[arrayPos].xmlhttp.send(null);

    } else if (window.ActiveXObject)
    {
      requestArray[arrayPos].xmlhttp.send();
    }
  }
}

// Create a new request
function newRequestsss(available)
{
	this.available = available;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) { // For non-IE browsers
		this.xmlhttp = new XMLHttpRequest();

	} else if (window.ActiveXObject) { // For IE
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}


var checkValue="";

function retrieveAlert(url,tablename) {


    var date = new Date();
    var timestamp = date.getTime();
    var ques=url.indexOf('?');
	if(ques!=-1){
	url=url+"&time="+timestamp;
	}else{
		url=url+"?time="+timestamp;
	}

	which=tablename;
       // document.getElementById(which).innerHTML="<div align='center'><img src='/images/preloader.gif'/></div>";


    if (window.XMLHttpRequest) { // Non-IE browsers

      req = new XMLHttpRequest();
      req.onreadystatechange = processStateChanges;

      try {

      //alert("FireFox");


        req.open("GET", url, true);
      } catch (e) {
        //alert(e);
      }
      req.send(null);

    } else if (window.ActiveXObject) { // IE
      req = new ActiveXObject("Microsoft.XMLHTTP");

      if (req) {

       //alert("IE");


        req.onreadystatechange = processStateChange;
        req.open("POST", url, true);
        req.send();

      }

    }
    return checkValue;


  }
 function processStateChanges() {


    if (req.readyState == 4) { // Complete

      if (req.status == 200) { // OK response


        document.getElementById(which).innerHTML = req.responseText;

       // var items = req.responseXML.getElementsByTagName("alert")[0];
      //  var count = items.getElementsByTagName("count")[0].firstChild.nodeValue;
      //  checkValue=count;



      } else {

      //  alert("Problem: " + req.statusText);

      }

    }
  }
 var counts=0;
function retrieveAlertss(url,tablename) {

  // alert(url);

  var date = new Date();
      var timestamp = date.getTime();
      var ques=url.indexOf('?');
  	if(ques!=-1){
  	url=url+"&time="+timestamp;
  	}else{
  		url=url+"?time="+timestamp;
	}

	which=tablename;

       // document.getElementById(which).innerHTML="<div align='center'><img src='/images/preloader.gif'/></div>";



    if (window.XMLHttpRequest) { // Non-IE browsers

      req = new XMLHttpRequest();
      req.onreadystatechange =  function processStateChangess(url,tablename) {


    if(req.readyState == 4) { // Complete
      if (req.status == 200) { // OK response
        //document.getElementById(which).innerHTML = req.responseText;
        var items = req.responseXML.getElementsByTagName("alert")[0];
        var count = items.getElementsByTagName("count")[0].firstChild.nodeValue;
        if(count!="")
        {
           counts=parseInt(count);
        }
        else
        {
           counts=parseInt(count);
        }

      } else {

       // alert("Problem: " + req.statusText);

      }

    }
    //return counts;
  }






      try {

         var date=new Date();
      	 var timestamp=date.getTime();
      	 var ques=url.indexOf("?");
      	 if(ques!=-1){
      	  url=url+"&times="+timestamp;
      	 }else{
      	 url=url+"?times="+timestamp;
	 }

        req.open("GET", url, true);
      } catch (e) {

        //alert(e);

      }

      req.send(null);

    } else if (window.ActiveXObject) { // IE

      req = new ActiveXObject("Microsoft.XMLHTTP");

      if (req) {

       //req.onreadystatechange = processStateChangess;


        req.open("POST", url, true);

        req.send();

      }

    }
    return counts;


  }

var xmlreqs1 = new Array();

function CXMLReq1(freed)
{
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest)
	{
		this.xmlhttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}



function xmlreqPOST1(url,data)
{
	//alert("Inside");
	var date = new Date();
	       var timestamp = date.getTime();
	       var ques=url.indexOf('?');
	   	if(ques!=-1){
	   	url=url+"&time="+timestamp;
	   	}else{
	   		url=url+"?time="+timestamp;
	}

	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++)
	{
		if (xmlreqs[i].freed == 1)
		{
			pos = i; break;
		}
	}
	document.getElementById(data).innerHTML="<div align='center' id='loader'><img src='/images/preloader.gif'/></div>";

	if (pos == -1)
	{
		pos = xmlreqs.length;
		xmlreqs[pos] = new CXMLReq1(1);
	}
	if (xmlreqs[pos].xmlhttp)
	{
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].xmlhttp.open("POST",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function()
		{
			if (typeof(xmlhttpChange1) != 'undefined')
			{
				xmlhttpChange1(pos,data);
			}
		}
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlreqs[pos].xmlhttp.send(data);
	}
	setTimeout("xmlreqPOST1('"+url+"','"+data+"')", 1000);
}

function xmlhttpChange1(pos,data)
{
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4)
	{
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304)
		{
			//handle_response(xmlreqs[pos].xmlhttp.responseXML);
			 document.getElementById(data).innerHTML = xmlreqs[pos].xmlhttp.responseText;


		}
		else
		{
			//handle_error();
		}
		xmlreqs[pos].freed = 1;
	}
}

function callForTabChange(urlpath)
{

   if(urlpath!=null && urlpath.indexOf("communitytab")!=-1)
   {
	     var pos1=urlpath.indexOf("communitytab");
	     if(pos1!=-1)
	     {
	        var tabvalue=urlpath.substring(pos1+13,urlpath.length);
	        var pos2=tabvalue.indexOf("&");
	        if(pos2!=-1)
	        {
	          var tabvalue1=tabvalue.substring(0,pos2);
	          var callFunction=new new Function("changeBgColor('"+tabvalue1+"','communitydesc|communityregis|communityqanda|communityworkshop|communityevents|communityweblib','#FFCC00','#FFFFFF')");
		    }
		 }
   }
   if(urlpath!=null && urlpath.indexOf("eventtab")!=-1)
   {
	   var pos1=urlpath.indexOf("eventtab");
	   if(pos1!=-1)
	   {
	      var tabvalue=urlpath.substring(pos1+9,urlpath.length);
	      var pos2=tabvalue.indexOf("&");
	      if(pos2!=-1)
	      {
	         var tabvalue1=tabvalue.substring(0,pos2);
	         var callFunction=new new Function("changeBgColor('"+tabvalue1+"','eventsdesc|eventsqanda|eventsweblib|eventsregis','#FFCC00','#FFFFFF')");
		  }
	   }
   }
   if(urlpath!=null && urlpath.indexOf("advancedtab")!=-1)
   {
   	   var pos1=urlpath.indexOf("advancedtab");
   	   if(pos1!=-1)
   	   {
   	      var tabvalue=urlpath.substring(pos1+12,urlpath.length);
   	      var pos2=tabvalue.indexOf("&");
   	      if(pos2!=-1)
   	      {
   	         var tabvalue1=tabvalue.substring(0,pos2);
   	         var callFunction=new new Function("changeBgColor('"+tabvalue1+"','advsearchmem|advsearchweblib|advsearchqanda|advsearchevents','#FFCC00','#FFFFFF')");
		  }
	   }
   }
   if(urlpath!=null && urlpath.indexOf("globaltab")!=-1)
   {
	   var pos1=urlpath.indexOf("globaltab");
	   //var wordlength="globaltab";
	   //var pos3=wordlength.1ength+1;
	   if(pos1!=-1)
	   {
	       var tabvalue=urlpath.substring(pos1+10,urlpath.length);
	       var pos2=tabvalue.indexOf("&");
	       if(pos2!=-1)
	       {
	         var tabvalue1=tabvalue.substring(0,pos2);
   	         var callFunction=new new Function("changeBgColor('"+tabvalue1+"','glosearchmem|glosearchevents|glosearchweblib|glosearchqanda','#FFCC00','#FFFFFF')");
	       }
	   }
   }
   if(urlpath!=null && urlpath.indexOf("workshoptab")!=-1)
   {
   	   var pos1=urlpath.indexOf("workshoptab");
   	   //var wordlength="globaltab";
   	   //var pos3=wordlength.1ength+1;
   	   if(pos1!=-1)
   	   {
   	      var tabvalue=urlpath.substring(pos1+12,urlpath.length);
   	      var pos2=tabvalue.indexOf("&");
   	      if(pos2!=-1)
   	      {
   	         var tabvalue1=tabvalue.substring(0,pos2);
                 var callFunction=new new Function("changeBgColor('"+tabvalue1+"','workshopdesc|workshopregis|workshopcollab|workshopweblib|workshopqanda','#FFCC00','#FFFFFF')");
	      }
	   }
   }
   if(urlpath!=null && urlpath.indexOf("questiontab")!=-1)
   {
      	   var pos1=urlpath.indexOf("questiontab");
      	   //var wordlength="globaltab";
      	   //var pos3=wordlength.1ength+1;
      	   if(pos1!=-1)
      	   {
      	      var tabvalue=urlpath.substring(pos1+12,urlpath.length);
      	      var pos2=tabvalue.indexOf("&");
      	      if(pos2!=-1)
      	      {
      	         var tabvalue1=tabvalue.substring(0,pos2);
                var callFunction=new new Function("changeBgColor('"+tabvalue1+"','myanswers|myquestions|myqandstatus|mywatchlists','#FFCC00','#FFFFFF')");
   		  }
   	   }
   }
    if(urlpath!=null && urlpath.indexOf("chTabColor")!=-1)
      {
         	   var pos1=urlpath.indexOf("chTabColor");
         	   //var wordlength="globaltab";
         	   //var pos3=wordlength.1ength+1;
         	   if(pos1!=-1)
         	   {
         	      var tabvalue=urlpath.substring(pos1+11,urlpath.length);
         	      var pos2=tabvalue.indexOf("&");
         	      if(pos2!=-1)
         	      {
         	         var tabvalue1=tabvalue.substring(0,pos2);
                   var callFunction=new new Function("changeTabColor('"+tabvalue1+"')");
      		  }
      	   }
   }


}

function globalAjaxFunctionRmChars(str,results,appendstr)
{
     var appendstr=appendstr;
     //alert(appendstr);

     var browsers="";
	 if(document.all)
	 {
	 	browsers="IE";
	 }
	 else
	 {
		browsers="FireFox";
	 }
     //alert(str);


     if(appendstr=='')
     {

	      var st="?";
    	  var i=str.lastIndexOf(st);
    	   if(i<0)
    	   {
		   	var strr=str+"?browsers="+browsers+"";
		   }else
		   {
		    var strr=str+"&browsers="+browsers+"";
		   }
	      retrieveURL("/"+strr+"",""+results+"");
     }
     else if(appendstr!='')
     {
    	  // alert(appendstr);
    	   var appendString=getFormAsString1(appendstr);

    	  var sSubject=document.forms[0].subject.value;
	  var sMessage=escape(document.forms[0].message.value);

	  sSubject=sSubject.replace(/%/g,"ampe;");
	  sSubject=sSubject.replace(/&/g,"amp;");
	  sSubject=sSubject.replace("#","a35;");
	  sSubject=sSubject.replace("<","a36;");

	 // sMessage=sMessage.replace(/%/g,"ampe;");
	 // sMessage=sMessage.replace(/&/g,"amp;");
	 // sMessage=sMessage.replace("#","a35;");
	  sMessage=sMessage.replace("<","a36;");


	             appendString=appendString+"&subject="+sSubject+"&message="+sMessage+"";




    	  // alert(appendString);
    	   var st="?";
    	   //str=str+"&browsers="+browsers+"";
    	   var i=str.lastIndexOf(st);
    	   if(i<0)
    	   {
		   	var strr=str+"?"+appendString;
		   }else
		   {
		    var strr=str+appendString;
		   }
	  	   retrieveURLs("/"+strr+"",""+results+"");

     }

	  window.scrollTo(0,200);
}

function changeFlatTabColor(id)
{

    var ulobj=document.getElementById("ulid2");

    var liobj=ulobj.getElementsByTagName("li");


    if(liobj!=null)
    {
	for(var j=0;j<liobj.length;j++)
	{
           var liobjs=liobj[j];
           liobjs.className="";
	}
    }
    var tabobj=document.getElementById(id);
    if(tabobj!=null)
    {
       tabobj.className =  'selected';
    }





}

function getFormAsBestAnsString(formElements){

  var returnString ="";
  formElements=document.forms[0].elements;

  //loop through the array, building up the url
  //in the format '/strutsaction.do&name=value'

  for(var i=formElements.length-1;i>=0; --i ){
        //we escape (encode) each value
        if(formElements[i].name!=null && formElements[i].name!="comments")
        {
        	returnString+="&"
        	+escape(formElements[i].name)+"="
        	+escape(formElements[i].value);
		}
 }

   returnString+="&blockevent";

 //return the values
 return returnString;
}

