/**
 * This file will contain CSC common functions.
 *
 *****************************************************************************/  
  /**_csc_asyncUpdater(container, url) 
   * @para container: div Id, whoes contents will be updated by this function.
   * @para url      : http url, which whill be used to fetch the data. This 
   *                  is expected to return data in plain HTML format.
   * @dependencies  : protytype ver 1.2 or higer. 
   *--------------------------------------------------------------------*/
  function _csc_asyncUpdater(container, url)
  {
     _csc_asyncUpdater(container, url, false);
  }
  function _csc_asyncUpdater(container, url, highlite)
  {
    if ((container!==null)&&(url!==null)){
       url = url+'&_isAsync_=true';
       new Ajax.Updater(
       container,
       url,
       {
           method: 'get'
       });
       
       if(highlite){
          _csc_hlEffect(container)
       }
    }
  }
  
 /*****************************************************************************/  
  /**_csc_asyncUpdater(container, url) 
   * @para container: div Id, whoes contents will be updated by this function.
   * @para url      : http url, which whill be used to fetch the data. This 
   *                  is expected to return data in plain HTML format.
   * @dependencies  : protytype ver 1.2 or higer. 
   *--------------------------------------------------------------------*/
  
  function _csc_asyncUpdaterF(container, formId) {
      _csc_asyncUpdaterF(container, formId, false);
  }
  
  function _csc_asyncUpdaterF(container, formId, highlite) {
         var frm     = document.forms[formId];
         var getstr = "";
         
         var link = frm.action;
         for (var k=0; k<frm.elements.length; k++) {
            var frmElem = frm.elements[k];
            if ((frmElem.type=="text")||(frmElem.type=="textarea")||(frmElem.type=="select-one")||(frmElem.type=="button")||(frmElem.type=="submit")||(frmElem.type=="hidden")   ){
               getstr += frmElem.name + "=" + escape(frmElem.value) + "&";
            }else if ((frmElem.type=="checkbox")||(false)){
               if (frmElem.checked) {
                  getstr += frmElem.name + "=" + escape(frmElem.value) + "&";
               } else {
                  getstr += frmElem.name + "=&";
               }
            }else if ((frmElem.type=="radio")||(false)){
               if (frmElem.checked) {
                  getstr += frmElem.name + "=" + escape(frmElem.value) + "&";
               }
            }else if ((frmElem.type=="SELECT")||(false)){
               if (frmElem.checked) {
                  getstr += frmElem.name + "=" + escape(frmElem.value) + "&";
               }
            }else{
               //alert("element: "+frmElem+" "+frmElem.type+"  "+frmElem.name+" "+frmElem.value );
            }
            
         }      
         
         if (link.indexOf('?') >= 0){
            getstr = link+'&'+getstr;
         }else{
            getstr = link+'?'+getstr;
         }
         
         
         //alert(getstr);
         getstr = getstr+'&_isAsync_=true';
         
         _csc_asyncUpdater(container, getstr, highlite)
         
   }
  
  
  /** _csc_enableButton(buttonId) 
   * @buttonId      : button Id, which need to be enabled.
   * @dependencies  : protytype ver 1.2 or higer. 
   *--------------------------------------------------------------------*/
  function _csc_enableButton(buttonId){
     $(buttonId).disabled=false;
  }
  /**_csc_disableButton(buttonId) 
   * @buttonId      : button Id, which need to be disabled.
   * @dependencies  : protytype ver 1.2 or higer. 
   *--------------------------------------------------------------------*/
  function _csc_disableButton(buttonId){
     $(buttonId).disabled=true;
  } 
  
  /**_csc_hlEffect(elemId) 
   * @param:elemId        : Div Id, which need to be Highlighted.
   * @param:restoreBgColor: color in '#nnnnnn' format, which be used as the 
   *                        final background color of the div.
   * @param:dependencies  : protytype ver 1.2 or higer.
   *
   * Ensure Style's Display property is not set in CSS, if needed, it
   * should be added as inline Style. Else Effect.BlindUP/Down will not work.
   *--------------------------------------------------------------------*/
  function _csc_hlEffect(elemId){
     new Effect.Highlight(elemId);
  }   
  function _csc_hlEffect(elemId, restoreBgColor){
     new Effect.Highlight(elemId, {restorecolor:restoreBgColor});
  } 
  
  
  function toggleDispImg( targetId ){
	   _csc_toggleDispImgName(targetId, null);
  }
  function toggleDispImgName( targetId, imgName ){
      _csc_toggleDispImgName(targetId, imgName);
  }

  function _csc_toggleDispImg( targetId ){
     _csc_toggleDispImgName(targetId, null);
  }
  function _csc_toggleDispImgName( targetId, imgName ){
     var _elm_ = $(targetId);
     if (imgName==null) imgName = 'toggleV';
     var img = document.getElementById(targetId+'Img');
     if (_elm_.style.display=='none'){
         Effect.BlindDown(_elm_,{duration:2});
         img.src="/pres/root/img/global/"+imgName+"-C.gif"
     }else{
         Effect.BlindUp(_elm_,{duration:2});
         img.src="/pres/root/img/global/"+imgName+"-O.gif"
     }
  }


  function csc_effect_toggle( targetId ){
     var _elm_ = $(targetId);
     Effect.toggle(_elm_,'appear',{duration:0.5});
  }


  /**_csc_CB_toggle(formId, cbName) 
   * Will toggle the check/uncheck of all the CB in the given form ID with
   * given CB name.
   * @formId        : form id, to what the CB belongs.
   * @cbName        : Name for checkoxes that need processing.
   * @dependencies  : protytype ver 1.5 or higer. 
   *--------------------------------------------------------------------*/
   function _csc_cb_toggle(formId, cbName){
      var formEle = $(formId);
      
      var allcheckboxes = formEle.getInputs('checkbox', cbName);
      
      allcheckboxes.each( function(item){
			                fe = $(item);
                            if (fe.checked) { fe.checked=false; }
                            else { fe.checked = true; }
		                  }
	  );
   }

  /**_csc_CB_checkAll(formId, cbName) 
   * Will check of all the CB in the given form ID with
   * given CB name.
   * @formId        : form id, to what the CB belongs.
   * @cbName        : Name for checkoxes that need processing.
   * @dependencies  : protytype ver 1.5 or higer. 
   *--------------------------------------------------------------------*/
   function _csc_cb_checkall(formId, cbName){
      var formEle = $(formId);
      var allcheckboxes = formEle.getInputs('checkbox', cbName);
      allcheckboxes.each( function(item){
			                fe = $(item);
                            fe.checked = true;
		                  }
	  );
   }

  /**_csc_CB_uncheckAll(formId, cbName) 
   * Will uncheck of all the CB in the given form ID with
   * given CB name.
   * @formId        : form id, to what the CB belongs.
   * @cbName        : Name for checkoxes that need processing.
   * @dependencies  : protytype ver 1.5 or higer. 
   *--------------------------------------------------------------------*/
   function _csc_cb_uncheckall(formId, cbName){
      var formEle = $(formId);
      var allcheckboxes = formEle.getInputs('checkbox', cbName);
      allcheckboxes.each( function(item){
			                fe = $(item);
                            fe.checked = false;
		                  }
	  );
   }
   
  /**_csc_noenter(event) 
   * Will take no-action, if user hits in the ENTER/RETURN key.
   * @event        : form id, to what the CB belongs.
   *
   * usage         
   *   <input type="text" ... onkeypress="return _csc_noenter(event);" .../>  
   *
   *--------------------------------------------------------------------*/
   function _csc_noenter(event) {
     var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
     return !(keyCode == 13);
   }   
   
      