var already_attached=new Array();

/*******************************
GENERAL PURPOSE
********************************/

function ajaxRequest()
{
	var xmlHttp;
	
	try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
  // Internet Explorer
  try
    {
    	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    try
      {
      	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    catch (e)
      {
      	alert("Browser-ul dvs. nu suporta AJAX!");
      	return false;
      }
    }
  }
  
  return xmlHttp;
}
	
function removeWhiteSpaces(obj)
{
	var notWhitespace = /\S/
	
	for (i=0;i<obj.childNodes.length;i++)
	{
		if ((obj.childNodes[i].nodeType == 3) &&	(!notWhitespace.test(obj.childNodes[i].nodeValue))) 
		{
			// that is, if it's a whitespace text node
			obj.removeChild(obj.childNodes[i])
			i--
		}
	}
	
	return obj;
}

function ask(str)
{
	var box=confirm(str);
	if (box==true)
		return true;
	else return false;
}


function checkEmail(objName)
{
	var ok = true;
	var email = document.getElementById(objName).value;
	
	if (email == "")
		ok = false;
	if (email == "Adresa de email")
		ok = false;
		
	var p = new RegExp("^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$");
	ok = p.test(email);
	
	return ok;
}

function checkAll()
{
  var boxes = document.getElementsByTagName('input'); for(var index = 0; index < boxes.length; index++) { box = boxes[index]; if (box.type == 'checkbox' && box.className == 'sf_batch_checkbox') box.checked = document.getElementById('sf_list_batch_checkbox').checked } return true;
}

function countCheckedChk(obj)
{
	var counter=0;
	
	for (i=0;i<obj.length;i++)
		if (obj[i].checked)
			counter++;
			
	return counter;
}


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 urldecode( str ) 
{
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urldecode('Kevin+van+Zonneveld%21');
    // *     returns 1: 'Kevin van Zonneveld!'
    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F');
    // *     returns 2: 'http://kevin.vanzonneveld.net/'
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a');
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'
    
    var histogram = {};
    var ret = str.toString();
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urlencode.
    histogram["'"]   = '%27';
    histogram['(']   = '%28';
    histogram[')']   = '%29';
    histogram['*']   = '%2A';
    histogram['~']   = '%7E';
    histogram['!']   = '%21';
    histogram['%20'] = '+';
 
    for (replace in histogram) {
        search = histogram[replace]; // Switch order when decoding
        ret = replacer(search, replace, ret) // Custom replace. No regexing   
    }
    
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
 
    return ret;
}

function randomString() 
{
	var date=new Date();
	var ts=date.getTime().toString();
	
	var first_ts=ts.substring(0, ts.length/2);
	var last_ts=ts.substring(ts.length/2, ts.length);

	var chars = "0123456789abcdefghiklmnopqrstuvwxyz";
	var string_length = 12;
	var randomstring = '';
	for (var i=0; i<string_length; i++) 
	{
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}

	return randomstring;
	//return first_ts + randomstring + last_ts;
}

Array.find = function(arr, element)
{
  for(var i=0; i<arr.length; i++)
  {
      if(arr[i] == element)
      {
          return i;
      }
  }
  return -1;
}

function showIframeDialog(id, src, title, width, height)
{
	if ($("#"+id))
	{
		if (title!='')
		{
			$('#'+id).dialog('option', 'title', title);
		}
				
		if (width)
		{
			$('#'+id).dialog('option', 'width', width);
		}

		if (height)
		{
			$('#'+id).dialog('option', 'height', height);
		}
		
		$('#'+id).html('<iframe id="'+id+'_modalIframeId" width="100%" height="100%" marginWidth="0" marginHeight="0" frameBorder="0" scrolling="auto" />').dialog('open');
		
		$('#'+id+'_modalIframeId').attr('src', src);
	}
	return false;
}

function showMessageBox(txt)
{
	message_box=$('<div id="message_box">'+txt+'</div>').appendTo('body');
	$('#message_box').animate({ backgroundColor: "#666666" }, "slow");

	var delay = 2000; /* milliseconds - vary as desired */
	var executionTimer;

	if (executionTimer) 
	{
		clearTimeout(executionTimer);
	}

	executionTimer = setTimeout(function() 
	{
		$('#message_box').animate({ top:'+15px', opacity:0 }, 'slow', '', function(){ $('#message_box').remove(); $("#save_button").removeAttr("disabled"); }); 
	}, delay);
}
