function loadSelect(divName, location, idValue){
	document.getElementById(divName).innerHTML = "Carregando...";
	new Ajax.Updater(divName, location+idValue, {asynchronous:true, evalScripts:false})
}

function hideLoading(divName){
	document.getElementById("PopupDiv"+divName).style.visibility = 'hidden';
}


function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function saveHotelUser(){

	var form = document.getElementById( 'hotelUser' );
	var url_ajax = '../../saveUser?' + Form.serialize(form);

	var handlerFunc = function(t) {
		responseText = t.responseText;
		if( responseText=='1' ){
			jQuery( '#obj_gridboxUsers' ).flexReload();		
		}else{
			alert(responseText);
		}
	}
		
	var errFunc = function(t) {
	    alert('Error ' + t.status + ' -- ' + t.statusText);
	}
	new Ajax.Request(url_ajax, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});
	
}

function removeHotelUser(){

	var grid = jQuery( '#obj_gridboxUsers' );
	var rows = grid.flexReturnSelected();
	if( rows == '' ){
		window.alert('Selecione um registro para exclusao');
		return false;
	}

	id = grid.cells(rows,0);

	var handlerFunc = function(t) {
		responseText = t.responseText;
		if( responseText=='1' ){
			grid.flexReload();
		}else{
			alert(responseText);
		}
	}
		
	var errFunc = function(t) {
	    alert('Error ' + t.status + ' -- ' + t.statusText);
	}

	var url_ajax = '../../removeUser?idUser=' + id;
	new Ajax.Request(url_ajax, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});
	
}

function doRefreshTime(initialaccess, currenttime, divName){

	if( !refreshTime )
		return false;
	
	if(initialaccess==-1)
		return true; 
	
	var time = getTimeFormat(initialaccess, currenttime);
	currenttime = (currenttime*1) + 1;
	
	time['hours'] = (time['hours'] < 10?"0"+time['hours']:time['hours']);
	time['minutes'] = (time['minutes'] < 10?"0"+time['minutes']:time['minutes']);
	time['seconds'] = (time['seconds'] < 10?"0"+time['seconds']:time['seconds']);

	var tmp_message = '%hour%:%min%:%sec%';

	tmp_message = tmp_message.replace("%hour%", time['hours']);
	tmp_message = tmp_message.replace("%min%", time['minutes']);
	tmp_message = tmp_message.replace("%sec%", time['seconds']);

	document.getElementById(divName).innerHTML = "<b>"+tmp_message+"</b>";
	
	window.setTimeout('doRefreshTime(\''+initialaccess+'\', \''+currenttime+'\', \''+divName+'\')', 1000);
	return true;
}

function doRefreshTimeReversal( initialaccess, currenttime, divName ){
  
    if( !refreshTime )
    {
        return false;  	
    }
  
    if(initialaccess == -1)
    {
    	return true; 
    }
    
    var time = getTimeFormat(initialaccess, currenttime);
    
    currenttime = (currenttime*1) - 1;
    
    time['hours'] = (time['hours'] < 10 && time['hours'] > 0 ? "0"+time['hours'] : time['hours'] );
    time['minutes'] = (time['minutes'] < 10 && time['minutes'] >= 0  ? "0"+time['minutes'] : time['minutes'] );
    time['seconds'] = (time['seconds'] < 10 &&  time['seconds'] >= 0  ? "0" + time['seconds']:time['seconds'] );

    var tmp_message = '%hour%:%min%:%sec%';

    tmp_message = tmp_message.replace("%hour%", time['hours']);
    tmp_message = tmp_message.replace("%min%", time['minutes']);
    tmp_message = tmp_message.replace("%sec%", time['seconds']);
                      
    if( tmp_message == '0:00:-1' )
    {
      return false;
    }
	
    document.getElementById(divName).innerHTML = tmp_message;
    
    window.setTimeout('doRefreshTimeReversal(\''+initialaccess+'\', \''+currenttime+'\', \''+divName+'\')', 1000);
    return true;

}// doRefreshTimeReversal

function getTimeFormat(until, currenttime){

   var remain = new Array();
   var now = currenttime;
   var difference = now - until;
   
   var days;
   var hours;
   var minutes;
   var seconds;
   
   remain['hours'] = hours = parseInt(difference/3600);
   difference = difference - (hours*3600);

   remain['minutes'] = minutes = parseInt(difference/60);
   difference = difference - (minutes*60);

   remain['seconds'] = seconds = difference;
   
   if(remain['days']==0 && remain['hours']==0 && remain['minutes']==0 && remain['seconds']==0){
   	remain['credits'] = false;
   }else{
   	remain['credits'] = true;
   }
   if(remain['hours']==24 && remain['minutes']==0 && remain['seconds']==0){
   	return false;
   }
     
   return remain;

}

function doUpdateTraffic( url_ajax, refreshing ){

	if( !updateTraffic && !waitForRefresh )
		return false;

	divDown = document.getElementById('divReceived');
	divUp	= document.getElementById('divSent');

	divDown.innerHTML 	= refreshing + '...';
	divUp.innerHTML 	= refreshing + '...';

	var handlerFunc = function(t) {
		
		responseText = t.responseText;
		responseText = responseText.split(';');
		var download = responseText[0];
		var upload 	 = responseText[1];

		divDown.innerHTML 	= download;
		divUp.innerHTML		= upload;
		
		if( waitForRefresh && download=='0 bytes' && upload=='0 bytes' ){
			doUpdateTraffic( url_ajax, refreshing );
		}else if( waitForRefresh && download!='0 bytes' && upload!='0 bytes' ){
			waitForRefresh = false;
		}
	}
		
	var errFunc = function(t) {
	    
	}
	
	new Ajax.Request(url_ajax, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});
	window.setTimeout('doUpdateTraffic(\''+url_ajax+'\', \''+refreshing+'\')', 120000);
	
}// doUpdateTraffic

function universalShowDiv( div ){
	div = document.getElementById(div);
	div.style.visibility = 'visible';
	div.style.height = '';
	div.style.position = '';
}

function universalHideDiv( div ){
	div = document.getElementById(div);
	div.style.visibility = 'hidden';
	div.style.height = '0px';
	div.style.position = 'absolute';
}

function alternateDiv( divName, number ){
	div = document.getElementById( divName );

	if( div.innerHTML == '<a><img src="/images/misc/enable.png"></a>' ){
			universalShowDiv('divFix-' + number);
			universalHideDiv('divDin-' + number);
	}else{
			universalHideDiv('divFix-' + number);
			universalShowDiv('divDin-' + number);
	}
}

function hideDivBySelectTag( select, hideValue, divName )
{
		
	// TODO: Support array for hideValue
    var value = select.options[select.selectedIndex].value;
    var div = document.getElementById( divName );
    if ( value == hideValue ) {
        div.style.display = 'block';
        div.style.height = '';
    } else {
        div.style.display = 'none';
        div.style.height = '0';
        
    } 
}

function hideDivByValueTag( input, hideValue, divName, height )
{

	if(!height)
		height = '';
		
	// TODO: Support array for hideValue
    var value = input.value;
    var div = document.getElementById( divName );
    if ( value == hideValue ) {
        div.style.visibility = 'visible';
        div.style.height = '';
        div.style.position = '';
    } else {
        div.style.visibility = 'hidden';
        div.style.height = '0';
        div.style.position = 'absolute';
    } 
}

function toggleSlide( divName, toggleFieldName, img )
{
    var toggleValue = document.getElementById( toggleFieldName );
    
    if ( toggleValue.value == 0 ) {
        new Effect.SlideUp( divName, {});
        toggleValue.value = 1;
        img.src = "/images/misc/collapse.png";
    } else {
        new Effect.SlideDown( divName, {});
        toggleValue.value = 0;
        img.src = "/images/misc/uncollapse.png";
    }
}

function clearFields( div )
{
    var panel = document.getElementById( div );
    var inputList = panel.getElementsByTagName( "INPUT" );
    var textareaList = panel.getElementsByTagName( "TEXTAREA" );

    for ( var i = 0; i < inputList.length; ++i ) {
        if ( inputList[i].type == 'text' || inputList[i].type == 'password' ) {
            inputList[i].value = '';
        }
    }

    for ( var i = 0; i < textareaList.length; ++i ) {
        textareaList[i].value = '';
    }
}

function showDiv( divName )
{
    if ( document.getElementById( 'error-message' ) ) {
        var errorNode = document.getElementById( 'error-message' );
        errorNode.parentNode.removeChild( errorNode );
    }
    obj_div = document.getElementById( divName );
    if (obj_div)
    {
    		obj_div.style.visibility = 'visible';
    		obj_div.style.display = 'block';
    	}
    
}

function hideDiv( divName )
{
    obj_div = document.getElementById( divName );
    if (obj_div)
    {
    		obj_div.style.visibility = 'hidden';
    		obj_div.style.display = 'none';
    	}    
}

function showDivError( errorMessage, delay )
{

	if ( delay < 3 || delay == undefined ) {
		delay = 3;
	}

	if ( !$('errorDivJs') ) {
		div = document.createElement('div'); 
		div.className = 'errorDivJs';
		div.style.visibility = 'hidden';
		div.id = 'errorDivJs';
		document.body.appendChild(div);
	}

	$('errorDivJs').innerHTML = errorMessage;
	div.style.top = "50%"; 
	div.style.left = "50%";
	div.style.left = div.offsetLeft - div.offsetWidth/2; 
	div.style.top = div.offsetTop - div.offsetHeight/2; 	
	div.style.display = 'none';
	div.style.visibility = 'visible';	
	Effect.toggle('errorDivJs');
	setTimeout('Effect.toggle(\'errorDivJs\');', delay*1000);
}

function trim(string){

	return string.replace(/^\s+/, '').replace(/\s+$/, '');
}

function doSendReportSchedulerNow(linkElement, idField, action){
	
	if ( action == 'list' ){
		//Select ID
		var grid = jQuery( '#obj_gridbox' );
		var ids = grid.flexReturnSelected();
		if(ids == '' ){
			alert('Selecione um registro!');
			return false;
		}
		//Construct URL
		var ids = ids.split(',');
		ajax_url = linkElement.href + '?' + idField + '=' + grid.cells(ids[0],0); 
		
	} else {
		//Selelect ID
		id = document.getElementsByName(idField);
		//Construct URL
		ajax_url = linkElement.href + '?' + idField + '=' + id[0].value;
	}
	
	Element.show( indicator );
	
	var handlerFunc = function(t) {
		responseText = t.responseText;
		
		switch( responseText ){
			case '1':
				Element.hide( indicator );
				alert( 'Mensagem Enviada com Sucesso' );
				break;			
			case '2':
				Element.hide( indicator );
				alert( 'Nenhum Destinatario Definido' );
				break;	
			default:
				Element.hide( indicator );
				alert( 'Falha no Envio' );
				break;
		}
	}
		
	var errFunc = function(t) {
		Element.hide( indicator );
	    alert('Error ' + t.status + ' -- ' + t.statusText);
	}
	
	new Ajax.Request (ajax_url, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc}); 
	return false;
	
}

function noFile( divName ){
	document.getElementById( divName ).innerHTML = '<img alt="Nao existe arquivo relacionado" src="/images/misc/file_unavailable.png" /><span class="disabledText">Arquivo inexistente</span>';
}

function removeDocument( idDocument, idEntity, divChange, idHidden, path ){

	if(!confirm('Deseja realmente excluir o arquivo?')){
		return false;
	}

	if( idHidden ){
		document.getElementById(idHidden).value = '';
	}
	
	var handlerFunc = function(t) {
		noFile(divChange);
	}
		
	var errFunc = function(t) {
		alert('Erro ao excluir o arquivo');		
	}
	
	if( idEntity=="-1" ){
		idEntity=0;
	}
	
	var url_ajax = path + 'upload/removeDocument?idEntity='+idEntity+'&idDocument='+idDocument;
	new Ajax.Request(url_ajax, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});
}

function updateContractDiv( inner, hiddenField ){

	document.getElementById('hotspotContract').innerHTML = inner;
	document.getElementById('idDoc').value = hiddenField;
}

function doChangeStatusRealm( linkElement, idField ){

       //Select ID
	   var grid = jQuery( '#obj_gridbox' );
       var ids = grid.flexReturnSelected();
       if(ids == '' ){
               alert('Selecione um registro!');
               return false;
       }

       //Construct URL
       var ids = ids.split(',');
       var id = grid.cells(ids,0);
       ajax_url = linkElement.href + '?' + idField + '=' + id;

       Element.show( indicator );

       var handlerFunc = function(t) {
               responseText = t.responseText;
               hasError = responseText.split('|');
               active   = document.getElementById('active');

               Element.hide( indicator );

               if( hasError.length > 0 && hasError[0]=='error' ){
                       alert(hasError[1]);
               }else{
                    reloadDataGrid_gridbox('report_core/getData?template=corporate_realm');
               }

       }

       var errFunc = function(t) {
               Element.hide( indicator );
           alert('Error ' + t.status + ' -- ' + t.statusText);
       }

       new Ajax.Request (ajax_url, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});
       return false;

}

function replaceAll(checkMe,toberep,repwith){

	var temp = checkMe;
	var i = temp.indexOf(toberep);

	while(i > -1){
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep, i + repwith.length + 1);
	}
	
	return temp;
}

function hideDialog(dialog){

	dialog.cfg.setProperty('visible', false);
	return false;
}

function is_numeric( value ){

	value = value.replace('0', '');
	value = value.replace('1', '');
	value = value.replace('2', '');
	value = value.replace('3', '');
	value = value.replace('4', '');
	value = value.replace('5', '');
	value = value.replace('6', '');
	value = value.replace('7', '');
	value = value.replace('8', '');
	value = value.replace('9', '');

	return !(value.length > 0);
}

function calculeMaxLogins( link ){
	
	var startDate      = $('startDate').value;
	var finishDate     = $('finishDate').value;
	var price          = $('prices').value;
	var maxLogins      = $('maxLogins');
	var maxLoginsLimit = $('maxLoginsLimit');
	
	Element.show('indicator');
	
	var handlerFunc = function(t) {
	
		Element.hide('indicator');	
		response = t.responseText;
		
		if( response < 1 ){
			alert('A Data de expiracao deve ser maior que a Data de inicio');
		}else{
			maxLogins.value      = response;
			maxLoginsLimit.value = response;	
		}
	}
		
	var errFunc = function(t) {
		
		Element.hide('indicator');
		alert('Erro ao calcular o numero de logins contratados');
	}
	
	var url_ajax = link + '/hotel_manager/calculeMaxLogins' + '?startDate=' + startDate + '&finishDate=' + finishDate + '&price=' + price;
	new Ajax.Request(url_ajax, {asynchronous:true, evalScripts:false, onSuccess:handlerFunc, onFailure:errFunc});

}

function getUserInfo(){
	
	var username = $('username').value;
	var password = $('password').value;
	var link     = $('link').value;
		
	window.open( link +'userInfo?username=' + username  + '&password=' + password, "userInfo", "location=0,status=0,scrollbars=1,width=220,height=100" );
}

function getUserInfoDetails(){

	var link    = $('link').value;
	
	window.open( link +'userDetails?', "userDetails", "scrollbars=1, width=600, height=100" );
}

function createDialog( dialogName, width, height, visible)
{	
    eval ( 'jQuery.noConflict();' );
    eval ( '    jQuery(document).ready(function($){ $("#' + dialogName + '").dialog( { autoOpen: ' + visible + ', width: ' + width + ', height: ' + height + ' } ); });' );
}

function doCallbackInPlaceSelect( value, text, callAction, selectObject )
{
    updateEditDropDown( callAction+value, selectObject );
    return 'newval='+value+'&newtxt='+text;
}

function updateEditDropDown( callAction, selectObject )
{
    new Ajax.Request(callAction, {onSuccess:function ( result ) {result = result.responseText.split("|"); selectObject.values = result[0].split(','); selectObject.labels = result[1].split(','); } });
}

function empty( valueField ){
	
	var value;
	
	//trim
	value = valueField.replace(/^\s+|\s+$/g,'');
	//rtrim
	value = valueField.replace(/\s+$/,'');
	//ltrim
	value = valueField.replace(/^\s+/,'');
	
	if(typeof valueField === 'boolean'){
	    if(valueField){
	        return false;
	    }else{
	        return true;
	    }
	}
	
	if(value.length == 0){
		return true;
	}else{
		return false;
	}
	
}

function removeAllSpaces( string ) {
	
	var temp = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	temp += splitstring[i];
	
    var value;
    var valueField = temp;
	
	//trim
	value = valueField.replace(/^\s+|\s+$/g,'');
	//rtrim
	value = valueField.replace(/\s+$/,'');
	//ltrim
	value = valueField.replace(/^\s+/,'');
	
	return value; 
		
}

function ltrim(string){
	var value;
	//ltrim
	value = string.replace(/^\s+/,'');
	return value;
}

function rtrim(string){
	var value;
	//ltrim
	value = string.replace(/\s+$/,'');
	return value;
}

/**
 * Você deve passar a url com os parametros (username), 
 * e apontando para kali/main/ajaxDisconnect e o nome da funcao que ira receber a resposta do ajax
 * @return string  => logoff
 */
function disconnectByKali(URL, Function) {
    var result = jQuery.ajax({
		url : URL,
		cache : false,
		success : function(data) {
			return Function(data);
		},
		error:function() {
			return 'Erro de comunicação com o Kali';
		}
	});
}
