/**
 * @author Daniel Schwerdtner
 * @copyright Fahrenheit e-solutions GmbH & Co. KG, 2007
 * @since 21/01/2008
 * 
 * JavaScript support functions for tx_welkeselector
 */

var http;

//determine browser
var iebrowser;
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('msie') != -1 && ua.indexOf('opera') < 0)
{
	iebrowser = 'ms';
	if (ua.indexOf('msie 7') >= 0)
	{
		iebrowser = 'ms7';
	}
}
else
{
	iebrowser = 'moz';
}

//create xmlhttprequest for ajax
if (window.XMLHttpRequest) 
{
   http = new XMLHttpRequest();
} 
else if (window.ActiveXObject) 
{
   http = new ActiveXObject("Microsoft.XMLHTTP");
}

/**
 * Function queries database for product IDs that equals user's selection
 * @param {Object} paramId
 */
function getProduct(paramId)
{
	var values;
	var optValues = getOptionValues();
	var cbValues = getCheckboxValues();
	var optValuesNew;
	var cbValuesNew;
	
	try
	{
		optValuesNew = optValues.replace(/undefined/gi,"");
	}
	catch (e)
	{
		optValuesNew = '';
	}
	
	try
	{
		cbValuesNew = cbValues.replace(/undefined/gi,"");
	}
	catch (ex)
	{
		cbValuesNew = '';
	}
	
	values = optValuesNew + cbValuesNew;
	
	if (values)
	{
		if (http != null) 
		{
			http.open('GET', 'index.php?eID=welke_selector&optionValues='+values, true);
			http.onreadystatechange = productToDisplay;
			http.send(null);
		}
	}	
	else
	{
		showAll();
	}
}

/**
 * Function returns values of all <option>-Tags
 * @return <option> values as comma-seperated string
 */
function getOptionValues()
{
	var options;
	options = document.getElementById('tx-welkeselector-pi1-form').getElementsByTagName('option')
	
	var optionValues;
	for (var i=0; i<options.length; i++)
	{
		if (options[i].selected == true && options[i].value != '0')
		{
			optionValues += options[i].value + ',';
		}
	}
	
	return optionValues;
}

/**
 * Functions returns values of checked Checkboxes
 * @return <input> values as comma-seperated-string
 */
function getCheckboxValues()
{
	var checkboxes;
	checkboxes = document.getElementById('tx-welkeselector-pi1-form').getElementsByTagName('input')
	
	var checkboxValues;
	for (var i=0; i<checkboxes.length; i++)
	{
		if (checkboxes[i].checked == true)
		{
			checkboxValues += checkboxes[i].value + ',';
		}
	}
	return checkboxValues;
}

/**
 * Function evaluates json-array returned by server and displays corresponding products
 * @return nothing
 */
function productToDisplay()
{
	var json_productIds;
	var productIds;
	
	if (http.readyState == 4)
	{
		json_productIds = http.responseText;
		productIds = eval('(' + json_productIds + ')');
		hideProducts();
		showProducts(productIds);
	}
}

/**
 * Functions hides all products that do not fit user's selection
 */
function hideProducts()
{
	var cTTd = document.getElementById('tx-welkeselector-pi1-coTable').getElementsByTagName('td');
	for (var l=0; l<cTTd.length; l++)
	{
		cTTd[l].style.visibility = 'hidden';
	}
	
	var dataTab = document.getElementById('tx-welkeselector-pi1-dataTable');
	var dataTabBody = dataTab.getElementsByTagName('tbody');
	
	for (var i=0; i<dataTabBody.length; i++)
	{
		var dTTd = dataTabBody[i].getElementsByTagName('td');
		for (var k=0; k<dTTd.length; k++)
		{
			dTTd[k].style.visibility = 'hidden';
			dTTd[k].style.position = 'absolute';
			dTTd[k].style.top = '0';			
			dTTd[k].style.left = '-9999em';
			switch (iebrowser)
			{
				case 'moz':	dTTd[k].style.display = 'none';
				break;

				default:	
				break;						
			}
		}
	}
	
	var dataTabHead = dataTab.getElementsByTagName('thead');
	
	for (var m=0; m<dataTabHead.length; m++)
	{
		var dTTh = dataTabHead[m].getElementsByTagName('th');
		for (var n=1; n<dTTh.length; n++)
		{
			dTTh[n].style.visibility = 'hidden';
			dTTh[n].style.position = 'absolute';
			dTTh[n].style.top = '0';			
			dTTh[n].style.left = '-9999em';
			switch (iebrowser)
			{
				case 'moz':	dTTh[n].style.display = 'none';
				break;

				default:	
				break;						
			}
		}
	}
}

/**
 * Function sows all products that fit user's selection
 * @param {Object} pId IDs of products
 */
function showProducts(pId)
{
	if (pId.length >= 1)
	{
		if (document.getElementById('notFound') != null)
        {       
            document.getElementById('tx-welkeselector-pi1-coTable').removeChild(document.getElementById('notFound'));
        }
        
        for (var j=0; j<pId.length; j++) //pId.length
		{
			var tagArray = getElementsByClassName('item'+pId[j]);
			for (var k=0; k<tagArray.length; k++)
			{
				if (tagArray[k].parentNode.parentNode.parentNode == document.getElementById('tx-welkeselector-pi1-coTable'))
				{
					tagArray[k].style.visibility = 'visible';
				}
				
				if (tagArray[k].parentNode.parentNode.parentNode == document.getElementById('tx-welkeselector-pi1-dataTable') && j<3)
				{
					tagArray[k].style.visibility = 'visible';
					tagArray[k].style.position = '';
					tagArray[k].style.top = '';			
					tagArray[k].style.left = '';
					switch (iebrowser)
					{
						case 'moz':	tagArray[k].style.display = 'table-cell';
						break;

						default:	
						break;						
					}
				}
			}	
		}
        document.getElementById('tx-welkeselector-pi1-dataTable').style.display = 'block';
	}
    else
    {
        var div = document.createElement('div');
        div.setAttribute('id','notFound');
        
        var paragraf = document.createElement('p');
        div.appendChild(paragraf);

        var umlaut = unescape("F%FCr die von Ihnen gew%E4hlten Parameter gibt es kein mk Modul %u2013 bitte sprechen Sie uns f%FCr eine Individuall%F6sung an%21");        
        var text = document.createTextNode(umlaut);
        paragraf.appendChild(text);
        
        text = document.createElement('br');
        paragraf.appendChild(text);
        
        text = document.createElement('br');
        paragraf.appendChild(text);
        
        text = document.createTextNode('No mk product found - please place us a call in order to get an individual solution!');
        paragraf.appendChild(text);
        
        if (document.getElementById('notFound') == null)
        {       
            document.getElementById('tx-welkeselector-pi1-coTable').appendChild(div);
        }
        else
        {
            document.getElementById("tx-welkeselector-pi1-coTable").replaceChild(div, document.getElementById("notFound"));
        }
    }
	
	
}

/**
 * Functioon displays whole coTab, in case values is empty
 */
function showAll()
{
	var cT = document.getElementById('tx-welkeselector-pi1-coTable');//.getElementsByTagName('td');
	var cTTd = document.getElementById('tx-welkeselector-pi1-coTable').getElementsByTagName('td');
	for (var l=0; l<cTTd.length; l++)
	{
		cTTd[l].style.visibility = 'visible';
	}
	
	var cToH = getElementsByClassName('hidden');
	for (var m=0; m<cToH.length; m++)
	{
		cToH[m].style.visibility = 'hidden';
	}
	
	document.getElementById('tx-welkeselector-pi1-dataTable').style.display = 'none';
}

/**
 * Function gets all <tags> with a given className
 * @param {Object} clsName the className
 * @return the <tags> as array
 */
function getElementsByClassName(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;
}

