/*********************************************************************
* JavaScript File to use in GuessForFree.com, forms, divs manipulation & etc       
* created by: Rodrigo P. Campos <rodrigo@dotcode.com.br>
* since: 21/05/2009 
**********************************************************************/
function $id(elementId) {
	/** It returns the object **/
	return document.getElementById(elementId);
}

function addEvent(object, eventType, doIt){
	/** adds an object's event **/
	if(object.addEventListener){ // ALL BROWSERS
		object.addEventListener(eventType, doIt, false);
		return true;
	} else if (object.attachEvent){ // IE sUx
		var r = object.attachEvent('on'+eventType, doIt);
		return r;
	} else 	return false;
}

function $create(elementTag) {
    /** create and HTML element tag **/
    return document.createElement(elementTag);
}

function checkTodayQuestion(obj)
{
    /** function to validate the player to answer the today´s question **/
	var erros = new Array();
	var checked = false;
	var answered = true;
	var oInps = obj.getElementsByTagName('input');	
	
	for(var i=0; i<oInps.length; i++)
	{
	    if (oInps[i].type == 'radio') {
			answered = false;
		    if(oInps[i].checked) {
	            checked = true;
			}
		} else
		if(oInps[i].type == 'text' && isEmpty(oInps[i].value)) {
			answered = false;
		}
	}	 
    if(!checked && !answered) erros.push(obj.quiz_id.getAttribute('require'));
	if(erros.length>0) { mostrarErros(erros); return false; } else { return true; }
}

function changeTagFilter(object)
{
    /** function to filter the tags **/
    var form = object.parentNode;
    form.submit();
}

function clearAllMsgs() {
   /** function to clear all errors and ok messages **/
   $id('boxmsg_erro').innerHTML = '';
   $id('boxmsg_erro').style.display = 'none';
   $id('boxmsg_ok').innerHTML = '';   
   $id('boxmsg_ok').style.display = 'none';
}

function mostrarErros(erros)
{
	/** function to receive the errors and show them in a div  **/
    //window.scrollTo(0, 0);
	clearAllMsgs();
	var divErro = document.getElementById('boxmsg_erro');
	divErro.innerHTML = '';
	var strong = $create('strong');
	strong.id = 'v_strong';
	for (var i=0; i<erros.length; i++)
	{
		var objSpan = $create('span');
		var objBr = $create('br');
		objSpan.style.cssText = 'color:white';
		objSpan.innerHTML = erros[i];
		strong.appendChild(objSpan);
		strong.appendChild(objBr);
	};
	divErro.appendChild(strong);
	divErro.style.display = 'block';
}

function mostrarOk(value){
    /** function to put and value to the ok div **/
    window.scrollTo(0, 0);
	clearAllMsgs();
	var divOk = $id('boxmsg_ok');
	divOk.innerHTML = '<strong>'+value+'</strong>';
	divOk.style.display = 'block';
}

function addTradeZone(obj, prize_id)
{
    /** function to add an prize to the user´s trade zone **/
    var qntdvalue = obj.value;
    var url = "tradezone_add.php?qtd="+qntdvalue+"&pzid="+prize_id;
    window.location.href = url;
}

function delTradeZone(prize_id, label)
{
    /** function to del an prize to the user's trade zone **/
    var confbox = confirm(label);
    if(confbox) {
        var url = "tradezone_del.php?pzid="+prize_id;
        window.location.href = url;
    }
}

function setTradeZone(obj, prize_id)
{
    /** function to set trade zone´s prize quantity **/
    var qntdvalue = obj.parentNode.getElementsByTagName('input')[0].value;
    var url = "tradezone_set.php?pzid="+prize_id+"&qtd="+qntdvalue;
    window.location.href = url;
}

function submitTradeZone()
{
    /** function to treat form data and submit trade zone **/
    var erros = Array();

    var sel = document.getElementById('tz_address');
    if(sel.selectedIndex==0) { erros.push(sel.getAttribute("require")); }
    if(erros.length>0) { mostrarErros(erros); return false; }
    else { document.getElementById('form_tradezone').submit(); }
}

function cancelTrade(order_id, label)
{
    /** function to call the file that will cancel and order **/
    var confbox = confirm(label);
    if(confbox) {
        var url = "tradezone_cancel.php?id=" + order_id;
        window.location.href = url;
    }
}

function IDMS_ChangeChart(instrument, widgetid, tp) {	
	/** function to change the chart for finances **/	
	if(tp == "co") {
		var vari = "ID_INSTRUMENT";
	} else if(tp == "cu" || tp == "ma") {
		var vari = "ID_NOTATION";
	}
	
	var url = "http://www.sevenstars.test.idmanagedsolutions.com/charts/quote/quote.chart?" + vari + "=" + instrument;	
	$id('IDMS_MarketChart_'+widgetid).src = url;
	var oTRs = $id('widget_'+widgetid).getElementsByTagName("tr");
	for (i=0;i<oTRs.length;i++) {
		oTRs[i].className = "";
	}
	document.getElementById(instrument).className = "select_row";
}

function validateForm(obj)
{
    /** function to validate the form **/
    formulario = obj;
	var errs = new Array();
    var inputsForm = formulario.getElementsByTagName('input');
	var selectsForm = formulario.getElementsByTagName('select');
	var textareasForm = formulario.getElementsByTagName('textarea');

	/** validando inputs **/
	for (var i=0; i<inputsForm.length; i++) {

		/** defini??o dos tipos **/
	    var req = inputsForm[i].getAttribute('require'); // se for do tipo text
        var fnc = inputsForm[i].getAttribute('function'); // funcao de validacao
        if(fnc != null){  // msg de erro de funcao de validacao
            var fnc_err = inputsForm[i].getAttribute(fnc);
        }

		var valor = inputsForm[i].value;
		var id = inputsForm[i].id;

		/** campo obrigatorio **/
        if (req != null) {
           if (inputsForm[i].type != "checkbox") {
    	       if (isEmpty(valor)) {
		   	       errs.push(req);
                   continue;
    		   }
           } else {
               if (!inputsForm[i].checked) {
                   errs.push(req);
                   continue;
               }
           }

		   if (fnc != null) {
		       if (!eval(fnc+'(valor)')) {
				   errs.push(fnc_err);
			   }
		   }
		}

		/** campo com validacao especifica **/
		if (req == null && !isEmpty(valor)) {
		    if (fnc != null) {
			    if (!eval(fnc+'(valor)')) {
					errs.push(fnc_err);
				}
			}
		}
	}

	/** validando selects **/
	for (i=0; i<selectsForm.length; i++) {
		req = selectsForm[i].getAttribute('require');

		fnc = selectsForm[i].getAttribute('function'); // funcao de validacao
        if(fnc != null){  // msg de erro de funcao de validacao
            fnc_err = selectsForm[i].getAttribute(fnc);
        }

		id = selectsForm[i].id;
		var sIndex = selectsForm[i].selectedIndex;
		if (req!=null) {
			if (sIndex==0) {
				errs.push(req);
			}
		}

		if(fnc!=null && fnc_err!=null){
			if (!eval(fnc+'(sIndex)')) {
				errs.push(fnc_err);
			}
		}
	}

	/** validando textareas **/
	for (var i=0; i<textareasForm.length;i++) {
		var req = textareasForm[i].getAttribute('require');
		var id = textareasForm[i].id;
		var valor = textareasForm[i].value;
		if (req!=null) {
			if (isEmpty(valor)) {
				errs.push(req);
			}
		}
	}

	if (errs.length > 0) {
		mostrarErros(errs,0);
     	return false;
	} else {
	    return true;
	}
}

/***************************** FIELDS VALIDATION ******************************/
function isEmail(email)
{
    validEmail = /^([\w\.\-])+@+([\w\.\-])+([\.])+([\w\.\-])+$/i;
    return validEmail.test(email);
}

function isEmpty( sValue ) {
    var re = /\s/g;
    var s  = sValue.replace( re , "" );
    RegExp.multiline = true;
    return ( s.length == 0 || s == '0,0' ) ? true : false;
}

function equalPass( sPass ) {
	var sSenha = $id('password').value;
	return (sSenha == sPass) ? true : false;
}

function isCpf(numCPFCNPJ){
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[-]'),"");
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[-]'),"");
     numCPFCNPJ = numCPFCNPJ.replace(RegExp('[/]'),"");
	 if (numCPFCNPJ==00000000000 || numCPFCNPJ==11111111111 || numCPFCNPJ==22222222222 || numCPFCNPJ==33333333333 || numCPFCNPJ==44444444444 || numCPFCNPJ==55555555555 || numCPFCNPJ==66666666666 || numCPFCNPJ==77777777777 || numCPFCNPJ==88888888888 || numCPFCNPJ==99999999999) {
	 	return false;
	 }
     var n1 = numCPFCNPJ.substring(0,1);
     var n2 = numCPFCNPJ.substring(1,2);
     var n3 = numCPFCNPJ.substring(2,3);
     var n4 = numCPFCNPJ.substring(3,4);
     var n5 = numCPFCNPJ.substring(4,5);
     var n6 = numCPFCNPJ.substring(5,6);
     var n7 = numCPFCNPJ.substring(6,7);
     var n8 = numCPFCNPJ.substring(7,8);
     var n9 = numCPFCNPJ.substring(8,9);
     var d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
     d1 = 11 - ( mod(d1,11) );
     if (d1>=10) d1 = 0;
     var d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
     d2 = 11 - ( mod(d2,11) );
     if (d2>=10) d2 = 0;
     if ((d1+':'+d2)==(numCPFCNPJ.substring(9,10)+':'+numCPFCNPJ.substring(10,11))) {
         return true;
     }
     else {
         return false;
     }
}

function isCnpj(numCPFCNPJ){
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[.]'),"");
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[-]'),"");
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[-]'),"");
    numCPFCNPJ = numCPFCNPJ.replace(RegExp('[/]'),"");
    var n1 = numCPFCNPJ.substring(0,1);
    var n2 = numCPFCNPJ.substring(1,2);
    var n3 = numCPFCNPJ.substring(2,3);
    var n4 = numCPFCNPJ.substring(3,4);
    var n5 = numCPFCNPJ.substring(4,5);
    var n6 = numCPFCNPJ.substring(5,6);
    var n7 = numCPFCNPJ.substring(6,7);
    var n8 = numCPFCNPJ.substring(7,8);
    var n9 = numCPFCNPJ.substring(8,9);
    var n10 = numCPFCNPJ.substring(9,10);
    var n11 = numCPFCNPJ.substring(10,11);
    var n12 = numCPFCNPJ.substring(11,12);
    var d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
    d1 = 11 - ( mod(d1,11) );
    if (d1>=10) d1 = 0;
    var d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
    d2 = 11 - ( mod(d2,11) );
    if (d2>=10) d2 = 0;
    if ((d1+':'+d2)==(numCPFCNPJ.substring(12,13)+':'+numCPFCNPJ.substring(13,14))){
        return true;
    }
    else {
        return false;
    }
}

function isHour(shora){
    var arrayhora = shora.split(':');
    var hora = arrayhora[0];
    var minuto = arrayhora[1];
    if ((!hora) || (!minuto)) {
        return false;
    }
    else if ((hora.length > 2) || (minuto.length > 2)) {
        return false;
    }
    else if (parseInt(hora) < 0 || parseInt(hora) > 23) {
        return false;
    }
    else if (parseInt(minuto) < 1 || parseInt(minuto) > 59) {
        return false;
    }
    else {
        return true;
    }
    return false;
}

function isOverAge( sdata ) {
	if (!isDate(sdata)) return false;
	
	var date = new Date();
		
	var array_data = sdata.split('/');
	if(array_data.length!=3) return false;
	
	var ano = parseInt(array_data[2]);
	if(isNaN(ano)) return false;
	
	var mes = parseInt(array_data[0]);
	if(isNaN(mes)) return false;
	
	var dia = parseInt(array_data[1]);
	if(isNaN(dia)) return false;
	
	if(ano<=99) ano+=1900;
	
	var idade = parseInt(date.getFullYear()) - ano - 1;
	if(date.getMonth() + 1 - mes > 0) idade++;
	
	if(date.getUTCDate() - dia >= 0) idade++;
	
	if(idade >= 13) return true;
	else return false;
}

function isDate(sdata) {
    var arraydata = sdata.split('/');
    var day2 = arraydata[1];
    var month2 = arraydata[0];
    var year2 = arraydata[2];
    if((!day2)||(!month2)||(!year2)){
        return false;
    }
    if((day2.length>2)||(month2.length>2)||(year2.length>4)){
        return false;
    }
    while(day2.length<2){
        day2='0'+day2;
    }
    while(month2.length<2){
        month2='0'+month2;
    }
    if(year2.length!=4){
        return false;
    }
    var DayArray = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var MonthArray = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
    var inpDate = day2 + month2 + year2;
    var filter=/^[0-9]{2}[0-9]{2}[0-9]{4}$/;
    if(! filter.test(inpDate)){
        return false;
    }
    filter=/01|02|03|04|05|06|07|08|09|10|11|12/;
    if(! filter.test(month2)){
        return false;
    }
    var N = Number(year2);
    if( ( N%4==0 && N%100 !=0 ) || ( N%400==0 ) ){
        DayArray[1]=29;
    }
    for(var ctr=0; ctr<=11; ctr++){
        if (MonthArray[ctr]==month2){
          if (day2<= DayArray[ctr] && day2 >0 ){
            inpDate = day2 + '/' + month2 + '/' + year2;
            return true;
          }
          else{
            return false;
          }
        }
    }
    return false;
}

function isMoeda(pStr)
{
	if (pStr.indexOf(',') == -1) {
        return true;
	}
	var reMoeda = /^\d*\,\d{2}$/;
	if (reMoeda.test(pStr)) {
		return true;
	} else {
		return false;
	}
}

function isPorcentagem(pStr)
{
	var rePorcentagem = /^\d*\,\d{1,2}$/;
	if (!rePorcentagem.test(pStr) && pStr.indexOf(',') != -1) {
	    return false;
	} else {
	    if (pStr.indexOf(',') != -1) {
    	    pStr = pStr.replace(',', '.');
	    }
		try {
		    var pInt = parseFloat(pStr);
			if (pInt < 0 || pInt > 100)
			    return false;
			else
			    return true;
		} catch(e) {
		    return false;
		}
	}
}

function isNumber(sNumber) {
    var numteste = /^[0-9]+$/
    return numteste.test(sNumber);
}

function mod(dividendo,divisor) {
    return Math.round(dividendo - (Math.floor(dividendo/divisor)*divisor));
}

function hasSize(campo)
{
	if (campo.length<4) return false;
	else return true;
}

function isLink(sValue)
{
    if( sValue.indexOf('http://') != 0 ) {
        return false
    } else {
        return true;
    }
}
