
// new ToggleHidden('toggleHiddenBtn', 'HiddenBox');
var ToggleHidden = Class.create({
	initialize: function(toggleBtn, toggleBox) {
		this.oBtns = document.getElementsByClassName(toggleBtn);
		this.oHiddenBox = document.getElementsByClassName(toggleBox);
		for(var i = this.oBtns.length - 1; i >= 0; i--) {
			this.oBtns[i].onclick = this.toggleEvent.bind(this, i);
		}
	},
	
	toggleEvent: function(i) {
		if(this.oHiddenBox[i].getStyle('display') == 'none') {
			this.openbox(i);
		}
		else {
			this.hiddenbox( i);
		}
		
		return false;
	},
	
	openbox: function(i) {
		Element.show(this.oHiddenBox[i]);
		this.oBtns[i].removeClassName('closeHiddenBtn');
		var toggleElement = this.oBtns[i].parentNode;
		var reg = /toggleElement_off/g;
		if(reg.test(toggleElement.className)) {
			toggleElement.className = toggleElement.className.replace(reg, 'toggleElement_on');
		}
		document.body.style.zoom = 1.1;
		document.body.style.zoom = '';

	},
	
	hiddenbox: function(i) {
		Element.hide(this.oHiddenBox[i]);
		this.oBtns[i].addClassName('closeHiddenBtn');
		var toggleElement = this.oBtns[i].parentNode;
		var reg = /toggleElement_on/g;
		if(reg.test(toggleElement.className)) {
			toggleElement.className = toggleElement.className.replace(reg, 'toggleElement_off');
		}
		document.body.style.zoom = 1.1;
		document.body.style.zoom = '';
	}
});



/* class
----------------------------------------------------- */
var Spinner = {
	
	spinners: { },
	
	create: function(idRefer) {
		if(  $(idRefer) && typeof idRefer != 'string' ) {
			while( !idRefer.id) {
				var spinnerHandleId = 'spinnerHandle' + Math.floor(Math.random()*1000);
				if( !$(tempId)) {
					idRefer.id = spinnerHandleId;
				}
			}
			idRefer = idRefer.id;
		}
		
		if( !this.spinners[idRefer] ) {
			var newSpinner = document.createElement('div');
			document.body.appendChild(newSpinner);
			Element.hide(newSpinner);
			Element.addClassName(newSpinner, 'spinner_overlay');
			this.spinners[idRefer] = newSpinner;
		}
		this.open(idRefer);
	},
	
	open: function(idRefer) {
		if ($(idRefer) && typeof idRefer != 'string') {
			idRefer = idRefer.id;
		}
		
		if( !this.spinners[idRefer]) {return;}
		
		var referredSpinner = this.spinners[idRefer];
		Element.show(referredSpinner);
			var arrayPageSize = getPageSize();
			$(referredSpinner).style.top = '0px';
			$(referredSpinner).style.left = '0px';
			$(referredSpinner).style.width = arrayPageSize[0] +"px";
			$(referredSpinner).style.height = arrayPageSize[1] +"px";
		
		
	},
	
	close: function(idRefer) {
		if ($(idRefer) && typeof idRefer != 'string') {
			idRefer = idRefer.id;
		}
		
		if( !this.spinners[idRefer]) {return;}
		
		Element.hide(this.spinners[idRefer]);
	},
	
	destroy: function(idRefer) {
		if ($(idRefer) && typeof idRefer != 'string') {
			idRefer = idRefer.id;
		}
		
		if( !this.spinners[idRefer]) {return;}
		
		Element.remove(this.spinners[idRefer]);
	}
}

/* common functions
----------------------------------------------------- */
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}

/* return element absolute position
----------------------------------------------------- */

function getPosition(oTarget) {
	var target = oTarget;
	var pos = new CPos(target.offsetLeft, target.offsetTop);

	var target = target.offsetParent;
	
	while (target) {
		pos.x += target.offsetLeft;
		pos.y += target.offsetTop;
	
		target = target.offsetParent;
	}

	return pos;
}

// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
// ---------------------------------------------------
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}


// ---------------------------------------------------
function extractPara(targetStr, separator, index) {
	if(!targetStr) {return null;}
	separator = separator? separator : '-';
	index = index? index : 1;
	var arr =  targetStr.split(separator);
	if(!arr[index]) {return null;}
	return arr[index];
}


// ---------------------------------------------------
function swapNode(node1,node2)
{
	var _parent=node1.parentNode;
	var _t1=node1.nextSubling;
	var _t2=node2.nextSubling;
	if(_t1)parent.insertBefore(node2,_t1);
	else _parent.appendChild(node2);
	if(_t2)parent.insertBefore(node1,_t2);
	else _parent.appendChild(node1);
}


// ---------------------------------------------------
function insertAfter(newElement, targetElement) {
	var parent = targetElement.parentNode;
	if(parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	} else {
		parent.insertBefore(newElement, targetElement.nextSibling);
	}
	return newElement;
}

function appendTo(newElement, targetElement) {
	 targetElement.appendChild(newElement);
}

// ---------------------------------------------------
function isJSON(oJson) {
	if(!oJson) {return false;}
	return (oJson.format.toLowerCase() == 'json')? true:false;
}

// ---------------------------------------------------
//
//function showSelectBoxes(){
//	var selects = document.getElementsByTagName("select");
//	for (i = 0; i != selects.length; i++) {
//		selects[i].style.visibility = "visible";
//	}
//}
//
// ---------------------------------------------------
//
//function hideSelectBoxes(){
//	var selects = $('page_contanier').getElementsByTagName("select");
//	for (i = 0; i != selects.length; i++) {
//		selects[i].style.visibility = "hidden";
//	}
//}
//
// ---------------------------------------------------

function showSelectBoxes(oContainer){
	var oContainer = oContainer?oContainer: document;
	var selects = Element.select(oContainer, "select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(oContainer){
	var oContainer = oContainer?oContainer: document;
	var selects = Element.select(oContainer, "select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------
function returnFalse() {
	return false;
}

function dummy() {
	return false;
}


// ---------------------------------------------------
function extractFrameJson(idFrame) {
	if(typeof idFrame != 'string') {
		return null;
	}
	
	var frameBody = top.frames[idFrame];
	if(!frameBody) {return null;}
	frameBody = frameBody.document;
	if(!frameBody) {return null;}				
	frameBody = frameBody.getElementsByTagName('body');
	if(!frameBody) {return null;}
	frameBody = frameBody[0];
	if (!frameBody) {return null;}
	
	var jsonResp = frameBody.innerHTML.replace(/\&amp\;/g, '&').evalJSON(true);
	if(!jsonResp || jsonResp.length==0 ) {return null;}
	return jsonResp;
}

/* function addRoundCorner
 * --------------------------------------*/
function addCorner(idContainer) {
	idContainer = $(idContainer);
	
	var corner = document.createElement('span');
	idContainer.appendChild(corner);
	Element.addClassName(corner, 'leftTopCorner');
	Element.addClassName(corner, 'roundCorner');
	
	corner = document.createElement('span');
	idContainer.appendChild(corner);
	Element.addClassName(corner, 'rightTopCorner');
	Element.addClassName(corner, 'roundCorner');
	
	corner = document.createElement('span');
	idContainer.appendChild(corner);
	Element.addClassName(corner, 'leftBottomCorner');
	Element.addClassName(corner, 'roundCorner');
	
	corner = document.createElement('span');
	idContainer.appendChild(corner);
	Element.addClassName(corner, 'rightBottomCorner');
	Element.addClassName(corner, 'roundCorner');
}


// ---------------------------------------------------
var ListUtil = new Object();
ListUtil.add = function(oListBox, sName, sValue) {
	var oOption = document.createElement('option');
	oOption.appendChild(document.createTextNode(sName));
	oOption.setAttribute('value', sValue);
	
	oListBox.appendChild(oOption);
}

ListUtil.clear = function(oListBox, stopAt) {
	stopAt = stopAt? stopAt : 0;
	for(var i=oListBox.options.length-1; i>=stopAt; i--) {
		oListBox.remove(i);
	}
}

ListUtil.reload = function(oList, jData, options) {
	options = options ? options : {};
	
	var keepNum = options.keep? options.keep : 0;
	ListUtil.clear(oList, keepNum);
	
	for(var i in jData) {
		if (typeof jData[i] == 'function') {continue;}
		var name = jData[i];
		if (name) {
			ListUtil.add(oList, name, i);
		}
	}
}



// ---------------------------------------------------
function isNumber(str) {
	var rg = /^\d+$/;
	return rg.test(str);
}

function isTelephone(str){
	var rg = /(^(\d{2,4}[-_�?—]?)?\d{3,8}([-_�?—]?\d{3,8})?([-_�?—]?\d{1,7})?$)|(^0?1[35]\d{9}$)/i;
	return rg.test(str);
}

function isEmail(str) {
	var rg = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]){2,4}$/i;
	return rg.test(str);
}

// ---------------------------------------------------

function showSearchWaiting() {
	var objBody = document.getElementsByTagName("body").item(0);
	var objSearching = document.createElement("div");
	objSearching.setAttribute('id', 'searching');
	objSearching.style.display="none";
	objSearching.style.visibility="visible";
	objBody.appendChild(objSearching);
	
	var objSearchingMessage = document.createElement("div");
	objSearchingMessage.setAttribute('id', 'searchingMessage');
	objSearchingMessage.style.display="none";
	var searchingMessage='<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="500" HEIGHT="700" id="myMovieName">';
	searchingMessage+='<PARAM NAME="movie" VALUE="flash/searching.swf">';
	searchingMessage+='<PARAM NAME="quality" VALUE="high">';
	searchingMessage+='<PARAM NAME="bgcolor" VALUE="#FFFFFF">';
	searchingMessage+='<PARAM NAME="wmode" VALUE="transparent">';
	searchingMessage+='<EMBED src="flash/searching.swf" wmode="transparent" quality="high" bgcolor="#FFFFFF" WIDTH="500" HEIGHT="700" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>';
	searchingMessage+='</OBJECT>';
	objSearchingMessage.innerHTML=searchingMessage;
	objBody.appendChild(objSearchingMessage);

	/*var objSearchingMessageText = document.createElement("p");
	objSearchingMessageText.innerHTML="BUSCANDO PRODUCTOS";
	objSearchingMessage.appendChild(objSearchingMessageText);

	var objSearchingMessageImage = document.createElement("img");
	objSearchingMessageImage.setAttribute('id', 'imgsearching');
	objSearchingMessageImage.setAttribute('src', 'img/searching.gif');
	objSearchingMessageImage.setAttribute('alt', 'searching');
	setTimeout('document.getElementById("imgsearching").src = "img/searching.gif"', 400);
	objSearchingMessage.appendChild(objSearchingMessageImage);*/

	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	$('searching').style.width = arrayPageSize[0] +"px";
	$('searching').style.height = arrayPageSize[1] +"px";

	dimensions = Element.getDimensions(objSearchingMessage);
	var width = dimensions.width;
	var height = dimensions.height;	
	/*if (arrayPageSize[3]>=height) {
		var layerTop = arrayPageScroll[1] + ((arrayPageSize[3]-height)/2);
	}
	else {
		var layerTop = arrayPageScroll[1];
	}*/
	
	if (arrayPageSize[2]>=width) {
		var layerLeft = arrayPageScroll[0] + ((arrayPageSize[2]-width)/2);
	}
	else {
		var layerLeft = arrayPageScroll[0];
	}
		
	objSearchingMessage.style.top = "0px";
	objSearchingMessage.style.left = layerLeft +"px";

	hideSelectBoxes();
	
	$('searching').style.display="block";
	$('searchingMessage').style.display="block";

}


function parseFloatWithComma(str) {
	str = str.replace(/\,/g, '.');
	return parseFloat(str);
}

