/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}


/**
 * isDefined v1.0
 * 
 * Check if a javascript variable has been defined.
 * 
 * Author : Jehiah Czebotar
 * Website: http://www.jehiah.com
 * Usage  : alert(isdefined('myvar'));
 */
function isDefined( variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}



function checkUncheckAll(theElement) {
	var checkBoxes = getCheckboxes();
	for(z = 0; z < checkBoxes.length; z++){
		checkBoxes[z].checked = !(checkBoxes[z].checked);
	}
}

function getCheckboxes() {
	var node_list = document.getElementsByTagName('input');
	var checkboxes = [];

	for (var i =0; i < node_list.length; i++) {
		var node = node_list[i];

		if (node.getAttribute('type') == 'checkbox') {
			checkboxes.push(node);
		}
	} 

	return checkboxes;
}


function jumpFromSelect(theSelect){

    window.location.href = theSelect.options[theSelect.selectedIndex].value
}

function displayBlock(id) {
	
	var block = document.getElementById(id);
	if(block.style.display == "block")
		block.style.display = "none";
	else
		block.style.display = "block";
}

function showBlock(id) {
	var block = document.getElementById(id);
	block.style.display = "block";
}

function hideBlock(id) {
	var block = document.getElementById(id);
	block.style.display = "none";
}

function showMessage( message, color) {
	if (color == '#ff0000') {
		element = document.getElementById('messenger');
		element.style.display = "block";
		element.style.backgroundColor = color; 
		element.innerHTML = message+" <br />";
	}
}

//Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}

// po ztraceni focusu nastavi text prvku formulare na defaultni hodnotu
setText = function(theElement, msg) {
	var el = document.getElementById(theElement);
	if (el.value == '') {	// nastavi defaultni, jen pokud uzivatel nezadal svoji hodnotu
		el.value = msg;
	}
}

// po ziskani focusu vymaze text prvku
removeText = function(theElement, msg) {
	var el = document.getElementById(theElement);
	if (el.value == msg) {	// vymaze, jen pokud je zadab defaultni text
		el.value = '';
	}
}

/**
 * marks all rows and selects its first checkbox inside the given element
 * the given element is usaly a table or a div containing the table or tables
 *
 * @param container DOM element
 */
function setAllRadios( container_id, value) {
	
	var rows = document.getElementById(container_id).getElementsByTagName('tr');
	
	var radio;
	for ( var i = 0; i < rows.length; i++ ) {
	
		inputElements = rows[i].getElementsByTagName( 'input' );
		for ( var j = 0; j < inputElements.length; j++) {
		
			element = inputElements[j];
			if ( element && element.type == 'radio' ) {
				element.checked = false;
				if(element.value == value.toString()) {
					element.checked = true;
				}
			}
		}
	}
	return true;
}


/*
 * Market - pridani polozky do porovnavaciho kosiku
 */

function addBasketElement(label, url, id){
		var parentDiv = document.getElementById('div-compare-products');
		var newP = document.createElement('p');
		newP.setAttribute('class','product-in-basket');
		newP.setAttribute('id','p-in-basket-'+id);
		newP.innerHTML = '<a href="'+ url +'" title="'+ label +'">'+ label+'</a> <span style="cursor:pointer;" onClick="$.get( location.protocol + \'//\' + location.hostname + JSbaseUrl+ \'/market/remove-from-compare/id_market_items/'+ id+'\'  , function(data){eval(data)});" id="in-basket-'+id+'" title="odebrat '+ label+' z porovnání">[X]</span>';
		parentDiv.appendChild(newP);
}
/*
 * Market - odebrani polozky z porovnavaciho kose
 */
function deleteFromBasket(id) {
	var parentDiv = document.getElementById('div-compare-products');
	var myP = document.getElementById('p-in-basket-'+id);
	parentDiv.removeChild(myP);
}

/**
 * funkce, aby fungovalo :hover v IE6
 */
startList = function() {
	if (document.all&&document.getElementById) {
	navRoot = document.getElementById("menu_list");
	for (i=0; i<navRoot.childNodes.length; i++) {
	node = navRoot.childNodes[i];
	if (node.nodeName=="LI") {
	node.onmouseover=function() {
	this.className+=" over";
	  }
	  node.onmouseout=function() {
	  this.className=this.className.replace
	        (" over", "");
	   }
	   }
	  }
	 }
	}
window.onload=startList;

/**
 * funkce pro odeslani odpovedi v diskuzi - vyplni "komu se odpovida"
 * @param date
 * @param author
 * @return
 */
function post_reply(date, author) {
	var msg = document.getElementById('message');
	msg.value += "*>> **"+author+"**, "+date+"*\n\n";
	msg.focus();
}

function select_innerHTML(objeto,innerHTML){
	/******
	* select_innerHTML - corrige o bug do InnerHTML em selects no IE
	* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
	* Versão: 2.1 - 04/09/2007
	* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
	* @objeto(tipo HTMLobject): o select a ser alterado
	* @innerHTML(tipo string): o novo valor do innerHTML
	*******/
	    objeto.innerHTML = ""
	    var selTemp = document.createElement("micoxselect")
	    var opt;
	    selTemp.id="micoxselect1"
	    document.body.appendChild(selTemp)
	    selTemp = document.getElementById("micoxselect1")
	    selTemp.style.display="none"
	    if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
	        innerHTML = "<option>" + innerHTML + "</option>"
	    }
	    innerHTML = innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span")
	    selTemp.innerHTML = innerHTML
	      
	    
	    for(var i=0;i<selTemp.childNodes.length;i++){
	  var spantemp = selTemp.childNodes[i];
	  
	        if(spantemp.tagName){     
	            opt = document.createElement("OPTION")
	    
	   if(document.all){ //IE
	    objeto.add(opt)
	   }else{
	    objeto.appendChild(opt)
	   }       
	    
	   //getting attributes
	   for(var j=0; j<spantemp.attributes.length ; j++){
	    var attrName = spantemp.attributes[j].nodeName;
	    var attrVal = spantemp.attributes[j].nodeValue;
	    if(attrVal){
	     try{
	      opt.setAttribute(attrName,attrVal);
	      opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
	     }catch(e){}
	    }
	   }
	   //getting styles
	   if(spantemp.style){
	    for(var y in spantemp.style){
	     try{opt.style[y] = spantemp.style[y];}catch(e){}
	    }
	   }
	   //value and text
	   opt.value = spantemp.getAttribute("value")
	   opt.text = spantemp.innerHTML
	   //IE
	   opt.selected = spantemp.getAttribute('selected');
	   opt.className = spantemp.className;
	  } 
	 }    
	 document.body.removeChild(selTemp)
	 selTemp = null
}

function switchTabs(showId,hideClass,thisEl){
    $('.'+hideClass).css('display', 'none');
    $('#'+showId).css('display', 'block');
    
    if (thisEl != 'undefined') {
    	$(thisEl).css('font-weight','bold').siblings('span').css('font-weight','normal');
    }
}

/**
 * automaticke skryti flash messengeru po 5 sekundach
 */
$(document).ready(function() {
	if ($("#messenger").css('display') == 'block' && !$('#messenger').hasClass('message_red')) {
		$("#messenger").delay(3000).fadeOut('slow');
	}
}); 