/**********************************************************************************/
/*                                                                                */
/*  Function Name:  form_qs()                                                     */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:                                                                        */
/*  Output:         string                                                        */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           30 January 2010                                               */
/*                                                                                */
/**********************************************************************************/

function form_qs() {

    var arg = form_qs.arguments;
    
    var formref = arg[0];
    
    var e;
    
    var qs = "";
    
    if (formref) {
    
        for (var i=0; i<formref.elements.length; i++) {
        
            e = formref.elements[i];
        
            if  (e.type == undefined) {

            }
            else if (e.type == "button") {
            
            }
            else if (e.type == "reset") {
            
            }
            else if (e.type == "submit") {
            
            }
            else if (e.type == "radio") {

                if (e.checked) {
                    qs  += e.name + "=" + e.value + "&";
                }

            }
            else if (e.type == "checkbox") {
            
                if (e.checked) {
                    qs  += e.name + "=" + e.value + "&";
                }
            
            }
            else if (e.type == "select-one") {
            
                for (var j=0; j<e.options.length; j++) {
                
                    if (e.options[j].selected) {
                    
                        qs  += e.name + "=" + e.options[j].value + "&";
                    
                        break;
                    }
                
                }
            
            }
            else {                
                // text, hidden, password
            
                qs  += e.name + "=" + e.value + "&";
            }
            
            
        }
        
    }


    return qs;
}

function http_request() {

  var request;
  var handler;
  var method;
  var url;
  var content;

  var arg = http_request.arguments;

  if    (arg[0])                          { url = arg[0]; }

  if    (arg[1].toLowerCase() ==  "post") { method  = "POST"; }
  else                                    { method  = "GET";  }

  if    (arg[2])                          { handler = arg[2]; }
  else                                    { handler = null;   }

  if    (arg[3])                          { content = arg[3]; }

  var handler_arg = "request";

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

    if  (i > 3) { handler_arg += ",'" + arg[i] + "'"; }

  }

  try {
    request = new XMLHttpRequest();
  }
  catch (e) {

    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {
      request = null;
    }

  }

  if (request) {

    request.onreadystatechange = function() {

      if (request.readyState == 4)  {

        if (request.status == 200)  {

          if  (handler)  {
            eval(handler + "(" + handler_arg + ");");
          }

        }
        else  {


        }

      }

    };

    request.open(method,url,true);

    if (method  == "POST") {
      request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    }

    request.send(content);

  }


}

function ajax_request_handler()  {

  var arg = ajax_request_handler.arguments;

  var  request  =  arg[0];

  var  id  =  arg[1];

  document.getElementById(id).innerHTML  =  request.responseText;

}


function ajax_url()  {

	var arg = ajax_url.arguments;

	var	contentfile	=	arg[0];
	var	contentid		=	arg[1];
  var handler   	= "ajax_request_handler";

  http_request(contentfile,'POST',handler,'',contentid);

	return false;

}

/**********************************************************************************/
/*                                                                                */
/*  Function Name:  ajax_fetch_url()                                              */
/*  Description:                                                                  */
/*  Parameters      url, content                                                  */
/*  Input:                                                                        */
/*  Output:         object                                                        */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           17 October 2007                                               */
/*                                                                                */
/**********************************************************************************/

function  ajax_fetch_url()  {

  var arg = ajax_fetch_url.arguments;

  var ajaxurl 	= arg[0];
  var targetid	= arg[1];

  var input   = "";

  var handler = "ajax_request_handler";

  http_request(ajaxurl,'GET',handler,input,targetid);

  return false;

}

/**********************************************************************************/
/*                                                                                */
/*  Function Name:  ajax_form_post()                                              */
/*  Description:                                                                  */
/*  Parameters      formref, targetid, ajaxurl                                    */
/*  Input:                                                                        */
/*  Output:         object                                                        */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           30 January 2010                                               */
/*                                                                                */
/**********************************************************************************/

function ajax_form_post()  {

  var arg = ajax_form_post.arguments;

  var formref   = arg[0];
  var targetid  = arg[1];
  var ajaxurl   = arg[2];

  var input = form_qs(formref);
	
  var handler   = "ajax_request_handler";

  http_request(ajaxurl,'POST',handler,input,targetid);

  return false;

}





/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_expanderrow()                                          */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:                                                                        */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           09 January 2010                                               */
/*                                                                                */
/**********************************************************************************/


function toggle_expanderrow() {

  var arg = toggle_expanderrow.arguments;
	
  var thisrow 	  = arg[0];
  var contentid   = arg[1];
  var ajaxurl     = arg[2];

  var css_active    = "on";
  var css_inactive  = "off";
  
  if	(thisrow.className == css_active)	{
    thisrow.className = css_inactive;
  }
  else {

    if  ((document.getElementById(contentid)) && (ajaxurl.length > 0))  {
      $('#'+contentid).load(ajaxurl);
    }

    thisrow.className = css_active; 
  }

  return false;

}


/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_tabcontent()                                           */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:                                                                        */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           27 December 2009                                              */
/*                                                                                */
/**********************************************************************************/

function  toggle_tabcontent()  {

  var arg = toggle_tabcontent.arguments;
	
  var thistab 	  = arg[0];
  var widgetid    = arg[1];
  var contentid   = arg[2];
  var ajaxurl     = arg[3];

  var css_active    = "on";
  var css_inactive  = "off";

  var tab         =	thistab.parentNode.childNodes;

  for (i=0; i<tab.length; i++)  {
    tab[i].className  = css_inactive;
  }

  thistab.className = css_active;

  var content = document.getElementById(contentid).parentNode.childNodes;
  
  for (i=0; i<content.length; i++)  {
    content[i].className  = css_inactive;
  }

  document.getElementById(contentid).className  = css_active;

  return false;
}

/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_tabcontent_ajax()                                      */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:                                                                        */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           17 December 2010                                              */
/*                                                                                */
/**********************************************************************************/

function  toggle_tabcontent_ajax()  {

  var arg = toggle_tabcontent_ajax.arguments;

  var thistab 	  = arg[0];
  var	widgetid    = arg[1];
  var contentid   = arg[2];
  var ajaxurl     = arg[3];
  
  if  (document.getElementById(contentid))  {   
    $('#'+contentid).load(ajaxurl);
  }

  toggle_tabcontent(thistab, widgetid, contentid);

  return false;
}/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_state0()                                               */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:          ulref, id                                                     */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           27 February 2010                                              */
/*                                                                                */
/**********************************************************************************/
function toggle_state() {

  var arg = toggle_state.arguments;
  
  var ulref = arg[0];
  var id    = arg[1];

  var css_active    = "on";
  var css_inactive  = "off";
  
  var original = "";
  
  if (document.getElementById(id)) {  
      toggle_content(id);
      
      if  (ulref) {
      
          original = ulref.className;

          if (original == css_active)    { ulref.className = css_inactive; }
          if (original == css_inactive)  { ulref.className = css_active;   } 
  
      }
      
  }
  
  return false;
}

/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_content()                                              */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:          id, id, id...                                                 */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           27 February 2010                                              */
/*                                                                                */
/**********************************************************************************/

function toggle_content() {

  var arg = toggle_content.arguments;
  var original = "";

  for (i = 0; i < arg.length; i++) {
  
    if (document.getElementById(arg[i])) {

      original = document.getElementById(arg[i]).style.display;
      
      if (original == "none")  { toggle_content_on(arg[i]);   }
      if (original == "block") { toggle_content_off(arg[i]);  }

    }
  }
  
  return false;
}

/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_content_off()                                          */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:          id                                                            */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           27 February 2010                                              */
/*                                                                                */
/**********************************************************************************/

function toggle_content_off() {

  var arg = toggle_content_off.arguments;
  var id = arg[0];
 
  if (document.getElementById(id)) {
    document.getElementById(id).style.display = "none";
  } 

  return false;
}


/**********************************************************************************/
/*                                                                                */
/*  Function Name:  toggle_content_on()                                           */
/*  Description:                                                                  */
/*  Parameters                                                                    */
/*  Input:          id                                                            */
/*  Output:         FALSE                                                         */
/*                                                                                */
/*  Author:         Raymond Chow                                                  */
/*  Date:           27 February 2010                                              */
/*                                                                                */
/**********************************************************************************/


function toggle_content_on() {

  var arg = toggle_content_on.arguments;
  var id = arg[0];
 
  if (document.getElementById(id)) {   
    document.getElementById(id).style.display = "block";
  } 

  return false;
}

function  getElementsByAttribute(attribute, attributeValue)
{
  var elementArray  = new Array();
  var matchedArray  = new Array();

  if  (document.all)
  {
    elementArray = document.all;
  }
  else
  {
    elementArray  = document.getElementsByTagName("*");
  }

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

    if  (attribute == "class")  {
      var pattern = new RegExp("(^| )" + attributeValue + "( |$)");

      if (pattern.test(elementArray[i].className))
      {
        matchedArray[matchedArray.length] = elementArray[i];
      }

    }
    else if (attribute == "for")
    {
      if  (elementArray[i].getAttribute("htmlFor") ||  elementArray[i].getAttribute("for"))
      {
        if  (elementArray[i].htmlFor == attributeValue)
        {
          matchedArray[matchedArray.length] = elementArray[i];
        }
      }
    }
    else if (elementArray[i].getAttribute(attribute) == attributeValue)
    {
      matchedArray[matchedArray.length] = elementArray[i];
    }

  }

  return matchedArray;

}


function getScrollingPosition()
{
  var position  = [0,0];

  if  (typeof window.pageYOffset != 'undefined')
  {
    position  = [window.pageXOffset,window.pageYOffset];
  }
  else if (typeof document.documentElement.scrollTop != 'undefined' && document.documentElement.scrollTop > 0)
  {
    position  = [document.documentElement.scrollLeft,document.documentElement.scrollTop];
  }
  else if (typeof document.body.scrollTop != 'undefined')
  {
    position  = [document.body.scrollLeft, document.body.scrollTop];
  }

  return position;

}

function getViewportSize()
{
  var size  = [0,0];

  if  (typeof window.innerWidth != 'undefined')
  {
    size  = [window.innerWidth,window.innerHeight];
  }
  else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
  {
    size  = [document.documentElement.clientWidth,document.documentElement.clientHeight];
  }
  else
  {
    size  = [document.getElementsByTagName('body')[0].clientWidth, document.getElementsByTagName('body')[0].clientHeight,];
  }

  return  size;

}
