var KEY_SPACE = 32;
var KEY_BACKSPACE = 8;
var KEY_RIGHT_ARROW = 39;
var KEY_LEFT_ARROW = 37;
var KEY_UP_ARROW = 38;
var KEY_DOWN_ARROW = 40;
var KEY_ESC = 27;
var KEY_ENTER = 13;
var KEY_TAB = 9;
var KEY_PAGE_UP = 33;
var KEY_PAGE_DOWN = 34;
var KEY_DELETE = 46;

Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++)
	{
		for(var x = 0, y = r.length; x < y; x++)
		{
			if(r[x]==this[i])
			{
				continue o;
			}
		}
		r[r.length] = this[i];
	}
	return r;
}

function getDomainNameSufix( domainname )
{
  var parts = new Array();
  var output = "";
  if (domainname.length > 0) {
    parts = domainname.split( '.' );
    parts[0] = "";    
    output = parts.join( '.' );
  }
  return output;
}

function getDomainName( domainname )
{
  var parts = new Array();
  var output = "";
  if (domainname.length > 0) {
    parts = domainname.split( '.' );
    output = parts[0];    
  }
  return output;	
}

function validateDomainName( domainname )
{
  var countDots = 0;  
  var dNameTemp = getDomainName( domainname );
  
  if (domainname.length == 0 || dNameTemp == 0)
    return false;
    
  if (!isAlphaNumeric( domainname[0] ) || !isAlphaNumeric( domainname[(domainname.length - 1)] ))
    return false;
	
  if (!isAlphaNumeric( dNameTemp[0] ) || !isAlphaNumeric( dNameTemp[(dNameTemp.length - 1)] ))
    return false;
  
  for (i = 0; i < domainname.length; i++) {
    var c = domainname.charAt(i);
    if (!isAlphaNumeric( c ) && c != '.' && c != '-') {
      return false;
    }	
    if (c == '.')
      countDots++;              
  }

  if (countDots > 2)
    return false;
  
  return true;
}

function randomInteger( min, max )
{
  return Math.floor(Math.random()*(max-min+1))+min;   
}

function testingBoolean()
{
	return randomInteger(0,1) == 1;
}

function keyCode( ch )
{
	return ch.charCodeAt( ch );
}

function getKey(e){
	var unicode=e.keyCode? e.keyCode : e.charCode;
	return unicode;
}

function _gel(id){
return(typeof id=="string"?document.getElementById(id):id);
}

var ref=_gel;

function each(array,func){
for(var i=0,l=array.length;i<l;i++)func(array[i]);
}

function countWords( text )
{
	var spaceForCount = true;
	var count = 0;
	for (i = 0; i < text.length; i++) {
		if (text.charAt( i ) == ' ' && spaceForCount) {
			count++;
			spaceForCount = false;
		}
		else {
			if (text.charAt( i ) != ' ')
				spaceForCount = true;				
		}
	}
	return count;
}

function selectItem(item, val) {
//	item.checked = true;
item.click();
if (item.checked != val)
	item.click();
}

function isUrl(s) {
	return s != "";
}

function isTitle(s) {
	return s != "";
}

function isDescription(s) {
	return s != "";
}

function isOutputFile(s) {
	return s != "";
}


function selectAllItems(target, val) {

	target = (target ? ref(target) : _gel("items"));
	if (target) {
		var checkboxes = target.getElementsByTagName('INPUT');
		each(target.getElementsByTagName('INPUT'), function (input) {
			if (input.type == 'checkbox') {
				selectItem(input, val);
			}
		});
	}
}

function getSelectedValues( target ) 
{
	var getValues = "";
	target = (target ? ref(target) : _gel("items"));
	if (target) {
		var checkboxes = target.getElementsByTagName('INPUT');

		each(target.getElementsByTagName('INPUT'), 										 
										 function (input) {
			if (input.type == 'checkbox' && input.checked == true && input.value != "on") {
				getValues = getValues + input.value + ","
			}
		});
	}	
	
	return getValues.substring( 0, getValues.length - 1 );
}



function validateRequiredSelections( requireSelection, typeSelector, counterChecks )
{	
	if (requireSelection == "noselection") {
		return true;
	}

	if (requireSelection == "uniqueselection") {
		 if (typeSelector == "radio") { 
		if (counterChecks == 1) {
			return true;
		}
		 }
		else if (typeSelector == "checkbox") { 
		if (counterChecks == 1) {
			return true;
		}
		

		 } 
	}
	
	if (requireSelection == "multipleselection") {
		 if (typeSelector == "radio") { 
		if (counterChecks == 1) {
			return true;
		}
		 }
		
		else if (typeSelector == "checkbox") { 
			return counterChecks >= 1;

		

		 } 
	}
	
	return false;
}



function countChars( s, c )
{
	t = 0;
	for (i = 0; i < s.length; i++)
		if (s.charAt(i) == c) t++;
	return t;
}

function fnSelect(objId)
{
   fnDeSelect();
   if (document.selection) 
   {
      var range = document.body.createTextRange();
      range.moveToElementText(document.getElementById(objId));
      range.select();
   }
   else if (window.getSelection) 
   {
      var range = document.createRange();
      range.selectNode(document.getElementById(objId));
      window.getSelection().addRange(range);
   }
}

function fnDeSelect() 
{
   if (document.selection)
             document.selection.empty();
   else if (window.getSelection)
              window.getSelection().removeAllRanges();
} 

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 + "]+$", "g"), "");
}


function insertAtCaret(areaId,text) { 


var txtarea = document.getElementById(areaId); var scrollPos = txtarea.scrollTop; var strPos = 0; var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? "ff" : (document.selection ? "ie" : false ) ); if (br == "ie") { txtarea.focus(); var range = document.selection.createRange(); range.moveStart ('character', -txtarea.value.length); strPos = range.text.length; } else if (br == "ff") strPos = txtarea.selectionStart; var front = (txtarea.value).substring(0,strPos); var back = (txtarea.value).substring(strPos,txtarea.value.length); txtarea.value=front+text+back; strPos = strPos + text.length; if (br == "ie") { txtarea.focus(); var range = document.selection.createRange(); range.moveStart ('character', -txtarea.value.length); range.moveStart ('character', strPos); range.moveEnd ('character', 0); range.select(); } else if (br == "ff") { txtarea.selectionStart = strPos; txtarea.selectionEnd = strPos; txtarea.focus(); } txtarea.scrollTop = scrollPos; } 



function arrayIndexOf( a, k )
{
	for (var x=0;x < a.length; x++) if(a[x] == k) return x;
	return false;
}

function isAlpha( c )
{
	return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}
function isDigit( c )
{
	return (c >= '0' && c <= '9');
} 

function isAlphaNumeric( c )
{
	return isAlpha( c ) || isDigit( c );
}

function validateUsername( username )
{
	if (username == "") return false;
	if (!isAlpha( username.charAt(0) )) return false;
	for (i = 0; i < username.length; i++) {
		if (!isAlpha( username.charAt(i) ) && !isDigit( username.charAt(i) )) return false;
	}
	return true;
}
function validateField( validationResult, errorId )
{
	if (!validationResult) 
		document.getElementById(errorId).style.display = 'block'; 
	else 
		document.getElementById(errorId).style.display = 'none';
	return validationResult;
}

function validateMail( sEmail )
{
	// RFC822
	var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
  	var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
  	var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
  	var sQuotedPair = '\\x5c[\\x00-\\x7f]';
  	var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
  	var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
  	var sDomain_ref = sAtom;
  	var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
  	var sWord = '(' + sAtom + '|' + sQuotedString + ')';
  	var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
  	var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
  	var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
  	var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
  
  	var reValidEmail = new RegExp(sValidEmail);
  
  	if (reValidEmail.test(sEmail)) {
    	return true;
  	}
  
  	return false;
}


function validateNumber( number )
{	
	if (number.length > 0) {
		for (i = 0; i < number.length; i++) {
			if (!isDigit( number.charAt(i) )) {
				return false;
			}

		}	
		return true;
	}	
	return false;
}


function validateDatabaseName( name )
{
	return validateUsername( name ) && name.length <= 7;
}

function validateInputMail( mail1, mail2 )
{
	return mail1 == mail2 && validateMail( mail1 ) && validateMail( mail2 ); 
}

function validatePassword( passw )
{
	return passw.length >= 6;
}

function validateInputPassword( passw1, passw2 )
{
	return passw1 == passw2 && validatePassword( passw1 ) && validatePassword( passw2 ); 
}

function validateForm()
{
	if (validateUsername( document.getElementById('username').value, 'errorUsername' ) &&
         validateInputMail( document.getElementById('correo').value, document.getElementById('correo_confirmar').value ) &&
		 validateInputPassword( document.getElementById('password').value, document.getElementById('password_confirmar').value )) {
		 return true;
	}
	alert("Error al procesar, datos no validos.");
	return false;
}

function validateName( name )
{
	return name != "";
}

function trunc1( val )
{

	temp = "";
	for (i = 0; i < val.length - 1; i++)
		temp = temp + val.charAt(i);
	return temp;
}


function validDomainChar(  c )
{
	return isDigit( c ) || isAlpha( c );
}

function checkDomain(nname)
{
	arr = new Array('.com','.net','.org','.biz','.us','.info');

	mai = nname;


	dot = mai.lastIndexOf(".");
	dname = mai.substring(0,dot);
	ext = mai.substring(dot,mai.length);
	
	return checkDomainName( dname );
}

// Check if a domain is valid in sequence but not in characters compositions
// for example: cdekje3##Dd.com.co
function isDomainNameFull( dname )
{

	var countPoints = 0;
	for (i = 0; i < dname.length; i++) {
		if (dname.charAt(i) == ' ') {

			return false;
		}
		if (dname.charAt(i) == '.') {
			countPoints++;
		}
	}
	
	return countPoints > 0 && countPoints < 3 && checkDomainNameFull( dname );

}

function checkEnter(e)
{
     var key;      
     if(window.event)
          key = window.event.keyCode; //IE
     else
          key = e.which; //firefox      

     return (key != 13);
}

function isDirectory(dir)
{
		if (dir.length > 0 && (dir.charAt(0) == '/' || isAlpha( dir.charAt(0) ) || dir.charAt(0) == "_" || dir.charAt(0) == "-" || isDigit( dir.charAt(0) ) )) {
			
			for (i = 1; i < dir.length - 1; i++) {
				if (dir.charAt(i) != '/' && dir.charAt(i) != '-' && dir.charAt(i) != '_' && !isAlpha( dir.charAt(i) ) && !isDigit( dir.charAt(i) ))
					return false;
				if (dir.charAt(i) == '/' && (dir.charAt( i - 1 ) == '/' || dir.charAt( i + 1 ) == '/'))
					return false;
					
									
																	
			}
			return true;
		}
		return false;
}
function checkDomainNameFull( dname )
{


	if (dname.length > 0 && validDomainChar( dname.charAt(0) ) && validDomainChar( dname.charAt(dname.length - 1) ) ) {		
		for (i = 0; i < dname.length; i++) {


			indexLeft = ((i - 1 >= 0) ? 1 : 0);
			indexRight = ((i + 1 < dname.length) ? 1 : 0);			
			


				if (dname.charAt(i) == '-' && (
					!validDomainChar( dname.charAt(i - indexLeft) ) || 
					!validDomainChar( dname.charAt(i + indexRight) )) )  {

return false;
				}


			
		}

	} else return false;

	return true;
	
}
function checkDomainName( dname )
{


	if (dname.length > 0 && validDomainChar( dname.charAt(0) ) && validDomainChar( dname.charAt(dname.length - 1) ) ) {		
		for (i = 0; i < dname.length; i++) {
			
		if (dname.charAt(i) == '.')	
				return false;
			
			indexLeft = ((i - 1 >= 0) ? 1 : 0);
			indexRight = ((i + 1 < dname.length) ? 1 : 0);			
			


				if (dname.charAt(i) == '-' && (
					!validDomainChar( dname.charAt(i - indexLeft) ) || 
					!validDomainChar( dname.charAt(i + indexRight) )) )  {

return false;
				}


			
		}

	} else return false;

	return true;
	
}

function getAjaxListener()
{
	return "crishk-ajax.php";
}


function getAjaxViewer()
{
	return "crishk-viewer.php";
}



function crishk_ajax( data, id )
{
	$('#'+id).html("<div style='float:left; display:block;'><img src='images/loading.gif' width='43' height='11' /></div><div style='display:block; float:left; padding-left:10px; color:red;'></div>");
	$.ajax({
		   type: "POST",
		   url: "crishk-viewer.php",
		   data: data,
		   success: function(datos) { 
//		   		alert(datos); 	
				$('#'+id).html(datos);
			}
	});			


}







var __count = 0;
   
function __do_action()
{
	__count = __count + 1;
	setTimeout("__go("+__count+")",250);
}

function __go( current_count )
{

	if(current_count == __count)	
	{	
		__count = 0;		
		__function_action();	
	}

} 

var __function_action = null;





