/**
 *	serialize()
 *	Serializa um objeto qualquer para um do tipo JSON
 *
 *	@param		_obj		Object		Objeto a ser serializado
 */
function serialize(_obj) {
   if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
      return _obj.toSource();
   switch (typeof _obj) {
      case 'number':
      case 'boolean':
      case 'function':
         return _obj;
         break;
      case 'string':
         return '\'' + _obj + '\'';
         break;
   
      case 'object':
         var str;
         if (_obj.constructor === Array || typeof _obj.callee !== 'undefined') {
            str = '[';
            var i, len = _obj.length;
            for (i = 0; i < len-1; i++)
				str += serialize(_obj[i]) + ',';
            str += serialize(_obj[i]) + ']';
         } else {
            str = '{';
            var key;
            for (key in _obj)
				str += key + ':' + serialize(_obj[key]) + ',';
            str = str.replace(/\,$/, '') + '}';
         }
         return str;
         break;
      
      default:
         return 'UNKNOWN';
         break;
   }
}

/**
 *	addListener()
 *	Adiciona ouvintes cross-browser
 *
 *	@param		obj		Object		Objeto a ser adicionado o ouvinte
 *	@param		evento	String		Tipo do evento
 *	@param		funcao	Function	Função que trata o evento
 */
var addListener;
if(window.attachEvent) {
	addListener = function(obj, evento, funcao) {
		obj.attachEvent('on'+evento, funcao);
	}
} else if(window.addEventListener) {
	addListener = function(obj, evento, funcao) {
		obj.addEventListener(evento, funcao, false);
	}
} else {
	addListener = function() {
		return;
	}
}

/**
 *	removeListener()
 *	Remove ouvintes cross-browser
 *
 *	@param		obj		Object		Objeto do qual será removido o ouvinte
 *	@param		evento	String		Tipo do evento
 *	@param		funcao	Function	Função a ser removida
 */
var removeListener;
if(window.detachEvent) {
	removeListener = function(obj, evento, funcao) {
		obj.detachEvent('on'+evento, funcao);
	}
} else if(window.removeEventListener) {
	removeListener = function(obj, evento, funcao) {
		obj.removeEventListener(evento, funcao, false);
	}
} else {
	removeListener = function() {
		return;
	}
}

/**
 *	getQueryString()
 *
 *	@param		variavel	String		Nome da variável da querystring
 *	@return					String		Valor da variável
 */
var qs = new Array();
var variaveis = document.location.search.replace(/\x3F/,"").replace(/\x2B/g," ").split("&");
if(variaveis!="") {
    for(var i = 0; i < variaveis.length;i++) {
        var nvar = variaveis[i].split("=");
        qs[nvar[0]] = unescape(nvar[1]);
    }
}
function getQueryString(variavel) {
    return qs[variavel];
}



/**
 *	removeChildren()
 *	Remove todos os filhos de um certo elemento
 *
 *	@param		obj		Object		Objeto do qual serão removidos os nodes
 */
function removeChildren(obj) {
	while(obj.firstChild != null)
		obj.removeChild(obj.firstChild);
}

/**
 *	setCookie()
 *	Cria um cookie
 *
 *	@param		nome	String		Nome do cookie
 *	@param		valor	mixed		Valor do cookie
 *	@param		dias	int			Dias até o cookie expirar
 */
function setCookie(nome, valor, dias) {
	if (dias) {
		var date = new Date();
		date.setTime(date.getTime()+(dias*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	} else
		expires = "";
	document.cookie = nome+"="+valor+expires+"; path=/";
}

/**
 *	getCookie()
 *	Obtém o valor de um cookie
 *
 *	@param		nome	String		Nome do cookie
 *	@return				mixed		Valor do cookie
 */
function getCookie(nome) {
	var nameEQ = nome + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ')
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}


/**
 *	getElementsByClassName()
 *	Pega os elementos pelo seu nome de classe
 *
 *	@param		string		clsName		Nome da Classe
 */
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0; i < elements.length; i++) {
        if(elements[i].className.indexOf(" ") >= 0) {
            var classes = elements[i].className.split(" ");
            for(var j = 0; j < classes.length; j++) {
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        } else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}



/**
 *	append()
 *	Adiciona um índice a um array
 *	
 *	@param		obj		Valor a ser adicionado no array
 *	@param		nodup	Valor a ser verificada a existência no próprio array
 */
Array.prototype.append = function(obj, nodup) {
	if(!(obj && this.contains(nodup)))
		this[this.length] = obj;
}

/**
 *	indexOf()
 *	Acha o índice de um valor no array
 *
 *	@param		obj		Valor a ser procurado no array
 *	@return				Índice do valor encontrado
 */
Array.prototype.indexOf = function(obj) {
	var result = -1;
	for(var i = 0; i < this.length; i++) {
		if(this[i] == obj) {
			result = i;
			break;
		}
	}
	return result;
}

/**
 *	contains()
 *
 *	@see				Alias para indexOf()
 *	@return				True, caso encontrado, ou false, caso não
 */
Array.prototype.contains = function(obj) {
	return (this.indexOf(obj) >= 0);
}

/**
 *	clear()
 *	Zera o array
 */
Array.prototype.clear = function() {
	this.length = 0;
}

/**
 *	insertAt()
 *	Insere um valor em um determinado índice
 *
 *	@param		index		Índice a ser adicionado
 *	@param		obj			Valor a ser relacionado ao índice
 */
Array.prototype.insertAt = function(index, obj) {
	this.splice(index, 0, obj);
}


/**
 *	removeAt()
 *	Remove um índice do array
 *
 *	@param		index		Índice a ser removido
 */
Array.prototype.removeAt = function(index) {
	this.splice(index, 1);
}


/**
 *	remove()
 *	Remove o índice que tenha um determinado valor
 *
 *	@param		obj			Valor a ser procurado
 */
Array.prototype.remove = function(obj) {
	var index = this.indexOf(obj);
	if(index >= 0) {
		this.removeAt(index);
	}
}

/**
 *	inArray()
 *	Função auto-descritiva
 *
 *	@param		valor			Valor a ser procurado
 *	@param		array			Array onde será procurado valor
 */
function inArray(valor, array) {
	for(j=0; j<array.length; j++) {
		if(array[j] == valor) {
			return true;
		}
	}
	return false;
}


/**
 *	novaJanela()
 *	Direciona os links para uma nova janela
 */
function novaJanela() {
	var a;
	for(var i = 0; (a = document.getElementsByClassName('novaJanela')[i]); i++) {
		if(a.href) {
			a.onclick = function() {
				window.open(this.href);
				return false;
			}
		}
	}

	document.getElementById("pedidos").onsubmit = function() {
		var aVista = document.getElementById('comprasAVista').checked;
		var pedParam = 'prazo='+(aVista ? 'vista' : 'prazo');
		new ajax.ContentLoader('carrinho/carregarCarrinhoPrecos.php', restringe, false, 'POST', pedParam);
		return false;
	}
}

function restringe() {
	var total = eval(this.req.responseText);
	if (total < 50) {
		alert("Você só pode finalizar uma compra se o valor desta for superior a R$50,00.");
	} else {
		document.getElementById("pedidos").submit();
	}
}

addListener(window, 'load', novaJanela);
