// biblioteca intercraft


// coloca texto dentro de inner de obj
function TxtToInner(texto, destino) {
    destino = $(destino);
    destino.innerHTML += texto + "<br/>";
}


// coloca value dentro de inner de obj
function ValueToInner(origem, destino) {
    origem = $(origem);
    destino = $(destino);
    destino.innerHTML = origem.value;
}


// Identificação padronizada do navegador
function Nav() {};
//{
    Nav.IE = (navigator.appName == "Microsoft Internet Explorer");
    Nav.IE5 = Nav.IE && (navigator.userAgent.indexOf('MSIE 5') != -1);
    Nav.IE50 = Nav.IE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
    Nav.IE6 = Nav.IE && (navigator.userAgent.indexOf('MSIE 6') != -1);
    Nav.IE7 = Nav.IE && (navigator.userAgent.indexOf('MSIE 7') != -1);
    Nav.Gecko = navigator.userAgent.indexOf('Gecko') != -1;
    Nav.Safari = navigator.userAgent.indexOf('Safari') != -1;
    Nav.Opera = navigator.userAgent.indexOf('Opera') != -1;
    Nav.Mac = navigator.userAgent.indexOf('Mac') != -1;
    Nav.NS7 = navigator.userAgent.indexOf('Netscape/7') != -1;
    Nav.NS71 = navigator.userAgent.indexOf('Netscape/7.1') != -1;
    if (Nav.Opera) {
        Nav.IE = true;
        Nav.Gecko = false;
        Nav.Safari = false;
    }
//}


// rotina para carrega evento para um determinado objeto
function CarregaEvento(obj, evento, funcao) {
    var ctl = $(obj);
    if (Nav.IE || Nav.IE5 || Nav.IE50 || Nav.IE6 || Nav.IE7){
        ctl.attachEvent(evento, funcao)
    } else {
        switch (evento.toLowerCase()) {
            case "onmouseover":
                ctl.onmouseover = funcao;
                break;
            case "onload":
                ctl.onload = funcao;
                break;
            case "onblur":
                ctl.onblur = funcao;
                break;
            case "scriptcommand":
                ctl.scriptcommand = funcao;
                break;
            case "playstatechange":
                ctl.playstatechange = funcao;
                break;
            case "markerhit":
                ctl.markerhit = funcao;
                break;
                
            default:
                alert("evento " + evento + " nao previsto em icraft.js.");
        }
    }
}            
    

// facilitador que retorna componente mediante seu nome
function $(elem) {
	if (typeof(elem)=="string") {
        	elem = document.getElementById(elem);
	}
    if (elem == null) {
        elem = undefined;
    }
    return elem;
}


// busca array de elementos contidos no elemento
function $$(elem) {
    elem = $(elem);
    var ret = [];
    for (filho in elem) {
        ret.push(filho);
    }
    return ret;
}


// busca filhos do elemento em uma lista texto separando os itens por vírgula
function FilhosTxt(elem,html) {
    var txt = "";
    elem = $(elem);
    for (obj in elem) {
	if (html==true) {
            txt += "<b>" + obj + "</b>=" + elem[obj] + "<br/>";
	} else
            txt += obj + ":" + elem[obj] + "; ";
    }
    return txt;
}


// abre janela popup com altura e largura especificada
// será centralizada apresentando como título a descricao
function PopUp(url, largura, altura, descricao, atributos){
    if (largura==undefined)
        var largura = 550;
    if (altura==undefined)
        var altura = 410;
    if (descricao==undefined)
        var descricao = 'Informativo';
    var esquerda = ((screen.width)/2)-(largura/2);
    var topo = ((screen.height)/2)-(altura/2);
    if (atributos==undefined)
        var atributos = "width="+largura+", height="+altura+", top="+topo+", left="+esquerda+", scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=yes, fullscreen=no";
    return window.open(url, descricao, atributos);
}


// exclui controle da página
function RemoveElemento(nomecontrole) {
    nomecontrole = $(nomecontrole);
    nomecontrole.parentNode.removeChild(nomecontrole);
    document.body.visible=true;
}


// prepara variável para envio ao aspnet a partir do javascript
function UrlJSEncode(Txt) {
    Txt = escape(Txt);
    Txt = Txt.replace(/\_/g,"%5F");
    Txt = Txt.replace(/\//g,"%2F");
    Txt = Txt.replace(/\?/g,"%3F");
    Txt = Txt.replace(/=/g,"%3D");
    Txt = Txt.replace(/&/g,"%26");
    Txt = Txt.replace(/@/g,"%40");
    Txt = Txt.replace(/\%/g,"_");
    return Txt;
}


// recupera variável codificada no asp.net
function UrlJSDecode(Txt) {
   Txt = Txt.replace(/\_/g, "%");
   return unescape(Txt);
}

// atribui url a location de frame
function AtribFrameLocation(Frame, URL) {
    if (frames[Frame]) {
        frames[Frame].location.href = URL;
    } else {
        $(Frame).src = URL;
	}
}


// esconde elemento da página
function EscondeElemento(nomecontrole) {
    nomecontrole = $(nomecontrole);
    nomecontrole.style.visibility = "hidden";
    document.body.visible = true;
}


// mostra elemento da página
function MostraElemento(nomecontrole) {
    nomecontrole = $(nomecontrole);
    nomecontrole.style.visibility = "visible";
}

// contatena valores em inner
function DebugPrint(container, texto) {
    var obj;
    if (arguments.length==1) {
        obj = document.body;
        TxtToInner(container + "<br />",obj);
        return;
    } 
    obj = $(container);
    TxtToInner(texto + "<br />", obj);
}


function NZ(valor, def) {
    if (valor==undefined) {
        return def
    }
    return valor;
}

function NZV(valor, def) {
    valor = NZ(valor, def);
    if ((valor=="") || (valor==0)) {
        return def;
    }
    return valor;
}

// carrega em select ou dropdownlist itens separados por ponto e vírgula
function OpcaoCarrega(select, itens) {
    itens = itens.split(";");
    var opcao;
    for(var z=0;z<itens.length;z+=2) {
        opcao = document.createElement("option");
        opcao.value = itens[z];
        opcao.innerText = itens[z+1];
        select.appendChild(opcao);
    }
}



// rotina para arrastar elementos da tela.
// coloquei só para não deixar perder.. ainda preciso limpar e incluir parâmetros de filtro
// do elemento
function Arrasta() {};
//{
    Arrasta.Elemento = null;

    Arrasta.Prepara = function() {
      document.ondragstart = Arrasta.Verifica;
      document.onmousedown = Arrasta.Inicia;
      document.onmousemove = Arrasta.Movimenta;
      document.onmouseup = Arrasta.Solta;
    }

    Arrasta.Verifica = function() {
        event.returnValue = true;
    }

    Arrasta.Inicia = function() {
        if (event.button!=2) {
            Arrasta.Elemento = event.srcElement;
            Arrasta.X = Arrasta.Elemento.style.pixelLeft;
            Arrasta.Y = Arrasta.Elemento.style.pixelTop;
            Arrasta.DX = event.clientX;
            Arrasta.DY = event.clientY;
        }
    }

    Arrasta.Movimenta = function() { 
        if ((event.button!=2)&&(Arrasta.Elemento!=null)) {
            newleft=Arrasta.X-(Arrasta.DX-event.clientX);
            Arrasta.Elemento.style.pixelLeft= newleft;            
            newtop=Arrasta.Y-(Arrasta.DY-event.clientY);
            Arrasta.Elemento.style.pixelTop= newtop;
            event.returnValue = false;
            event.cancelBubble = true;
        }
    }

    Arrasta.Solta = function() {
        Arrasta.Elemento = null;
    }    
//}


function doPostBack(eventTarget, eventArgument) {
    var form = document.forms['form1'];
    if (!form)
        form = document.form1;
    if (!form.onsubmit || (form.onsubmit() != false)) {
        form.__EVENTTARGET.value = eventTarget;
        form.__EVENTARGUMENT.value = eventArgument;
        form.submit();
    }
}


function ReplaceAll(texto,encontrar,substituir) {
	while (texto.indexOf(encontrar)!=-1) {
		texto = texto.replace(encontrar,substituir);
	}
	return texto;
}