/** Constants **/
var minCpcAllowed = 0.05;
var rootImagePath = "http://imgs.sapo.pt/images/ANUNCIOS/";

/** Public Functions **/

function addLoadFunction(f) {
	var oldLoad = window.onload;
	if(typeof window.onload != 'function') {
		window.onload = f;
	} else {
		window.onload = function() {
			if(oldLoad) {
				oldLoad();
			}
			f();
		}
	}

}

/** Error display function */

function showMessage(typeui,strui) {
  if(typeof($('userMessages').setAttribute)=='function')
    $('userMessages').setAttribute('class',typeui);
  else
    $('userMessages').className = typeui;

  $('userMessages').innerHTML = strui;
  Effect.Appear("userMessages");
  new Effect.Fade("userMessages", {duration:4.0, from:1.0, to:0.0});
  //setTimeout(function() { $('userMessages').innerHTML = "";},4000);
}

/** Wizard functions **/

function setOnClick(elm) {
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onclick = function() {fieldClick(elm);};
	} else {	
		myElement.setAttribute("onclick","fieldClick('"+elm+"')");
	}
	
}

function setOnFocus(elm) {
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onfocus = function() {fieldClick(elm);};
	} else {	
		myElement.setAttribute("onfocus","fieldClick('"+elm+"')");
	}
	
}

function changePreview(elm,value) {
  changeText(elm + "_preview",value);
}

function setOnKeyUp(elm) {
	var myElement = document.getElementById(elm);
	if(typeof myElement.setAttribute != 'function') {
		myElement.onkeyup = function () {  changePreview(elm,myElement.value); };
	}	else {
		myElement.setAttribute("onkeyup","changePreview('"+elm+"',this.value);");
	}

}

function validateAdvertiseUrlRedirect(dest,elm) {
    var myElement = document.getElementById(elm);
    grabUrl(dest,myElement.value);
	validateUrlRedirect(elm);
}

/** Necessita ser revista para ser mais generica **/
function setOnBlur(fo,elm,dest) {
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () { 
        validateAdvertiseUrlRedirect(dest,elm);
					};
	}	else {
		myElement.setAttribute("onblur","validateAdvertiseUrlRedirect('"+dest+"','"+elm+"');");
	}

}

function setTitleOnBlur() {
	var elm = "advertiseTitle";
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () { 
			WizardValidateField(elm,false);
			wizardValidatePhone(elm);
		};
	}	else {
		myElement.setAttribute("onblur","WizardValidateField('"+elm+"',false);wizardValidatePhone('"+elm+"');");
	}

}

function setLineOnBlur(num) {
	var elm = "advertiseLine"+num;
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () { 
			WizardValidateField(elm,false);
			wizardValidatePhone(elm);
		};
	}	else {
		myElement.setAttribute("onblur","WizardValidateField('"+elm+"',false);wizardValidatePhone('"+elm+"');");
	}

}

function setAdvertiseUrlOnBlur() {
	var elm = "advertiseUrl";
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () { 
			WizardValidateField(elm,false);
			wizardValidatePhone(elm);
		};
	} else {
		myElement.setAttribute("onblur","WizardValidateField('"+elm+"',false);wizardValidatePhone('"+elm+"');");
	}
}

function setWordListOnBlur() {
	var elm = "wordList";
	var myElement = document.getElementById(elm);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () {
			validateNotEmpty(elm,false);
			WizardValidateField(elm,false);
		};
	}	else {
		myElement.setAttribute("onblur","validateNotEmpty('"+elm+"',false);");
	}

}

function setValidateOnBlur(fieldid,typef,returns) {
	var myElement = document.getElementById(fieldid);
	
	if(typeof myElement.setAttribute != 'function') {
		myElement.onblur = function () {
			eval(typef);		
		};
	} else {
		myElement.setAttribute("onblur",typef+";");
	}

}

/** Validar o preenchimento ou nao de um campo **/
function validateNotEmpty(fieldId, returns) {
	var myElement = document.getElementById(fieldId);
	var rot = (typeof myElement != "undefined") && (myElement.value.length > 0);
		errorFieldHide(fieldId);	
	if(!rot) {
		errorDisplay(fieldId,"Insira uma ou mais palavras chave para criar o seu an&uacute;ncio.");
	} 
	if(returns) return rot;
}

function validateGreaterThan(fieldId,value) {
	var myElement = document.getElementById(fieldId);
	var rot = (typeof myElement != "undefined") && (parseFloat(myElement.value)>=parseFloat(value))
		
	errorFieldHide(fieldId);
	if(!rot) {
		errorDisplay(fieldId,"O valor inserido deve ser igual ou superior a "+parseFloat(value)+" .");
		

	}	
}

function setOnSubmit(formName,fun) {
	var myElement = document.getElementById(formName);
	
	if(typeof myElement.setAttribute != 'function') {
		
		myElement.onsubmit = function () { return eval(fun+"('"+formName+"')"); };
		
	}	else {
		myElement.setAttribute("onsubmit","return "+fun+"('"+formName+"')");
	}

}



addLoadFunction( function() {
	
		/** Activar apenas no wizard **/
		if(document.getElementById("isWizard")) {

			//Cam Name
			if(document.getElementById("cam_description")) {
			    setValidateOnBlur("cam_description","WizardValidateField('cam_description',true)",false);
			    setOnSubmit("formWizard","WizardValidateField('cam_description',true);");
			}
			
			if(document.getElementById("adg_description")) {
			    setValidateOnBlur("adg_description","WizardValidateField('adg_description',true)",false);
			    setOnSubmit("formWizard","WizardValidateField('adg_description',true);");
			}
			
			
			//Ad
			if(document.getElementById("advertiseTitle")) {
                setOnClick("advertiseTitle");
			    setOnClick("advertiseLine1");
			    setOnClick("advertiseLine2");

			    setOnFocus("advertiseTitle");
			    setOnFocus("advertiseLine1");
			    setOnFocus("advertiseLine2");
			
			    setOnKeyUp("advertiseTitle");
			    setOnKeyUp("advertiseLine1");
			    setOnKeyUp("advertiseLine2");
			    setOnKeyUp("advertiseUrl");
			    if($("urlRedirect").type == "text")
				    setOnBlur("formWizard","urlRedirect","advertiseUrl");
			
			    setTitleOnBlur();
			    setLineOnBlur(1);
			    setLineOnBlur(2);
			    setAdvertiseUrlOnBlur();

    			setOnSubmit("formWizard","validateWizardAdvertise");
            }
            
            //Adg Keywords
            if(document.getElementById("wordList")) {
			    setOnClick("wordList");
			    setOnFocus("wordList");
			    setValidateOnBlur("wordList","validateWizardWordList('formWizard')",false);
			    setOnSubmit("formWizard","validateWizardWordListSubmit");
			}
            
            //Budget
            if(document.getElementById('maxDaily')) {
                setValidateOnBlur("maxDaily","validateGreaterThan('maxDaily',"+minCpcAllowed+")",false);
			}
			if(document.getElementById('maxCpc')) {
			    setValidateOnBlur("maxCpc","validateGreaterThan('maxCpc',"+minCpcAllowed+")",false);
			}
				
			//setOnSubmit("formWizard","validateWizardAdvertise");
		}
		
		if(typeof Labelify == "function") {
			var lab = new Labelify();
			lab.Init("labelifyMe");
		}
});


function grabUrl(dest,txt) {
	if(txt.length> 0) {
		var regexS = /([^\/*])+/;
		var regex = new RegExp( regexS );
		var resultUrl = regex.exec(txt);
		
		if(typeof document.setAttribute != 'function') {
			var finalResult =resultUrl[0];
		}	else {
			var finalResult =resultUrl[0];
		}
		
		document.getElementById(dest).value=finalResult;
		changeText(dest+"_preview",finalResult);
	}
}

function fieldClick(fieldId) {
	if (document.getElementById(fieldId+"_clk").value==0) {
		document.getElementById(fieldId).value="";
		document.getElementById(fieldId+"_clk").value=1;
		document.getElementById(fieldId).setAttribute("class","darkCaracter");
	} 
}

function changeText(id, text) {
	if (document.getElementById) {
        obj = document.getElementById(id);
				obj.innerHTML = text;
    }
}

/** Error Display **/
function errorDisplay(divid,message) {
	var errorTag = document.getElementById(divid+"_error");

	if(typeof document.setAttribute != 'function' ) {
		errorTag.className = "errorVisible";
		errorTag.innerHTML = message;
		//document.getElementById(divid).focus();
	} else {
		errorTag.seAttribute("class","errorVisible");
		errorTag.setAttribute("style","display: block;");
		errorTag.innerHTML = message;
		//document.getElementById(divid).focus();
	}
}

/** Esconde todos os erros **/
function errorHide() {
	var myElement = document;
	var allSpan = myElement.getElementsByTagName("span");
	var manySpan = allSpan.length;

	for(i=0;i<manySpan;i++) {
			if(typeof document.setAttribute != 'function' ) {
				if(allSpan[i].className != null)
					if(allSpan[i].className.search("error")!=-1)
						allSpan[i].className = "errorHidden";
			} else {
				if(allSpan[i].getAttribute("class")!=null)
					if(allSpan[i].getAttribute("class").search("error")!=-1) {
						allSpan[i].setAttribute("class","errorHidden");
					}
			}
	}
}

function errorFieldHide(divid) {
	var errorTag = document.getElementById(divid+"_error");
	if(typeof document.setAttribute != 'function' ) {
		errorTag.className = "errorHidden";
		errorTag.innerHTML = "";
	} else {
		errorTag.seAttribute("class","errorHidden");
		errorTag.setAttribute("style","display: none;");
		errorTag.innerHTML = "";
	}
}


/** Validar o URL e mostrar o erro **/

function validateUrlRedirect(field) {
	var myElement = document.getElementById(field);
		errorFieldHide(field);
	if(! isWizardUrl(myElement.value,'') ) {
		errorDisplay("urlRedirect","O endere&ccedil;o inserido &eacute; inv&aacute;lido, por favor insira um endere&ccedil;o v&aacute;lido!");
		reto = false;
	} else {
		reto = true;
	}

}

/** Wizard Validation **/

function validateWizardAdvertise(f)
{
	var myElement = document.getElementById(f);
	errorHide();
	var phoneRegex = /([\+\*] ?([0-9]{3,4}))?[-. ]?((?: \([0-9]{2}\))|([0-9]{2}))[-. ]?([0-9]{3})[-. ]?([0-9]{2})[-. ]?([0-9]{2})/ ;
	var reto = true;
	
	if(! isWizardUrl(myElement.urlRedirect.value,'') && myElement.urlRedirect.type=="text") {
		errorDisplay("urlRedirect","O endere&ccedil;o inserido &eacute; inv&aacute;lido, por favor insira um endere&ccedil;o v&aacute;lido!");
		reto = false;
	} 

	if(myElement.advertiseTitle.value.match(phoneRegex)) {
		errorDisplay("advertiseTitle","N&atilde;o s&atilde;o permitidos n&uacute;meros de telefone nos an&uacute;ncios Sapo.");
		reto = false;
	}  
	
	if(myElement.advertiseLine1.value.match(phoneRegex)) {
    errorDisplay("advertiseLine1","N&atilde;o s&atilde;o permitidos n&uacute;meros de telefone nos an&uacute;ncios Sapo.");
    reto = false;
  } 

	if(myElement.advertiseLine2.value.match(phoneRegex)) {
    errorDisplay("advertiseLine2","N&atilde;o s&atilde;o permitidos n&uacute;meros de telefone nos an&uacute;ncios Sapo.");
    reto = false;
  }

  	if(myElement.advertiseUrl.value.match(phoneRegex)) {
    errorDisplay("advertiseUrl","N&atilde;o s&atilde;o permitidos n&uacute;meros de telefone nos an&uacute;ncios Sapo.");
    reto = false;
  }

	return reto && WizardValidateField('advertiseTitle',true) && WizardValidateField('advertiseLine1',true) && WizardValidateField('advertiseLine2',true) && WizardValidateField('advertiseUrl',true);
 
}

function validateWizardWordListSubmit(f) {
        if(validateWizardWordList(f)) {
		var myElement = document.getElementById(f);
		current_words = myElement.wordList.value.split("\n");
		recommendedWords.each(function(word){
				if(current_words.indexOf(word.key)<0)
					recommendedWords.unset(word.key);
				});
		//myElement.wordList.value = recommendedWords.toJSON();
		myElement.jsonWords.value = recommendedWords.toJSON();
		return true;
	}	
	return false;
}

function updateWordCloud(){

	var params = Form.serialize($("formWizard"));

	var wordGetter = new Ajax.Request('sugestions/updatewizardsugestionlistlasnosmarty.php',{
		method: 'post',
		parameters: params,
		onSuccess: function(transport){
			try{
				if(transport.responseText != ""){
				var newWords = transport.responseText.evalJSON(true);
				var gotWords = new Array();
				newWords = $H(newWords);
				$$(".word_cloud a").each(function(item){
					if(!newWords.get(item.innerHTML))
						item.fade();
					else{
						gotWords[gotWords.length] = item.innerHTML;
						item.morph('font-size:'+$H(newWords.get(item.innerHTML)).get("fontSize")+"px"+'')
//						item.style.fontSize = $H(newWords.get(item.innerHTML)).get("fontSize")+"px";
					}
				});
				
				$$(".word_cloud")[0].style.display="block";
				
				newWords.each(function(pair){
					if(gotWords.indexOf(pair.key)==-1){
						var anch = new Element("a");
						anch.update(pair.key);
						$$(".word_cloud")[0].insert(anch).insert(" ");
						anch.style.display = "none";
						anch.style.fontSize = $H(pair.value).get("fontSize")+"px";
						anch.style.color = $H(pair.value).get("fontColor");
						anch.appear();
						anch.href="#";
						anch.observe("click",function(event){
							event.stop();
							$("wordList").value = $("wordList").value.trim()+"\n"+this.innerHTML;
							updateWordCloud();
						});
						//anch.style.fontSize = $H(pair.value).get("fontSize")+"px";
					}
				});
				}

			}catch(e){
				// json is probably no good
				// alert(e);
			}
		}
	});

}

function validateWizardWordList(f) {
	var myElement = document.getElementById(f);
	errorHide();
	var reto=true;
	
	if(myElement.wordList_clk.value==0 || !((typeof myElement != "undefined") && (myElement.wordList.value.length > 0))) {
        errorDisplay("wordList","Insira uma ou mais palavras chave para criar o seu an&uacute;ncio.");
        reto = false;
	} else {
	    reto = reto && WizardValidateField('wordList',true);
	    words = myElement.wordList.value.split("\n");
	    for(var i=0;i<words.length;i++){
		if(recommendedWords.get(words[i])==undefined){
		    recommendedWords.set(words[i],new Hash());
		    recommendedWords.get(words[i]).set("origin",0);
		}
	    }
	    //updateWordCloud();
	}
    return reto;
}



/* Funcao global para validar conteudo de um campo */

function WizardValidateField(fieldid,returns) {
	/* Lista de caracteres nao permitidos */
	var regExpression = /[\\\\|\(\)\=\'\"\{\}\[\]\*\~\^\:\_\>\<\@\\\u00ab\\\u00bb\#]/;
	var fielda = document.getElementById(fieldid);
	var functionReturn = true;
	if(regExpression.test(fielda.value)) {
		errorDisplay(fieldid,"A express&atilde;o inserida contem caracteres n&atilde;o permitidos.\nN&atilde;o s&atilde;o permitidos os seguintes caracteres: \\\ \| \( \) \= \' \" \{ \} \[ \] \ * \~ \^ \: \_ \> \< \@ ");
		
		functionReturn = false;
	} else { 

		if(countOcurrences("!",fielda.value)>1) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"!\".\nMaximo permitido deste caracter: 1.");
			functionReturn=false;
		} else if(countOcurrences("?",fielda.value)>1) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"?\".\nMaximo permitido deste caracter: 1.");
			functionReturn=false;
		} else if(countOcurrences("/",fielda.value)>1) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"/\".\nMaximo permitido deste caracter: 1.");
			functionReturn = false;
		} else if(countOcurrences("\u20AC",fielda.value)>1) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"&euro;\".\nMaximo permitido deste caracter: 1.");
			functionReturn = false;
		} else if(countOcurrences(".",fielda.value)>4) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \".\".\nMaximo permitido deste caracter: 4.");
			functionReturn = false;
		} else if(countOcurrences(",",fielda.value)>4) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \",\".\nMaximo permitido deste caracter: 4.");
			functionReturn = false;
		} else if(countOcurrences("-",fielda.value)>3) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"-\".\nMaximo permitido deste caracter: 3.");
			functionReturn = false;
		} else if(countOcurrences("%",fielda.value)>1) {
			errorDisplay(fieldid,"A expressao inserida contem um numero nao permitido de repeticoes do caracter \"%\".\nMaximo permitido deste caracter: 1.");
			functionReturn = false;
		} else if(fielda.value.length == 0) {
			errorDisplay(fieldid,"O campo nao pode ser um campo vazio.\nPor favor preencha o campo!");
			functionReturn = false;

		} else {
			errorFieldHide(fieldid);
			functionReturn = true;
		}

	}
		/*if(!functionReturn) 
			document.getElementById(fieldid).focus();
		*/
		if(returns)
			return functionReturn;

}

function wizardValidatePhone(fieldid) {
	var myElement = document.getElementById(fieldid);
	var phoneRegex = /([\+\*] ?([0-9]{3,4}))?[-. ]?((?: \([0-9]{2}\))|([0-9]{2}))[-. ]?([0-9]{3})[-. ]?([0-9]{2})[-. ]?([0-9]{2})/ ;
	var reto = true;
	if(myElement.value.match(phoneRegex)) {
		errorFieldHide(fieldid);
		errorDisplay(fieldid,"N&atilde;o s&atilde;o permitidos n&uacute;meros de telefone nos an&uacute;ncios Sapo.");
		reto = false;
	}  

}


function isWizardUrl(argvalue,pre) {
argvalue = pre+argvalue;
  if (argvalue.indexOf(" ") != -1)
    return false;
  if (argvalue.indexOf(".") == -1) {
    return false;
	}  else if (argvalue.indexOf(".") == 0) {
    return false;
	} else if (argvalue.charAt(argvalue.length - 1) == ".") {
    return false;
	}

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}


/* validate Advertise Insertion/Edit */

function validateAdvertise(formi)
{
	var phoneRegex = /([\+\*] ?([0-9]{3,4}))?[-. ]?((?: \([0-9]{2}\))|([0-9]{2}))[-. ]?([0-9]{3})[-. ]?([0-9]{2})[-. ]?([0-9]{2})/ ;
	
   if(formi.adv_title.value.length<=0) 
   { 
      alert('Nao pode deixar o campo Titulo de anuncio vazio.') 
      formi.adv_title.focus(); 
      return false; 
   }else if(formi.adv_title.value.match(phoneRegex)) {
		alert("Nao pode inserir números de telefone no seu anúncio.\nPor favor corrija o titulo.");
    formi.adv_title.focus(); 
		return false;
	 }else if(formi.adv_line1.value.length<=0) 
   { 
      alert('Nao pode deixar a Linha 1 do anuncio vazia.') 
      formi.adv_line1.focus(); 
      return false; 
   }else if(formi.adv_line1.value.match(phoneRegex)) {
		alert("Nao pode inserir números de telefone no seu anúncio.\nPor favor corrija a linha 1.");
    formi.adv_line1.focus(); 
		return false;
	 }else if(formi.adv_line2.value.length<=0) 
   { 
      alert('Nao pode deixar a Linha 2 do anuncio vazia.') 
      formi.adv_line2.focus(); 
      return false; 
   }else if(formi.adv_line2.value.match(phoneRegex)) {
		alert("Nao pode inserir números de telefone no seu anúncio.\nPor favor corrija a linha 2.");
    formi.adv_line2.focus(); 
		return false;
	 }else if(!isURL(formi.adv_url_display.value,'')) 
   { 
      alert('Tem de inserir um URL válido no campo URL Visivel!\n Por favor insira um URL Válido! (Exemplo: http://www.oseusite.pt)') 
      formi.adv_url_display.focus(); 
      return false; 
   }else if(!isURL(formi.adv_url_redirect.value,'')) 
   { 
      alert('O URL de redireccionamento inserido não é válido!\n Por favor insira um URL Válido! (Exemplo: http://www.oseusite.pt)') 
      formi.adv_url_redirect.focus(); 
      return false; 
   }
	var retorno = validateField('adv_title','Titulo') && validateField('adv_line1','Linha 1') && validateField('adv_line2','Linha 2');
 return retorno ;
 
}

	

function limitText(fieldname,maxSize)
{		
	fieldname.value=fieldname.value.substring(0, maxSize);	
}

function showhideDiv(id)
{
	//safe function to show an element with a specified id		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		if(document.getElementById(id).style.display=='block')
		{
			document.getElementById(id).style.display = 'none';
		}
		else
			document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) {
			if(document.id.display=='none') // Netscape 4
				document.id.display = 'block';
			else
				document.id.display = 'none';
		}
		else { // IE 4
			if(document.all.id.style.display == 'block')
				document.all.id.style.display = 'none';
			else
				document.all.id.style.display = 'block';
		}
	}
}
// Remove word from left and put in right
function acceptWord(f,word,worddivs)
{
	if(document.getElementById("newwords").style.display='none')
		document.getElementById("newwords").style.display='block';

	// Esconde o elemento da lista
	//var fade = new Effect.Fade(document.getElementById(word));	
	// Remove o elemento da lista
	Element.remove(document.getElementById(word));

	var add = new Insertion.Top(worddivs, '<li id="new_'+word+'"><table width="245"><tr><td width="70"><a href="#" onclick="javascript:rejectWord(this,&quot;'+word+'&quot;,&quot;sugestlist&quot;);">&lt;&lt; Remover</a></td><td>'+word+'</td></tr></table></li>');
	//var ap = new Effect.Highlight(document.getElementById("new_"+word),{duration: 1.2});


	// Colocar a palavra no formulário
	var addtoform = new Insertion.Top("savewords", '<input type="hidden" name="wordlist[]" value="'+word+'" id="save_'+word+'"/>');
	
	return false;
}

// Accept an array of word to move
function acceptWordList(f,word,worddivs){
	var elementList = Form.getElements(''+f);
	for(var i=0;i<elementList.length;i++)
	if(elementList[i].checked){
		acceptWord(f,elementList[i].value,worddivs);
	}
}

// Remove word from right and put in left
function rejectWord(f,word,worddivs)
{
	
	// Esconde o elemento
	//var fade = new Effect.Fade(document.getElementById("new_"+word));
	// Remove o elemento da lista
	Element.remove(document.getElementById("new_"+word));

	// Remover a palavra no formulário
	var delfromform = Element.remove(document.getElementById("save_"+word));

	var add = new Insertion.Top(worddivs, '<li id="'+word+'"><table><tr><td width="20"><input type="checkbox" name="listwords[]" value="'+word+'"/></td><td width="380">'+word+'</td></tr></table></li>');
	//var ap = new Effect.Highlight(document.getElementById(word))

	// Caso seja o ultimo elemento da lista esocnder o formulário
	var many = 0;
	var List = $("newwordlist").getElementsByTagName('li');
	var nodes = $A(List);
	nodes.each(function(node){
		many++;			
	});
	if(many<1)
		document.getElementById("newwords").style.display='none';
		
	return false;
}

function campaignSelect(camid)
{
	var List = $('adgrupos').getElementsByTagName('div');
	var nodes = $A(List);
	nodes.each(function(node){
		node.style.display='none';
		node.disabled=true;			
	});
	document.getElementById("select_"+camid).disabled=false;
	document.getElementById("campaign_"+camid).style.display='block';
	
}

function wordsugest(s,div,uri) {
$('sugerirbut').value="A recolher dados...";
$('sugerirbut').disabled=true;
$(''+div).innerHTML="<br/><img src='"+rootImagePath+"/conteudo/ajax-loader.gif'>";
var url = uri;
var params = Form.serialize($(s));
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError, onComplete: showBut});
}

/** Funcao para efectuar pedido assincrono e mostrar indicar na div especificada */

function ajaxRequestUpdater(s,div,uri,loadingDiv,loadingImage) {
$(''+loadingDiv).innerHTML="<img src='"+rootImagePath+"/"+loadingImage+"'>";
var url = uri;
var params = s;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError, onComplete: completedAjaxRequest(loadingDiv,loadingImage)});
}

function completedAjaxRequest(loadingDiv,loadingImage) {
  $(''+loadingDiv).innerHTML="";
}

function showBut()
{
	$('sugerirbut').disabled=false;
	$('sugerirbut').value="Sugerir Palavras";
}

function pageword(s,div,uri) {
var url = uri;
var params = s;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError });
}

function doAjax(s,div,uri){
var url = uri;
var params = s;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError });
}


function updateCombo(sel,div) {
var url = "reports/updateCombo.php";
var params = sel;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError});
}

function fillDateCombo(sel,div) {
var url = "common/listDateCombo.php";
var params = sel;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError});
}

function getReport(getvar,div) {
var url = "reports/getreport.php";
var params = getvar;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, onFailure: reportError});
}

function reportError(request) {
	alert(request.responseText);
	//alert("error");
}

/*
Section to deal the login functionality
*/

function doLogin(s,div,uri,loginbut) {
$('loginbut').src=loginbut;
$('loginbut').disabled=true;
var url = uri;
var params = Form.serialize($(s));
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'post', parameters: params, onFailure: reportError, onComplete: showLogin});
}

function showDebug(originalRequest)
{
  alert("RESPOSTA:\n"+originalRequest.responseText);
}

function showLogin(originalRequest)
{
			if(originalRequest.responseText=="Login com sucesso!")
			{				
				window.location="index.php";
			}else{
				if(document.all){
					document.getElementById("loginbox").innerHTML = "";
					tmpDiv = document.createElement("DIV");
					tmpDiv.innerHTML = originalRequest.responseText;
					document.getElementById("loginbox").appendChild(tmpDiv);
				}
			}
}
/** 
* Validation section
**/


function isURL(argvalue,pre) {
argvalue = pre+argvalue;
  if (argvalue.indexOf(" ") != -1)
    return false;
  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}

function isEmail(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;

  arrayString = argvalue.split("@");

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }

  return true;

}
function blurUrlDisplay(id){
	var addToUrl = "";
	var indexHttp = (document.getElementById(id).adv_url_display.value).indexOf("http://");
	if(indexHttp == -1 || indexHttp > 0) {
		addToUrl = "http://";
	}
	document.getElementById(id).adv_url_redirect.value = addToUrl+document.getElementById(id).adv_url_display.value;
}


function validateAdgroups(formi,maxcpc)
{
		
   if(formi.adg_description.value.length<=0) 
   { 
      alert('Nao pode deixar o campo Descrição do Grupo vazio.') 
      formi.adg_description.focus(); 
      return false; 
   }else if(formi.adg_max_cpc.value < maxcpc ) 
   { 
      alert('O seu CPC maximo nao pode ser menor que '+maxcpc+' Euro.');
      formi.adg_max_cpc.focus(); 
      return false; 
   } 
 
 return true;
 
} 

function validateUserAccount(formi)
{
	if(formi.usr_name.value.length<=0)
	{
		alert("O seu nome tem de ter dimensão superiro a zero!\n por favor insira o sue nome completo!");
		formi.usr_name.focus();
		return false;
	}else if(!isEmail(formi.usr_email.value))
	{
		alert("O seu email tem um formato inválido!\n Um formato válido é por exemplo oseunome@sapo.pt");
		formi.usr_name.focus();
		return false;
	}	return true;
}

function doSubmit(f)
{
	document.getElementById(f).submit();
}

/*
Funções usadas pela secção de utilizador
*/

function toggleAll(actioni)
{
	
	for (var i = 0; i<document.dataf.elements.length; i++)
	{
		if (actioni=='on') 
			document.dataf.elements[i].disabled=false;
		else
			document.dataf.elements[i].disabled=true;
	}	
	document.getElementById("same_as_userdata").disabled=false;
	document.getElementById("same_as_userdata2").disabled=false;
	document.getElementById("subbut").disabled=false;
	document.getElementById("usr_id").disabled=false;
}

function hasFact()
{
	document.getElementById("same_as_userdata2").checked=true;
	
}

function validatePayment(myn)
{
	var formi = document.getElementById(myn);
	if(formi.amount.value!=parseFloat(formi.amount.value))
	{
		alert("O valor a carregar tem de ser um n&uacute;mero!<br/>Para usar valores decimais use o separador '.'., exemplo 30.50!");
		formi.amount.focus();
		return false;
	}
	doSubmit(myn);
	return true;
}

// Capturar o click da tecla enter no campo passwprd do campo de login

function enableEnterKey(e,form,div,url)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     // Internet Explorer
     else
          key = e.which;     // Mozilla Firefox
//alert(key); # JSil - comentei porque esta a mais em producao!
     if(key == 13)
        {
          doLogin(form,div,url); // Efectuar pedido de login
          return true;
        }
}

function openHelp(url,point)
{
        var nwindow = window.open(url+point,'help','height=200,width=800,left=0,top=200,resizable=no,scrollbars=yes,toolbar=no,status=no');
}


// SHOW RANKING

function popit(e,oLink,s,div,uri) {

// Grelha global
hideit(div);
var mObject = new MousePosition();
mObject.UpdateXY(e);
var resultsDiv = document.getElementById(div);
resultsDiv.style.display="block";

var url = uri;
var params = s;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params, 
onFailure: reportError, 
onLoading: loadResults,
onComplete: completeResults});

resultsDiv.style.left = parseInt(mObject.GetX(resultsDiv))+"px";
resultsDiv.style.top = parseInt(mObject.GetY(resultsDiv))+"px";

}

function add_click(event) {
	repositionPopup('popresults',Event.pointerX(event),Event.pointerY(event));
}


function redo_click(event) {
	Event.observe(document, 'click', add_click_bind);
}

if(document.getElementById("popresults")) {
	add_click_bind = add_click.bindAsEventListener();
	redo_click_bind = redo_click.bindAsEventListener();
	delete_click_bind = delete_click.bindAsEventListener();
}

function delete_click (event) {
	Event.stopObserving(document, 'click', add_click_bind);
}

if(document.getElementById("popresults"))
if(typeof window.Event.observe == 'function'){
	Event.observe(document, 'click', add_click_bind);
}

// mostrar bara de loading
function loadResults(){
	Element.show('getting_results');
}

// mostra resultado quando o pedido estiver completo
function completeResults(){
	Element.hide('getting_results');
	Element.show('popresults');
	Event.observe('popresults','mouseover',delete_click_bind);
	Event.observe('popresults','mouseout',redo_click_bind);
}

// esconde a div dos <id> e a grelha global
function hideit(id){
	Element.hide(id);
//	Element.hide('blockall');
}

function makeDraggable(mydi){
        new Draggable(mydi,{revert:true});
}

function repositionPopup(elem,xx,yy){
	new Effect.Move($(''+elem), {x: xx-400, y: yy+20, mode : 'absolute'});
	new Effect.Move($('getting_results'),{ x: xx-200, y: yy+20, mode: 'absolute'});
}




// Anuncios Excluidos

function showDropit(div){
	if($(''+div))
	new Effect.BlindDown($(''+div));
}

function doAjax(s,div,uri){
var url = uri;
var params = s;
var ajax = new Ajax.Updater(
{success: div},
url,
{method: 'get', parameters: params,onFailure: reportError});

}

function enableAdvertise(grp,id,uid){
	// Disable advertise and show disabled list refreshed
	doAjax("gid="+grp+"&id="+id+"&uid="+uid+"&status=0&changeTo=0","advertisesSpot","advertises/doChangeStatus.php");
	// Show error/display message
	//setTimeout('showMessage("message-sucess","O estado do seu an&uacute;ncio foi alterado para <b><u>ACTIVO</u></b>!");',300);
}

function disableAdvertise(grp,id,uid){

	// Disable advertise and show disabled list refreshed
	doAjax("gid="+grp+"&id="+id+"&uid="+uid+"&status=1&changeTo=1","advertisesSpot","advertises/doChangeStatus.php");
	// Show error/display message
	//setTimeout('showMessage("message-sucess","O estado do seu an&uacute;ncio foi alterado para <b><u>SUSPENSO</u></b>!");',300);
}


function editWord(oLink,s,div,uri) {

	var url = uri;
	var params = s;
	var ajax = new Ajax.Updater(
	{success: div},
	url,
	{method: 'get', parameters: params, 
	onFailure: reportError, 
	onLoading: loadResults,
	onComplete: function() { completeResults();  /*setTimeout('showMessage(0,"A sua palavra foi editada com sucesso!");',300);*/} });
	}

/* Validar campos de edicao de anunio */

function countOcurrences(ocurrence, stringify) {
	count = 0;
	pos = stringify.indexOf(ocurrence);
	while ( pos != -1 ) {
		count++;
		pos = stringify.indexOf(ocurrence,pos+1);
	}

	return count;
}

function validateField(fieldid,seccao) {
	var regExpression = /[\\\\|\(\)\=\'\"\{\}\[\]\*\~\^\:\_\>\<\@\\\u00ab\\\u00bb]/;
	var fielda = document.getElementById(fieldid);

	if(seccao == undefined) seccao="Desconhecido";

	if(regExpression.test(fielda.value)) {
		alert("Erro no campo: "+seccao+"\nA expressao inserida contem caracteres nao permitidos.\nNao sao permitidos os seguintes caracteres: \\\ \/ \| \( \) \= \' \" \{ \} \[ \] \ * \~ \^ \: \_ \> \< \@ ");
	
		document.getElementById(fieldid).focus();
		return false;
	} else { 

		if(countOcurrences("!",fielda.value)>1) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"!\".\nMaximo permitido deste caracter: 1.");
			document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences("?",fielda.value)>1) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"?\".\nMaximo permitido deste caracter: 1.");
			document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences("/",fielda.value)>1) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"/\".\nMaximo permitido deste caracter: 1.");
				document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences("\u20AC",fielda.value)>1) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"&euro;\".\nMaximo permitido deste caracter: 1.");
			document.getElementById(fieldid).focus();
		return false;
		} else if(countOcurrences(".",fielda.value)>4) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \".\".\nMaximo permitido deste caracter: 4.");
			document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences(",",fielda.value)>4) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \",\".\nMaximo permitido deste caracter: 4.");
			document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences("-",fielda.value)>3) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"-\".\nMaximo permitido deste caracter: 3.");	
			document.getElementById(fieldid).focus();
			return false;
		} else if(countOcurrences("%",fielda.value)>1) {
			alert("Erro no campo: "+seccao+"\nA expressao inserida contem um numero nao permitido de repeticoes do caracter \"%\".\nMaximo permitido deste caracter: 1.");
			document.getElementById(fieldid).focus();
			return false;
		} else
			return true;
		}
		return true;
}


/** Finds the center of page in coordinates **/

function showPopup(inputUri,inputParams) {
  var div = "createEditDiv";

  var url = inputUri;
  var params = inputParams;
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError});

  var x = screen.width;
  var y = screen.height;
  var scrollX =(document.all)?document.body.scrollLeft:window.pageXOffset; 
  var scrollY =(document.all)?document.body.scrollTop:window.pageYOffset; 

  var positionX = Math.floor((x + scrollX ) / 2) - Math.floor(780 / 2);
  var positionY = Math.floor((y + scrollY ) / 2) - Math.floor(530/2);

  $("createEditDiv").style.position = "absolute";
  $("createEditDiv").style.display = "block";
  $("createEditDiv").style.left = parseInt(positionX)+"px";
  $("createEditDiv").style.top = parseInt(positionY)+"px";

}


/** Edit adgroup **/
function editAdgroup(adgroupid) {

  var uri = "adgroups/doEdit.php";
  var s = "adgroup_id="+adgroupid;
  var div = "createEditDiv";

  var url = uri;
  var params = s;
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError});

  var x = screen.width;
  var y = screen.height;
  var scrollX =(document.all)?document.body.scrollLeft:window.pageXOffset; 
  var scrollY =(document.all)?document.body.scrollTop:window.pageYOffset; 

  var positionX = Math.floor((x + scrollX ) / 2) - Math.floor(780 / 2);
  var positionY = Math.floor((y + scrollY ) / 2) - Math.floor(530/2);

  $("createEditDiv").style.position = "absolute";
  $("createEditDiv").style.display = "block";
  $("createEditDiv").style.left = parseInt(positionX)+"px";
  $("createEditDiv").style.top = parseInt(positionY)+"px";

}

function validateAdgroup(formid) {
	var myForm = document.getElementById(formid);
	if(myForm.adgDescription.value.length <= 1) {
		errorDisplay("adgDescription","O titulo do seu grupo n&atilde;o pode ser vazio.");
		return false;
	} else {
		errorHide("adgDescription");
	}
	
  if ( myForm.maxCpc.value < minCpcAllowed ) {
		errorDisplay("maxCpc","N&atilde;o pode definir um valor a pagar por clique inferior a "+minCpcAllowed+" &euro;.");
		return false;
	} else {
		errorHide("maxCpc");
	}

	return true;
}

function submitAdgroup(adgroup) {
 if(validateAdgroup('formAdgroup')) {
  if(document.getElementById("changeBids").checked)	 
	  if(!confirm("Tem a certeza de que pretende mudar o CPC de todas as palavras?"))
		  return false;
  self.scrollTo(0, 0);
  
  var params = Form.serialize("formAdgroup");
  var div = "createEditDiv";
  var url = "adgroups/doEdit.php";
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError, evalScripts:true});

  //setTimeout('showMessage("message-sucess","O grupo foi editado com <b><u>SUCESSO</u></b>!");',300);
  closeDiv('createEditDiv');
}
return false;
}

/** Advertises Section **/

function createAdvertiseDiv(advertiseid,groupid,status,is_mob) {

  var uri = "advertises/doCreateEdit.php";
  var s = "adgroup_id="+groupid+"&advertise_id="+advertiseid+"&advertiseStatus="+status+"&is_mobile="+is_mob;
  var div = "createEditDiv";

  var url = uri;
  var params = s;
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError});

  var x = screen.width;
  var y = screen.height;
  var scrollX =(document.all)?document.body.scrollLeft:window.pageXOffset; 
  var scrollY =(document.all)?document.body.scrollTop:window.pageYOffset; 

  var positionX = Math.floor((x + scrollX ) / 2) - Math.floor(780 / 2);
  var positionY = Math.floor((y + scrollY ) / 2) - Math.floor(530/2);

  $("createEditDiv").style.position = "absolute";
  $("createEditDiv").style.display = "block";
  $("createEditDiv").style.left = parseInt(positionX)+"px";
  $("createEditDiv").style.top = parseInt(positionY)+"px";

}

function submitAdvertise(advertiseId) {
 if(validateWizardAdvertise('formAddvertise')) {
  self.scrollTo(0, 0);
  
  var params = Form.serialize("formAddvertise");
  var div = "createEditDiv";
  var url = "advertises/doCreateEdit.php";
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError});
/*  if(advertiseId > 0) 
    setTimeout('showMessage("message-sucess","O an&uacute;ncio foi editado com <b><u>SUCESSO</u></b>!");',300);
  else
    setTimeout('showMessage("message-sucess","O an&uacute;ncio foi criado com <b><u>SUCESSO</u></b>!");',300);*/

  ajaxRequestUpdater('advertise_id='+advertiseId+'&adg_id='+$('adg_id').value+'&status=0','advertisesSpot','advertises/showAdvertise.php','loadingAdvertises','conteudo/ajax-loader.gif');
  closeDiv('createEditDiv');
  return false;
  }
  else return false;
}


function closeDiv(divid) {
  $(divid).style.display = "none";
  $(divid).innerHTML = "";
}

function activateInit(divid) {
  var existsContents = Array("howworks","whyworks","costs");

  /* Esconder todos */
  for(i=0;i<existsContents.length;i++) {
   $(existsContents[i]+"-menu").className = ""; 
   $(existsContents[i]).className = "rightContentBlock noShow"; 
  }
  
   $(divid+"-menu").className = "active";
   $(divid).className = "rightContentBlock";
}


/** Validacao do pedido de factura **/
function validateFacturation(formid) {
	var myForm = document.getElementById(formid);

	if(myForm.fact_name.value.length <= 2) {
		errorDisplay("fact_name","O nome a colocar no documento de factura&ccedil;&atilde;o n&atilde;o pode ser vazio.");
		return false;
	} else {
		errorHide("fact_name");
	}
	if(myForm.fact_addr1.value.length <= 2) {
		errorDisplay("fact_addr2","N&atilde;o pode deixar o campo morada vazio.");
		return false;
	} else {
		errorHide("fact_addr2");
	}
	if(myForm.fact_city.value.length <= 2) {
		errorDisplay("fact_city","O campo cidade deve ser preenchido.");
		return false;
	} else {
		errorHide("fact_city");
	}
	if(myForm.fact_zip.value.length <= 2) {
		errorDisplay("fact_zip","O campo c&oacute;digo postal deve ser preenchido.");
		return false;
	} else {
		errorHide("fact_zip");
	}
	if(myForm.fact_nif.value.length <= 8) {
		errorDisplay("fact_nif","O campo n&uacute;mero de contribuinte deve ser preenchido.");
		return false;
	} else {
		errorHide("fact_nif");
	}

	var params = Form.serialize(formid);
  var div = "paymentList";
  var url = "account/doPaymentRequestFact.php";
  var ajax = new Ajax.Updater(
  {success: div},
  url,
  {method: 'get', parameters: params, onFailure: reportError});

  closeDiv('createEditDiv');
	//setTimeout('showMessage("message-sucess","O seu poedido de factura&ccedil;&atilde;o foi enviado com <b><u>SUCESSO</u></b>!");',300);

	return true;
}



function toggleElement(elementId, displayBool) {
    var element = document.getElementById(elementId);

    if(displayBool==null) {
        if(element.style.display=="none") {
            element.style.display="";
        } else {
            element.style.display="none";
        }
    } else {
        if(displayBool==true) element.style.display="";
        else element.style.display="none";
    }
}


function toggleClass(className, visibleStyle, displayBool) {
    classElements=document.getElementsByClassName(className);
    if(visibleStyle==null) {
        visibleStyle = '';
    }

    for(x in classElements) {
        var myel=classElements[x];
        if(typeof myel != 'function') {
           if(displayBool==null) { 
               if(myel.style.display=="none") {
                   myel.style.display=visibleStyle;
               } else {
                   myel.style.display="none";
               }
            } else {
                if(displayBool==true) myel.style.display=visibleStyle;
                else myel.style.display="none";
            }
        }
    }
    return true;
}


function toggleDrillDown(rowName) {
    if(rowName=='') {return false;}
    var bullet=document.getElementById('bullet_'+rowName);
    var children='children_'+rowName;

    var arrowRight='"' + "\\u" + "25BA" +'"';
    var arrowDown='"' + "\\u" + "25BC" +'"';

    if(bullet.className=='arrowRight') {
        bullet.innerHTML = eval(arrowDown);
        bullet.className='arrowDown';
        toggleClass(children, '',true);
    } else {
        bullet.innerHTML = eval(arrowRight);
        bullet.className='arrowRight';
        toggleClass(children, '',false);
    }
}

function highlightRow(rowid,color) {
    var row=document.getElementById(rowid);
    row.style.background = color;
}

function acceptWordSuggestions(checkboxName,textareaId) {
	var elementList = document.getElementsByName(checkboxName);
	var newWords='';
	var newCounter=0;
	
	var textarea=document.getElementById(textareaId);
	var textareaWords = textarea.value.split("\n");
	
	for(var i=0;i<elementList.length;i++){
	    if(elementList[i].typeOf != "function" && elementList[i].checked) {
		arr_data = elementList[i].value.split("||");
		word = elementList[i].value;
		origin = "";
		order = "";
		if(arr_data.length>1){
			word=arr_data[0];
			origin=arr_data[1];
			num_attempts=arr_data[2];
			order=arr_data[3];
		}

	        var wordExists=false;
	        for (var j=0;j<textareaWords.length;j++) {
			
	            if (textareaWords[j] != "" && textareaWords[j] == word) {
	                wordExists=true;
	            }
	        }
	        if(!wordExists) {
			if(recommendedWords != undefined){
				recommendedWords.set(word,new Hash());
				recommendedWords.get(word).set("origin",origin);
				recommendedWords.get(word).set("num_attempts",num_attempts);
				recommendedWords.get(word).set("order",order);
			}
			textarea.value += "\n" + word;
		}
	    }
    }
    textarea.focus();
    var ap = new Effect.Highlight(textarea,{duration: 1.2});
}
/* Report scripts */

function dragTable(id,reload){
	
	// store the cell that will be dragged
	this.draggedCell = null;
	// true if ghostTd exists
	this.ghostCreated = false;
	// store the table itself
	this.table = document.getElementById(id);
	// store every row of the table
	//this.tableRows = this.table.getElementsByTagName("tr");
	// create a handler array, usualy the ths in the thead, if not poss ble the first row of tds
	this.handler = this.table.getElementsByTagName("th").length > 0 ? this.table.getElementsByTagName("th") : this.table.tBodies[0].rows[0].getElementsByTagName("td");
	
	// store the max index of the column when dropped
	this.maxIndex = this.handler.length
	this.reload = reload
	// store the horizontal mouse position
	this.x;
	this.y;
	
	// store the vertical mouse position
    this.y;
    // store the index of the column that will be dragged
    this.oldIndex;
    // store the index of the destionation of the column
    this.newIndex;
    for (x=0; x<4; x++) {
    	// associate the object with the cells
        this.handler[x].dragObj = this
        // override the default action when mousedown and dragging
        this.handler[x].onselectstart = function() { return false }
        // fire the drag action and return false to prevent default action of selecting the text
        this.handler[x].onmousedown = function(e) { this.dragObj.drag(this,e); return false }
        // visual effect
        this.handler[x].onmouseover = function(e) { this.dragObj.dragEffect(this,e) }
        this.handler[x].onmouseout = function(e) { this.dragObj.dragEffect(this,e) }
        this.handler[x].onmouseup = function(e) { this.dragObj.dragEffect(this,e) }
	
    }
    this.items = ['data','campanha','grupo','palavra'];
}
dragTable.prototype.dragEffect = function(cell,e) {
	// assign event to variable e
    if (!e) e = window.event
    // return if the cell being hovered is the same as the one being dragged
    if (cell.cellIndex == this.oldIndex) return
         
    else {
        	// if there is a cell being dragged
        if (this.draggedCell) {
            // change class to give a visual effect
        	e.type == "mouseover" ? this.handler[cell.cellIndex].className = "hovering" : this.handler[cell.cellIndex].className = ""
    	}
	}
}
     
dragTable.prototype.drag = function(cell,e) {
	// reference of the cell that is being dragged
    this.draggedCell = cell
       
    // change class for visual effect
    this.draggedCell.className = "dragging"
       
    // store the index of the cell that is being dragged
    this.oldIndex = cell.cellIndex
       
    // create the ghost td
    this.createGhostTd(e)
    // start the engine
    this.dragEngine(true)
}
 	
dragTable.prototype.createGhostTd = function(e) {
	// if ghost exists return
    if (this.ghostCreated) return
    // assign event to variable e
    if (!e) e = window.event
    // horizontal position
    this.x = e.pageX ? e.pageX : e.clientX + document.documentElement.scrollLeft
 	// vertical position
    this.y = e.pageY ? e.pageY : e.clientY + document.documentElement.scrollTop
       
    // create the ghost td (visual effect)
    this.ghostTd = document.createElement("div")
    this.ghostTd.className = "ghostTd"
    this.ghostTd.style.top = this.y + 5 + "px"
    this.ghostTd.style.left = this.x + 10 + "px"
    this.ghostTd.style.height = this.handler[this.oldIndex].offsetHeight;
    this.ghostTd.style.width = this.handler[this.oldIndex].offsetWidth;
          
	// ghost td receives the content of the dragged cell
    this.ghostTd.innerHTML = this.handler[this.oldIndex].innerHTML
               
    document.getElementsByTagName("body")[0].appendChild(this.ghostTd)
       
    // assign a flag to see if ghost is created
    this.ghostCreated = true
}
      
dragTable.prototype.drop = function(dragObj,e) {
	// assign event to variable e
    if (!e) e = window.event
    // store the target of the event - mouseup
    e.targElm = e.target ? e.target : e.srcElement
       
    // end the engine
    dragObj.dragEngine(false,dragObj)
    // remove the ghostTd
    dragObj.ghostTd.parentNode.removeChild(dragObj.ghostTd)
    // remove ghost created flag
    this.ghostCreated = false
	// store the index of the target, if it have one
    if (e.targElm.cellIndex !="undefined") {
    	checkTable = e.targElm
        // ascend in the dom beggining in the targeted element and ending in a table or the body tag
        while (checkTable.tagName.toLowerCase() !="table") {
        	if (checkTable.tagName.toLowerCase() == "html") break
            checkTable = checkTable.parentNode
        }
             
        // check if the table where the column was dropped is equal to the object table
        checkTable == this.table ? this.newIndex = e.targElm.cellIndex : false
    }
       
    // start the function to sort the column
    dragObj.sortColumn(this.oldIndex,this.newIndex)
       
	// remove visual effect from column being dragged
    this.draggedCell.className = ""
    // clear the variable
    this.draggedCell = null
}
      
       
dragTable.prototype.sortColumn = function(o,d) {
	// returns if destionation dont have a valid index
    if (d == null) return
    // returns if origin is equal to the destination
    if (o == d) return
    if(this.reload=="no"){
         var ieSux = this.draggedCell.innerHTML;		
	 this.table.rows[0].deleteCell(o);
	 this.table.rows[0].insertCell(d);
	 this.table.rows[0].cells[d].innerHTML = ieSux;
	 this.table.rows[0].cells[d].dragObj = this
	 this.table.rows[0].cells[d].onselectstart = function() { return false }
	 this.table.rows[0].cells[d].onmousedown = function(e) { this.dragObj.drag(this,e); return false }
	 this.table.rows[0].cells[d].onmouseover = function(e) { this.dragObj.dragEffect(this,e) }
	 this.table.rows[0].cells[d].onmouseout = function(e) { this.dragObj.dragEffect(this,e) }
	 this.table.rows[0].cells[d].onmouseup = function(e) { this.dragObj.dragEffect(this,e) }
	 this.table.rows[0].cells[d].style.cursor="move";
	 var value = this.items.splice(o,1);
	 this.items = this.items.slice(0,d).concat(value).concat(this.items.slice(d));
	 
    }else{
	// reload with new order
        arrayGroupBy = document.getElementById("groupBy").value.split("|");
        var item = arrayGroupBy[o];
        arrayGroupBy.splice(o,1);
        arrayGroupBy.splice(d,0,item);
    
        document.reportgen.reset();
        document.getElementById("groupBy").value = arrayGroupBy.join("|");
        document.reportgen.submit();
    }
}

dragTable.prototype.dropColumn = function(section) {

    var index = null;

    this.items.each(function(item,i){
		    if(item == section){
		        index = i;
			throw $break;
		    }
		    })

    if(index == null)
        return false

    this.table.rows[0].deleteCell(index);
    this.items.splice(index,1);
}

dragTable.prototype.addColumn = function(section) {

    this.table.rows[0].insertCell(0);	
    this.table.rows[0].cells[0].innerHTML = "<u>"+section.substring(0,1).toUpperCase()+section.substring(1)+"</u><br/>&lt; <img src=\"http://imgs.sapo.pt/images/ANUNCIOSV3/ANUNCIOS/conteudo/grabbing.gif\" border=\"0\"/> &gt;";
    this.table.rows[0].cells[0].dragObj = this;
    this.table.rows[0].cells[0].onselectstart = function() { return false }
    this.table.rows[0].cells[0].onmousedown = function(e) { this.dragObj.drag(this,e); return false }
    this.table.rows[0].cells[0].onmouseover = function(e) { this.dragObj.dragEffect(this,e) }
    this.table.rows[0].cells[0].onmouseout = function(e) { this.dragObj.dragEffect(this,e) }
    this.table.rows[0].cells[0].onmouseup = function(e) { this.dragObj.dragEffect(this,e) }
    this.table.rows[0].cells[0].style.cursor="move";
    this.items = [section].concat(this.items);

}
      
dragTable.prototype.dragEngine = function(boolean,dragObj) {
	var _this = this
    // fire the drop function
    document.documentElement.onmouseup = boolean ? function(e) { _this.drop(_this,e) } : null
    // capture the mouse coords
    document.documentElement.onmousemove = boolean ? function(e) { _this.getCoords(_this,e) } : null
}
       
dragTable.prototype.getCoords = function(dragObj,e) {
	if (!e) e = window.event
       
    // horizontal position
    dragObj.x = e.pageX ? e.pageX : e.clientX + document.documentElement.scrollLeft
    // vertical position
    dragObj.y = e.pageY ? e.pageY : e.clientY + document.documentElement.scrollTop
       
    if (dragObj.ghostTd) {
	    // make the ghostTd follow the mouse
    	dragObj.ghostTd.style.top = dragObj.y + 5 + "px"
        dragObj.ghostTd.style.left = dragObj.x + 10 + "px"
    }
}

function writeError(message){

	document.getElementById('error_message').innerText = error_message;
	document.getElementById('error_message').style.display = 'block';
	
}

var activeIndexes = new Array();

function orderBy(label){

	if(order_item==label){
		asc_desc = (asc_desc=='DESC')?'ASC':'DESC';
	}
	
	order_item = label;
	
	document.getElementById("order").value=order_item;
	document.getElementById("asc_desc").value=asc_desc;
	document.reportgen.submit();

}

function stringify(){

	return "label:'"+this.label.replace('/:/g','\:')+"',value:'"+this.value.replace('/:/g','\:')+"',isActive:"+this.isActive;

}

function activate_report(){

	this.isActive = true;

}

function deActivate_report(){

	this.isActive = false;

}

function ReportItem(label,value,isActive){

	this.label = label;
	this.value = value;
	this.isActive = isActive;
	this.isOpen = false;

	this.toString = stringify;
	this.activate = activate_report;
	this.dactivate = deActivate_report;
	this.isExpanding = false;

	return this;

}

function getNodeLabel(index){

	switch(index){
	
		//case 0: return "estado";break;
		case 0: return "cpc";break;
		case 1: return "impressoes";break;
		case 2: return "clicks";break;
		case 3: return "ctr";break;
		case 4: return "acumulated";break;
		case 5: return "posicao";break;
	
	}

}

function getElementStyle(elem, IEStyleAttr, CSSStyleAttr) {
    
    if (elem.currentStyle) {
        return elem.currentStyle[IEStyleAttr];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, "");
        return compStyle.getPropertyValue(CSSStyleAttr);
    }
    return "";
}


function openNode(x,y,nodes){
	
	var tbl = document.getElementById("reportTable");
	var row = document.getElementById("mainTr"+y);
	var num_rows = nodes.length;
	var row_index = y+1;
	var numNewCells = 4-x;
	var newRow;
	var newCell;
	var newArrayRow = new Array();
	var currentClass = (getElementStyle(row,"background-color","background-color")=="rgb(237, 243, 230)")?"tabelaRow2":"tabelaRow1";

	for(i=0;i<tbl.rows.length;i++){
		if(tbl.rows[i].id == "mainTr"+y){
			row_index = i;
			break;
		}
	}

	for(i=0;i<x;i++){
		if(!activeIndexes[y][i].isActive || i==0)
			tbl.rows[row_index].cells[i].rowSpan = num_rows+1;
		else{
			numNewCells = 4-i;
			x = i;
		}
				
	}

	for(i=0,j=1;i<num_rows;i++,j++){
	
		newRow = tbl.insertRow(row_index+j);
		newRow.className=currentClass;
		currentClass = (currentClass=="tabelaRow1")?"tabelaRow2":"tabelaRow1";
				
		for(k=0; k<numNewCells; k++){
			newCell = newRow.insertCell(k);
			label = eval("nodes["+i+"].object."+activeIndexes[y][x+k].label.toLowerCase());
			
			newCell.innerHTML = (label)?label:'&nbsp;';
			newCell.className="isNumber";
						
		}
		
		for(w=0;w<6;w++){
			newCell = newRow.insertCell(k+w);
			newCell.innerHTML = eval("nodes["+i+"].object."+getNodeLabel(w));
			if(w==0 || w==4)
				newCell.innerHTML += "&nbsp;&euro;";
/*			if(w==2){

				var pesquisa = nodes[i].sites;			
				if(pesquisa[0]){
					newCell.innerHTML += "<br/>";
					newCell.innerHTML += (pesquisa[0][0]=="Pesquisa")?"Pesquisa: ":"Rede de Sites: ";
					newCell.innerHTML += nodes[i].sites[0][1]; 					
	                                
					if(pesquisa[1]){
						newCell.innerHTML += "<br/>";
	                                        newCell.innerHTML += "Rede de Sites: ";
        	                                newCell.innerHTML += nodes[i].sites[1][1];
					}
				}

			}*/
			if(w==3){
				
				var value = (Math.round(newCell.innerHTML*100)/100);
				
				var zeros = "";
				
				if((""+value).indexOf(".")==-1)
					zeros=".00";
				else{
					if((""+value).substring((""+value).indexOf(".")+1).length==1)
						zeros="0";
					
				}
				
				newCell.innerHTML = ""+value+""+zeros+"&nbsp;%";
			}
			if(w==5){
				var value = (Math.round(newCell.innerHTML*100)/100);
				var zeros = "";
				
				if((""+value).indexOf(".")==-1)
					zeros=".00";
				else{
					if((""+value).substring((""+value).indexOf(".")).length==1)
						zeros="0";
					
				}
				newCell.innerHTML = value+""+zeros
			}

			newCell.className="isNumber";
		}
				
	}

}

function setCursor(cursorType){

	document.body.style.cursor=cursorType;

}

function expandNode(y,x){

	if(!activeIndexes[y][x].isExpanding){
	document.body.style.cursor="wait";
	activeIndexes[y][x].isExpanding=true;
	var group_by = "";
		
	var dateType = document.reportgen.periodicidade.value;
	var cam_id = document.reportgen.cid.value;
	colapseNode(y,x);
	
	activeIndexes[y][x].activate();
	
	for( i = 0; i < 4; i++ )
		if(activeIndexes[y][i]!=null)
			group_by+="{"+activeIndexes[y][i].toString()+"},";
	group_by = "["+group_by+" {positiony: '"+y+"', positionx: '"+x+"'},{usr_id:"+user_id+", start_date:'"+start_date+"', end_date:'"+end_date+"', dateType:'"+dateType+"', order:'"+order_item+"', asc_desc:'"+asc_desc+"', cam_id: '"+cam_id+"'}]"; 
	var JSONRequest = Object.toJSON(group_by);

	new Ajax.Request("reports/ajaxReport.php?data="+encodeURIComponent(JSONRequest), {
		method: 'GET',
		onComplete: function(response){
			
			if(response.status ==200){
				var nodes = response.responseText.evalJSON();
				openNode(1,y,nodes);
				document.getElementById("node"+y+"||"+x).innerHTML="+";
				document.getElementById("node"+y+"||"+x).href="javascript:colapseNode("+y+","+x+",true)";
			}else{	
				writeError("Invalid Ajax Response "+reponse.responseText);
			}
			
			activeIndexes[y][x].isExpanding = false;
			document.body.style.cursor="";
		}
	});}
}

function colapseNode(y,x,force){

	var row_index=y+1;
	var tbl = document.getElementById("reportTable");
	var isMain=false;
	for(i=0;i<tbl.rows.length;i++){
		if(tbl.rows[i].id == "mainTr"+y){
			row_index = i;
			break;
		}
	}
	activeIndexes[y][x].dactivate();
	document.getElementById("node"+y+"||"+x).innerHTML="+";
	document.getElementById("node"+y+"||"+x).href="javascript:expandNode("+y+","+x+")";
	for(i=0;i<=x;i++)
		tbl.rows[row_index].cells[i].rowSpan="1";
		
	var i=row_index+1;
	
	while(i<tbl.rows.length && !isMain)
		if(tbl.rows[i].id.indexOf("mainTr") == 0)
			isMain = true;
		else
			tbl.deleteRow(i);

	if(force)		
		for(i=1;i<5;i++)
			if(activeIndexes[y][i].isActive){
				expandNode(y,i);
				return;
			}

}

function correctBid(wrd_id,cam_id,grp_id,boostCpc){
	var newCpc = prompt('CPC minimo:'+boostCpc+'\nInsira um novo CPC, sff.',"");
	if(newCpc){
		newCpc = newCpc.replace(/,/,".");

		if (Object.isNumber(eval(newCpc))) 
			doAjax('bidid='+wrd_id+'&cid='+cam_id+'&gid='+grp_id+'&s=0&estado=2&to='+newCpc+'','wordlist','words/changeStatus.php');
	}

}

String.prototype.isInteger = function () {
	        return /^\d+$/.test (this);
}

Number.prototype.isInteger = function () {
	        return /^\d+$/.test (this);
}

String.prototype.trim = function(){
	        return  this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

String.prototype.isFloat = function(){
		return /^\d+(\.|,)?\d*$/.test (this);
}

Number.prototype.isFloat = function(){
               return /^\d+(\.|,)?\d*$/.test (this);
}

function isLeapYear(year){
	if (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0)) {
		return true;
	} 
	else {
		return false;
	}
}

String.prototype.isDate = function(){
		if(! /^([0-9]{1,4})[-]([0-9]{1,2})[-]([0-9]{1,2})$/.test(this))
			return false;
            
		var year = RegExp["$1"], month = RegExp["$2"], day = RegExp["$3"];
		day = Math.abs(day) || 0, month = Math.abs(month) || 0, year = Math.abs(year) || 0;
		return day > 0 && day < 32 && month > 0 && month < 13 && ((/4|6|9|11/.test(month) && day < 31) || (/1|3|5|7|8|10|12/.test(month) && day < 32) || (month==2 && isLeapYear(year) && day < 30) || (month==2 && !isLeapYear(year) && day<29));

}
		
function writeError(divID,errorMsg){
	if(!document.getElementById(divID+"_error")){
		lineBr = document.createElement("br");
		errorNode = document.createElement("span");
		errorNode.className = "errorVisible";
		errorNode.id = divID+"_error";
		message = document.createTextNode(errorMsg);
		errorNode.appendChild(message);
		$(divID).parentNode.insertBefore(errorNode,$(divID).nextSibling);
		$(divID).parentNode.insertBefore(lineBr,errorNode);
	}else
		document.getElementById(divID+"_error").style.display="";
}

function validateBulkForm(){

	if($F("ficheiro").trim() == ""){
		writeError("ficheiro","Por favor insira o ficheiro");
		return false;
	}

	if(!$F("adg_min_cpc").isFloat()){
		writeError("adg_min_cpc","O CPC m\341ximo deve ser um n\372mero");
		return false;
	}

	if(!$F("dailyBudget").isFloat()){
		writeError("dailyBudget","O or\347amento di\341rio");
		return false;
	}

	if(!isEmail($F("dest_email"))){
		writeError("dest_email","E-mail inv\341lido");
		return false;
	}

}

function validateFileName(filename){

        if (filename.substring(filename.lastIndexOf(".")).toLowerCase() != ".xls"){
                alert("o ficheiro deverÃ¡ ser do tipo xls");
                document.bulkForm.reset();
        }
}

function updateSites(url){
	if(url.indexOf("https"))
		$("urlPrepend").value = "https://";
	else
		$("urlPrepend").value = "http://";

	$("advertiseUrl").value = url.substring($F("urlPrepend").length-1);
}

function validateReport(){

	if($F("date_sel") == null){
		if($F("startDate").trim()=="" || $F("endDate").trim()==""){
			writeError("endDate","Por favor insira as datas de inicio e de fim do intervalo");
			return false;
		}

		if(!$F("startDate").isDate() || !$F("endDate").isDate()){
			writeError("endDate","Formato de data incorrecto. Formato correcto (AAAA-MM-DD)");
			return false;
		}
		
	}

	if($("camp_sel2").checked){
		var hasSelected = false;
		$A($("campaigns").options).each(function(option){
			if(option.selected){
				hasSelected = true;
				throw $break;
			}
		});

		if(!hasSelected){
			writeError("campaigns","Por favor escolha as campanhas");
			return false;
		}
	}
	if($F("reportName").trim() == ""){
		writeError("reportName","Por favor insira um nome para o relat\363rio");
		return false;
	}

	var dataIndex = t1.items.indexOf("data");
	if(dataIndex >= 0){
		switch($F("time_unit")){
		case "3": t1.items[dataIndex] = 'trimestre';break;
		case "2": t1.items[dataIndex] = 'mes';break;
		case "1": t1.items[dataIndex] = 'semana';break;
		}
	}

	var jsonitems = new Object();
	jsonitems.group_by = t1.items;
	jsonitems.columns = t1.items.concat(['cpc','impressions','clicks','ctr','cost','avg_position','conversions']);

	$("columns").value = Object.toJSON(jsonitems);
	return true;

}

function deleteRep(report_id){

	if(report_id.isInteger()){
		if(confirm("Deseja eliminar este relat\363rio?")){
			new Ajax.Request("reports/deleteReport.php",{
				method: 'post',
				parameters: {
					report_id: report_id
				},
				onSuccess: function(transport){
					if(transport.responseText.isInteger() && Number(transport.responseText)){
						$("tr_report_"+report_id).remove();
						var error_element = $$(".message-success")[0];
	                                        error_element.update("Relat\363rio removido com sucesso.");
						error_element.appear();
	                                        setTimeout(function(){
	                                                error_element.fade();
	                                        },3000);
	                                        new Effect.ScrollTo('topMost');
					}else{
						var error_element = $$(".message-error")[0];
                                                error_element.update("Erro ao remover relat\363rio. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
						error_element.appear();
	                                        setTimeout(function(){
	                                                error_element.fade();
	                                        },3000);
	                                        new Effect.ScrollTo('topMost');
						// show error
					}
				},
				onFailure: function(){
					// show error
					var error_element = $$(".message-error")[0];
                                        error_element.update("Erro de comunicacao. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
                                        error_element.appear();
                                        setTimeout(function(){
	                                        error_element.fade();
	                                },3000);
	                                new Effect.ScrollTo('topMost');
				}
			});
		}
	}
}

function executeRep(request_id){
	if(request_id.isInteger()){
		
		new Ajax.Request("reports/activateReport.php",{
			method: 'post',
			parameters: {
				request_id: request_id
			},
			onSuccess: function(transport){
				 if(!transport.responseText.isInteger() && !Number(transport.responseText)){
				 	var json_report = eval("("+transport.responseText+")")
				 	// make it appear up top and show success message

					// insert top row
					var newRow = $("table_reports").insertRow(1);
					var newCell = newRow.insertCell(0);
					newCell.innerHTML = "<img src=\"http://imgs.sapo.pt/images/ANUNCIOSV3/ANUNCIOS/conteudo/ajax-loader.gif\" border=\"0\" id=\"img_report_"+json_report.report_id+"\"/> <a href=\"report.php?op=detail&report="+json_report.report_id+">"+json_report.name+"</a>";
					newCell = newRow.insertCell(1);
                                        newCell.innerHTML = json_report.start_date+" - "+json_report.finish_date;
					newCell = newRow.insertCell(2);
                                        newCell.innerHTML = json_report.ctime;
					newCell = newRow.insertCell(3);
					newCell.id = "status_cell_"+json_report.report_id;
                                        newCell.innerHTML = json_report.status;
					newCell = newRow.insertCell(4);
                                        newCell.innerHTML = "<a href=\"javascript:deleteRep("+json_report.report_id+")\">Eliminar</a>";
					
					// check if there are pending reports. add new report to pending queue
					var exists_pending = pending_reports.length;
					pending_reports.push(Number(json_report.report_id));
				
					var error_element = $$(".message-success")[0];
                                        error_element.update("Relat\363rio criado com sucesso");
                                        error_element.appear();
					setTimeout(function(){
						error_element.fade();
					},3000);
                                        new Effect.ScrollTo('topMost');

					// restart pooling if not running
					if(!exists_pending)
						handle_pending_reports();
				 }else{
				 	// show error
					var error_element = $$(".message-error")[0];
                                        error_element.update("Erro ao executar relat\362rio. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
					error_element.appear();
                                        setTimeout(function(){
                                                erro_element.fade();
                                        },3000);
                                        new Effect.ScrollTo('topMost');
				 }
				 	
			},
			onFailure: function(){
				// show error
				var error_element = $$(".message-error")[0];
                                error_element.update("Error de comuncacao. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
                                error_element.appear();
                                setTimeout(function(){
	                                error_element.fade();
                                },3000);
                                new Effect.ScrollTo('topMost');
			}
		});

	}
}

function deleteRepReq(request_id){

	if(request_id.isInteger()){

                new Ajax.Request("reports/deleteReportRequest.php",{
                        method: 'post',
                        parameters: {
                                request_id: request_id
                        },
                        onSuccess: function(transport){
                                 if(transport.responseText.isInteger() && Number(transport.responseText)){
                                         // make it disappear and show success message
					 $("tr_request_"+request_id).remove();
					 var error_element = $$(".message-success")[0];
                                         error_element.update("Modelo de relat\363rio removido com sucesso");
					 error_element.appear();
	                                 setTimeout(function(){
	                                         error_element.fade();
	                                 },3000);
                                         new Effect.ScrollTo('topMost');
                                 }else{
                                         // show error
					 var error_element = $$(".message-error")[0];
					 error_element.update("Erro ao remover modelo de relat\363rio. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
					 error_element.appear();
	                                 setTimeout(function(){
	                                         error_element.fade();
	                                 },3000);
					 new Effect.ScrollTo('topMost');

                                 }
                        },
                        onFailure: function(){
                                // show error
				var error_element = $$(".message-error")[0];
                                error_element.update("Erro de comunicacao. Por favor tente mais tarde o contacte-nos em <a href='mailto:anuncios@sapo.pt'>anuncios@sapo.pt</a>");
                                error_element.appear();
                                setTimeout(function(){
	                                error_element.fade();
	                        },3000);

                        }
                 });

        }
}						

