// JavaScript Document
String.prototype.is_email=function(){
   return (/^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/.test(this));	
}

String.prototype.is_empty=function(){
   return (this.search(/\S/)==-1)?true:false;	
}

tab_create=function(id){	
	jQuery("#"+id+" > ul").tabs({fxSlide: true, fxSpeed: 500, cookie: { expires: 30 }, cache:false, selectedClass: "selected"});	
}

set_language=function(lang){
	// set cookie
	jQuery.cookie('_LANGUAGE' , lang, { expires: 30 });
	// reload ui
	load_page("home_main","body-container","",false,{set_lang:lang}); 
}

block_ui=function(block){
	if(block){
		if(jQuery.browser.msie){
			jQuery("body").css({filter: 'alpha(opacity = 50);'});
		}else{
			jQuery("body").css({opacity:'0.50'});
		}
	}else{
		if(jQuery.browser.msie){
			jQuery("body").css({filter: ''});
		}else{
			jQuery("body").css({opacity:'100'});
		}
	}
}

jQuery.easing.elasout = function(x, t, b, c, d) {
							var s=1.70158;var p=0;var a=c;
							if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
							if (a < Math.abs(c)) { a=c; var s=p/4; }
							else var s = p/(2*Math.PI) * Math.asin (c/a);
							return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
						};


ajax_loader=function(){				  
    //var loader = jQuery("#wait").css({position: "absolute", top: "0px", left: "0px", width:"250px"}).hide();
    jQuery().ajaxStart(function() {
		//loader.show();		
		jQuery("body").css({opacity:'.70',cursor:"wait"});
	}).ajaxStop(function() {
		//loader.hide();
		jQuery("body").css({opacity:'',cursor:"default"});
	}).ajaxError(function(a, b, e) {
		throw e;
	}); 	
}

onenter_submit=function(method){
	jQuery(":input").each(function (i) { 
							   
			jQuery(this).keyup(function(event){
				if(event.keyCode == 13){
					method();
				}
			}); 			
    });
}

// other 
check_all=function(object,func){
  form=object.form; 
  for(var i=0;i<form.elements.length;i++){
   if(form.elements[i].type=="checkbox" && form.elements[i].name==object.value){    
    form.elements[i].checked=object.checked;
	if(func){
	  func(form.elements[i]);
	}
   }
  }
}

select_all=function(object,value){
  form=object.form; 
  if(object.value=="Select All"){	  
      var checked=true;
	  object.value="Unselect All";
  }else{
	  var checked=false;
	  object.value="Select All";
  }
  
  for(var i=0;i<form.elements.length;i++){   
   if(form.elements[i].type=="checkbox" && form.elements[i].name==value){    
    form.elements[i].checked=checked;	
   }
  }
}

count_checked=function(name,form){
  var cntchk=0;
  for(var i=0;i<form.elements.length;i++){
    if(form.elements[i].name==name && form.elements[i].checked==true){    
   	  cntchk++;
    }
  }
  
  return cntchk;
 }

do_task=function(options){
	// delegate 
	var delegate=true;
	
	// form object
	var form=(options.form_name)?document.forms[options.form_name]:document.frm;
	// create form elements if not defined
	create_form_elements(form);
	// set key	
	set_keys(options.id,form);
	// alert on no select
	options.select = options.select || 'never';
	if(options.select=='required'){
		if(count_checked("_keys[]",form)==0){
		  alert("Please select some %s1% to %s2%".replace("%s1%",options.name_of).replace("%s2%",options.task.replace("_"," ")));	
		  try{
		   form.ctasks.selectedIndex=0;
		  }catch(x){}
		  return;
		}
	}
	
	// conmfirm delete
	if(is_delete_operation(options)){
		var msg_confirm = "Waring : Are you sure to delete selected %s% ?";
		if(!confirm(msg_confirm.replace("%s%",options.name_of))){
        	return;         	
	  	}
	}
	
	// set task
	form.mode.value=options.task;
	
	// set hash
	form_hash(form,options.id);
	// set _tasks
	form._tasks.value=serilize(options);
	
	// invoke validator
	if(options.validator){		    
	  	if(typeof(options.validator)=="function"){			
			if(!options.validator(form)) return;
		}
	}		
	
	// set formaction if set
	form.action=(options.form_action)?options.form_action:form.action;
	
	// send form		
	form.submit();	
	
}

set_keys=function(id,form){
	if(parseInt(id)==0) return;
	
	for(i=0;i<form.elements.length;i++){
	   if(form.elements[i].type=="checkbox" && form.elements[i].name=="_keys[]"){
		  if(form.elements[i].value==id){
			form.elements[i].checked=true;
			break;
		  }   
	   }
	}
	
	if(document.getElementById("_key")){
		document.getElementById("_key").value=id || 0;
	}
}

group_task=function(el,s,n){
	// check
	if(el.value=="")return;
	
	do_task({task:el.value ,select: s, name_of: n});
}

is_delete_operation=function(options){
  if(options.task && options.task.toString().indexOf("delete")!=-1){
	return true;
  }else if(options.subtask && options.subtask.toString().indexOf("delete")!=-1){
	return true;  
  }	
  
  return false;
}

serilize=function(options){
	o_add=[];
	for(o in options){
		if(typeof(options[o])=="function"){	
		  continue;
		}
		o_add.push(o+"="+encodeURI(options[o]))
	}
	return o_add.join("&");
}

form_hash=function(form,id){
	if(form.elements["_form_hash"]==undefined){
		 create_element(form,"_form_hash");	   
	}
	var id= id || 0;	
	form._form_hash.value=new Date().getTime() + id + Math.round(Math.random()*100);		
}

create_form_elements=function(form){
	var form_elements=["mode","_key","_form_hash","_tasks"];
	
	jQuery.each(form_elements,function (i) {     
		if(form.elements[this]==undefined){
		  	create_element(form,this);	   
		}			
    });	
}

create_element=function(form,name){
     var n       = document.createElement("input");
		 n.type  = "hidden";
		 n.name  = name;
		 n.id    = name;
		 n.value = "";
		 form.appendChild(n);
		 delete(n);
}

do_sort=function(field,form){
	
	form=(form==undefined)?document.frm:form;	
	
	if(form.order_by==undefined) {
		create_element(form,"order_by");	
		create_element(form,"order_by_dir");		
	}
	
	if(form.order_by_dir.value=="ASC"){
      	form.order_by_dir.value="DESC";
	}else{
      	form.order_by_dir.value="ASC";	 
	}
	
	if(form.order_by.value!=field){
      	form.order_by.value="ASC";		  
	}
	
	form.order_by.value=field;
	form.submit();
}

editor_data=function(name){
  	var editor=FCKeditorAPI.GetInstance(name);
	html=editor.GetHTML();	
	return html;
}

editor_validator=function(name){
	jQuery.validator.addMethod("editor_required", function(value) {
		var data=editor_data(name);
		
		if(data.toString().is_empty()){			
			return false;	  	
		}
		return true;
	});
}

popup_small=function(url,height,width,options){  
  var options =options || {};
  
  if(screen.availHeight && screen.availWidth){
    var ah=screen.availHeight-30;
    var aw=screen.availWidth-10;
  }else{
	var ah=708; 
	var aw=1014;	
  }  
  if(height==undefined){	
    height=600;
  }
  if(width==undefined){	
    width=700;
  }  
		
  var xc = (aw - 500) / 2;
  var yc = (ah - 500) / 2;
  
  // configs
  var resizable  =(options.resizable!=undefined && options.resizable=="N")?0:1;
  var scrollbars =options.scrollbars || 1;
  var winProp='toolbar=0, menubar=0, resizable='+resizable+', scrollbars='+scrollbars+', dependent=0, status=0,';      
      winProp+=' width='+width+', height='+height+',left=' + xc + ', top=' + yc;  	
    
  var new_window = window.open(url, 'new_window', winProp);
  if(new_window && new_window.focus){
    new_window.focus();
  }
}

popup_fullscreen=function(url){   
  if(screen.availHeight && screen.availWidth){
    var ah=screen.availHeight-30;
    var aw=screen.availWidth-10;
  }else{
	var ah=708; 
	var aw=1014;	
  }  
  	
  height=screen.availHeight;  
  width=screen.availWidth;
  	
  var xc = (aw - 500) / 2;
  var yc = (ah - 500) / 2;
  
  var winProp='toolbar=0, menubar=0, location=0, resizable=0, scrollbars=1, dependent=0, status=0,';      
      winProp+=' width='+width+', height='+height+',left=' + xc + ', top=' + yc;
  	
    
  var lock_window = window.open(url, 'lock_window', winProp);
  if(lock_window && lock_window.focus){
    lock_window.focus();
  }
}