var defaultMenuWidth = "150px" //set default menu width.
 var ACCEPTED_KEYS = {
	  KEY_BACKSPACE: 8,
	  KEY_TAB:       9,
	  KEY_RETURN:   13,
	  KEY_ESC:      27,
	  KEY_LEFT:     37,
	  KEY_UP:       38,
	  KEY_RIGHT:    39,
	  KEY_DOWN:     40,
	  KEY_DELETE:   46,
	  KEY_HOME:     36,
	  KEY_END:      35,
	  KEY_PAGEUP:   33,
	  KEY_PAGEDOWN: 34,
	  KEY_INSERT:   45
      
	 }
var ignore_keys = [ ACCEPTED_KEYS.KEY_BACKSPACE,
					   ACCEPTED_KEYS.KEY_TAB,
					   ACCEPTED_KEYS.KEY_RETURN,
					   ACCEPTED_KEYS.KEY_ESC,
					   ACCEPTED_KEYS.KEY_LEFT,
					   ACCEPTED_KEYS.KEY_UP,
					   ACCEPTED_KEYS.KEY_RIGHT,
					   ACCEPTED_KEYS.KEY_DOWN,
					   ACCEPTED_KEYS.KEY_DELETE,
					   ACCEPTED_KEYS.KEY_HOME,
					   ACCEPTED_KEYS.KEY_END,
					   ACCEPTED_KEYS.KEY_PAGEUP,
					   ACCEPTED_KEYS.KEY_PAGEDOWN,
					   ACCEPTED_KEYS.KEY_INSERT]; 
var SPECIAL_CHARS = '';

for(var i=0; i < ignore_keys.length; i++){
	var mychars = "%&'(.$#!-";
	try{
		if(mychars.indexOf(String.fromCharCode(ignore_keys[i])) < 0){
			SPECIAL_CHARS += String.fromCharCode(ignore_keys[i]);
		}
	}catch(e){}
}

var ie5=document.all && !window.opera;
var ns6=document.getElementById;
var s = new Array();

 function is_integer(sText)
  {
     var ValidChars = "0123456789";
     var IsNumber=true;
     var Char;
      for (i = 0; i < sText.length && IsNumber == true; i++)
      {
          Char = sText.charAt(i);
          if (ValidChars.indexOf(Char) == -1)
          {
              IsNumber = false;
          }
      }
      return IsNumber;
  }

function iecompattest(){
    return (document.compatMode && document.compatMode.indexOf("CSS")!=-1)? document.documentElement : document.body
}


//check number: permit input in textbox data type is number
 function check_number(e)
 {
    var keynum;
    var keychar;   
	
	e = e || window.event; 
    //alert(e);
	keynum = e.charCode || e.keyCode || e.which;	  
	keynum = parseInt(keynum);

	for(var i=0; i < ignore_keys.length; i++){
		
		if( keynum == ignore_keys[i] ){			
			if("'.".indexOf(String.fromCharCode(keynum)) >= 0  && Prototype.Browser.IE){
				return false;
			}			
			return true;			
		}	
	 }
	 

	var number = '0123456789' + SPECIAL_CHARS;
	
    keychar = String.fromCharCode(keynum);
	
	if(Prototype.Browser.Gecko){
		var el = $(Event.element(e));
		if(el.value){
			el.value = el.value.replace(/[^0-9]+/g,'')
		}
	}

	if (number.indexOf(keychar) >= 0)
	{
		return true;
	}else{
		return false;	
	}

 }


 //check number: in text_box payment
 function check_number_pay(e)
 {
    var keynum;
    var keychar;

	e = e || window.event;
    //alert(e);
	keynum = e.charCode || e.keyCode || e.which;
	keynum = parseInt(keynum);

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

		if( keynum == ignore_keys[i]){
			if("'".indexOf(String.fromCharCode(keynum)) >= 0  && Prototype.Browser.IE){
				return false;
			}
			return true;
		}
	 }


	var number = '0123456789.' + SPECIAL_CHARS;

    keychar = String.fromCharCode(keynum);

	if(Prototype.Browser.Gecko){
		var el = $(Event.element(e));
		if(el.value){
            el.value = el.value.replace(/[^0-9\.]+/g,'')
			
		}
	}

	if (number.indexOf(keychar) >= 0)
	{
		return true;
	}else{
		return false;
	}

 }




function getViewport(){
	if (typeof window.innerWidth != 'undefined')
	 {
		  viewportwidth = window.innerWidth;
		  viewportheight = window.innerHeight;
	 }  else if (typeof document.documentElement != 'undefined'
		 && typeof document.documentElement.clientWidth !=
		 'undefined' && document.documentElement.clientWidth != 0)
	 {
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
		   viewportwidth = document.documentElement.clientWidth;
		   viewportheight = document.documentElement.clientHeight;
	 }else{
		   viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
		   viewportheight = document.getElementsByTagName('body')[0].clientHeight;
	 }	

	 return {width:viewportwidth, height:viewportheight}
}

function is_visible(el){
	el = $(el);
	return (el.style.display.strip() != "none") && (el.style.visibility.strip() != "hidden")
}


function mask(){
    close_box('admin_action_box');
    hide_popups();
    mask_without_action_box();
}

function mask_without_action_box(){
    if (!$('over_mask'))
        return;
    $('over_mask').style.top = "0px";
    $('over_mask').style.left = "0px";

    if (!Prototype.Browser.IE)
	$('over_mask').style.height = $$('html').first().getHeight() + "px";
    else
	$('over_mask').style.height = $$('body').first().getHeight() + "px";

    // $('over_mask').setStyle("width:"+ w + "px");
    setTimeout("$('over_mask').setOpacity(0.4)",1);
    $('over_mask').show();

    is_masked = true;
  }


function unmask(){
    close_box('admin_action_box');
    if ($('menu'))
	$('menu').style.zIndex = 3;
    remove_project_share_roles();
    if($('over_mask')){
        var mask_element = $('over_mask');
//      mask_element.setStyle("width:0px");
//      mask_element.setStyle("height:0px");
        mask_element.hide();
    }
    	 is_masked = false;
    uncheck_all();
 }

function remove_project_share_roles(){
    var old_user_role = $$('div.project_share_roles').first();
    if (old_user_role)
        old_user_role.remove();
    var highlighted_container = $$('#users_for_notes div.edited');
    if (highlighted_container && highlighted_container.first())
	highlighted_container.first().removeClassName('edited');
}

window.on_load_funcitons = new Array();
function add_onload(func) {
  window.on_load_funcitons.push(func);
}
function run_on_load_function() {
  window.on_load_funcitons.each(function(e){e()});
}

window.onload = run_on_load_function;

document.observe("dom:loaded", function(){
    $$('input.suggestable').each(
	function(element){

	    element.observe('focus', function(){
		element.className = '';
	    });
	    element.observe('blur', function(){
		if (element.value.blank())
		    element.className = 'suggest';
	    });
	}
    );
});