var EMPTY_FIELDS      = -1240;
var SUBJECT_NOT_VALID = -1241;
var TITLE_IS_LONG = -1242;
var TITLE_NOT_VALID = -1243;
var INVALID_DESCRIPTION = -1244;
var ERROR_EMPTY_TITLE = 'Please enter subject. No HTML tags are allowed for subject.';
var ERROR_INVALID_TITLE = 'Enter valid subject. No special characters are allowed.';
var ERROR_EMPTY_DESCRIPTION_REPLY = 'Please enter message.'; 
var ERROR_LONG_TITLE         = 'Subject cannot be more than 200 characters.';
var ERROR_INVALID_DESCRIPTION  = 'Please enter valid description.';
var DELETE_ANNOUNCEMENT = 'Are you sure you want to delete announcement?';
var SUCCESS = 0;


var AjaxObject = {

handleSuccess_pagination:function(o){
	document.getElementById('forums_loading').style.display = 'none';
	document.getElementById("forums_loading").innerHTML = '';
	document.getElementById("pagination").innerHTML = o.responseText;    		
  },
 handleFailure_pagination:function(o){
    // Failure handler                                                                                                                                   
    },

handleStart_forums:function(){
	document.getElementById("forums_loading").innerHTML = loading;
    },
handleComplete_forums:function(){
	document.getElementById("forums_loading").innerHTML = loading;
    },
handleAbort_forums :function(){
	// Abort handler
    }

}

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */
var callback_pagination =
{
    customevents:{ 
	        onStart:AjaxObject.handleStart_forums, 
	        onComplete:AjaxObject.handleComplete_forums,	       
	        onAbort:AjaxObject.handleAbort_forums 
	    }, 
    success:AjaxObject.handleSuccess_pagination,
    failure:AjaxObject.handleFailure_pagination,
    scope: AjaxObject
};




function forum_toggleTextBox(szDivID, iState) // 1 visible, 0 hidden
{
    //    alert(szDivID);
    document.getElementById('msg_body').value = '';
    //document.getElementById('szDivID').value = '';
    if(document.layers)    //NN4+
	{
	    document.layers[szDivID].visibility = iState ? "show" : "hide";
	}
    else if(document.getElementById)      //gecko(NN6) + IE 5+
	{
	    var obj = document.getElementById(szDivID);
	    obj.style.display = iState ? "block" : "none";
	}
    else if(document.all)       // IE 4
	{
	    document.all[szDivID].style.display = iState ? "block" : "none";
	}
}


function adda_forum_toggleTextBox(szDivID, iState, params) // 1 visible, 0 hidden
{
     if(params == false)
      {
	document.getElementById('error_description_reply_'+szDivID).innerHTML = '';
      }
    else if(params == true)
      {
	document.getElementById('error_description').innerHTML = '';
      }

    document.getElementById('msg_body').value = '';
    //document.getElementById('szDivID').value = '';
    if(document.layers)    //NN4+
	{
	    document.layers[szDivID].visibility = iState ? "show" : "hide";
	}
    else if(document.getElementById)      //gecko(NN6) + IE 5+
	{
	    var obj = document.getElementById(szDivID);
	    obj.style.display = iState ? "block" : "none";
	}
    else if(document.all)       // IE 4
	{
	    document.all[szDivID].style.display = iState ? "block" : "none";
	}
}

function make_null()
{
        document.getElementById('title').value = '';
        document.getElementById('message').value = '';
}

function more(text1,list1){
    var listElementStyle=document.getElementById(list1).style;
    if (listElementStyle.display=="none"){
        listElementStyle.display="block";
        document.getElementById(text1).innerHTML="Hide...";
    }
    else {
        listElementStyle.display="none";
        document.getElementById(text1).innerHTML="More...";
    }
}

function forum_restw(frm,max,dispentered)                                                                          
{
    var inp = frm.value.replace(/^\s+|\s+$/g,'');                                                                
    var l = parseInt(inp.length);                                                                              
    if (l > max)                                                                                             
        { 
            inp = inp.substr(0,max);                                                                              
            frm.value = inp;                                                                                     
        }                                                                                                      
    document.getElementById(dispentered).innerHTML = inp.length;                                            
    document.getElementById('show_count').innerHTML = '';                                                       
}      

function forum_checkcount()
{
    if (document.getElementById("cprofile").value.length < 50 || document.getElementById("cprofile").value.length > 300)
	{
	    return false;
	}
    else
	{
	    return true;
	}
}//end of function checkcount()

//! Pagination
function pagination(base_url,keyword,show_from)
{       
    var post_data = 'keyword='+keyword+'&pagination=y'+'&show_from='+show_from;
    if(keyword == '')
	{
	    YAHOO.util.Connect.asyncRequest('POST',base_url, callback_pagination, post_data);       
	}
    else
	{
	    YAHOO.util.Connect.asyncRequest('POST',base_url, callback_pagination, post_data);       
	}


    if(env_value == 'Online')
	{
	    pageTracker._trackPageview(base_url);
	}
    

}

function adda_forumvalidations(frm,param)
{
    var description = document.getElementById('msg_body').value;
    var error_code = 0;
    
     if (description || description == '')
      {
	var error_description = forum_validateDescription(description);
	if (error_description)
	  {
	    forum_showError(error_description,'error_description');
	    error_code = error_description;
	  }
	else
	  {
	    document.getElementById('error_description').innerHTML = '';
	  } 
      }
   
     if(error_code < 0)
       {
	 return false;
       }
     else if(param == 'postReply')
       {
	 frm.submit();
       } 
    
}

function forumvalidations(frmf,param)
{
    var  title = document.getElementById('title').value; 
    var description = document.getElementById('message').value;
    var error_code = 0;
    
     if(title || title == '')
      {
	var error_title = forum_validateTitle(title);
	if(error_title)
	  {
	    forum_showError(error_title,'error_title');
	    error_code = error_title;
	  }
	else
	  {
	    document.getElementById('error_title').innerHTML = '';
	  } 
      }
    
     if (description || description == '')
      {
	var error_description = forum_validateDescription(description);
	if (error_description)
	  {
	    forum_showError(error_description,'error_description');
	    error_code = error_description;
	  }
	else
	  {
	    document.getElementById('error_description').innerHTML = '';
	  } 
      }
   
     if(error_code < 0)
       {
	 return false;
       }
     else if(param == 'postForumTopic')
       {
	 frmf.submit(document.getElementById('submittype').value='postmessage');
       } 
     else if(param == 'previewForumTopic')
       {
	 frmf.submit(document.getElementById('submittype').value='previewmessage');
       }
}


function adda_forumvalidations_reply(frm,id,param)
{
    var description = document.getElementById('msg_'+id).value;
    var error_code = 0;
    
     if (description || description == '')
      {
	var error_description = forum_validateDescription(description);
	if (error_description)
	  {
	    forum_showError_reply(error_description,'error_description_reply_'+id);
	    error_code = error_description;
	  }
	else
	  {
	    document.getElementById('error_description').innerHTML = '';
	  } 
      }
   
     if(error_code < 0)
       {
	 return false;
       }
     else if(param == 'postReply')
       {
	 frm.submit();
       } 
    
}

function forum_validateTitle(name)
{
  var filter  = /^[a-zA-Z0-9\.\-\ \!\@\#\$\%\^\&\*\(\)\_\{\}\[\]\;\:\"\'\,\?\/\\\`\~ ]+$/;                                   
  if(trim(name) == '')
    {
      return EMPTY_FIELDS;
    } 
  else if(!filter.test(name))
    {
      return TITLE_NOT_VALID;
    }
  else if(name.length > 200)
    {
      return TITLE_IS_LONG;
    }
  else 
    {
      return SUCCESS;
    }
}

function forum_validateDescription(description)
{
    // var filter  = /^[a-zA-Z0-9\.\-\ \!\n\s\\+\-\=\@\#\$\%\^\&\*\(\)\_\{\}\[\]\;\:\"\'\,\?\/\\\`\~]+$/;                               
    var filter  = /^[^\<\>]+$/;
    if (trim(description) == '')
	{
	    return EMPTY_FIELDS;
	}
    else if(!filter.test(description))                                                                                      
	{
	    return INVALID_DESCRIPTION;
	}
    else
	{
	    return SUCCESS;
	}
}



function forum_showError(error_code,div_id)
{
  if(div_id == 'error_title')
    {
      if(error_code  == EMPTY_FIELDS)
	{
	  document.getElementById(div_id).innerHTML = ERROR_EMPTY_TITLE;
	}
      else if(error_code  == TITLE_NOT_VALID)
	{                 
	  document.getElementById(div_id).innerHTML = ERROR_INVALID_TITLE;
	}
      else if(error_code  == TITLE_IS_LONG)
	{                 
	  document.getElementById(div_id).innerHTML = ERROR_LONG_TITLE;
	}
      else
	{
	  document.getElementById(div_id).innerHTML = '';
	}
    }
  if (div_id == 'error_description')
    {
      
      if (error_code == EMPTY_FIELDS)
	{
	  document.getElementById(div_id).innerHTML = ERROR_EMPTY_DESCRIPTION_REPLY;
	}
      else if (error_code == INVALID_DESCRIPTION)
	{
	      document.getElementById(div_id).innerHTML = ERROR_INVALID_DESCRIPTION;
	}
      else
	{
	  document.getElementById(div_id).innerHTML = '';
	}
    }    
}
function forum_showError_reply(error_code,div_id)
{

  if (error_code == EMPTY_FIELDS)
    {
      document.getElementById(div_id).innerHTML = ERROR_EMPTY_DESCRIPTION_REPLY;
    }
  else if (error_code == INVALID_DESCRIPTION)
    {
      document.getElementById(div_id).innerHTML = ERROR_INVALID_DESCRIPTION;
    }
  else
    {
      document.getElementById(div_id).innerHTML = '';
    }    
}

function trim(str, chars)
{
  return ltrim(rtrim(str, chars), chars);
} 

function ltrim(str, chars)
{
  chars = chars || "\\s";
  return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars)
{
  chars = chars || "\\s";
  return str.replace(new RegExp("[" + chars + "]+ s", "g"), "");
}
