var orderByItems = Array();

function new_window (file) {
	win = window.open(file,"NewWindow","width=600,height=500,scrollbars=yes,resizable=no");
}

function askDelete (text) {
	return confirm("Soll " + text + " wirklich gel�scht werden?");
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function buildProductSearchGroups (form,vParam) {
	var boxes = form.elements;
	var psg = "";

	var h = $(document).height();
	$('#preloadDiv').show();
	$('#preloadDiv').css('height', h);

	for (var i = 0;i < boxes.length;i++) {
	    
// BEGIN BST-Modification
// separator for the multiple attributes in the url
        var urlMultiSeperator = '::';

// old:
//		if (!boxes[i].name.match(/^btn_*|ptk|pid|nav|cat|psg|header|country|language$/i)) {
//			if (boxes[i].value != "") {
//				psg += ((psg == "") ? "" : ",") + boxes[i].name + "|" + boxes[i].value;
//			}
//		}
// new:
// Eine checkboxauswahl hat mehrere elemente mit dem gleichen Namen (Array). Diese m?ssen gefiltert werden
// damit nur das ausgew?hlte Attribut in die URL ?bernommen wird.
        
        // In diese Abfrage kommen nur nicht Checkboxen und Radiobuttons. Bei einem Checkboxmen? oder Radiobuttonmen? kommt jeweils nur das ausgew?hlte element in diese Abfrage.
        if( (boxes[i].type != 'checkbox' && boxes[i].type != 'radio') || ((boxes[i].type == 'checkbox' || boxes[i].type == 'radio' ) && boxes[i].checked) ) 
        {
    		if (!boxes[i].name.match(/^btn_*|ptk|pid|nav|cat|psg|header|country|language$/i)) {
    			if (boxes[i].value != "") {

    			    var elementName = ''
                    // Da die Elementnamen vom checkboxmen? [] enthalten, m?ssen diese aus dem Namen entfernt werden.
                    if( boxes[i].type == 'checkbox' ) {
        			    elementName = boxes[i].name.replace(/\[/g, "");
        			    elementName = elementName.replace(/\]/g, "");
    			    } else {
        			    elementName = boxes[i].name;
    			    }
    			    
    			    // HIER EDGAR:
                    // Elementtrenner für die Suche nach einer bereits vorhandenen Gruppe anhängen damit ähnliche Bezeichnungen wie z.B. Schnittstelle und Schnittstelle2 nicht
                    // zu Fehlern führen. Wenn nicht würde Schnittstelle in Schnittstelle2 gefunden was falsch wäre.
					elementName = elementName + '|';

                    // if the attribute is already part of the psg-string (checkboxmenu) the following attributes must be separated with the separator 'urlMultiSeperator'
                    if( psg.indexOf(elementName) != -1 ) {
        				psg += urlMultiSeperator + boxes[i].value;
    				} else {    				
//    				    psg += ((psg == "") ? "" : ",") + elementName + "|" + boxes[i].value;
    				    psg += ((psg == "") ? "" : ",") + elementName + boxes[i].value;
    				}
    			}
    		}
    	}
// END BST-Modification
	}

	form.psg.value = psg;
	form.btn_submit.value = "1";
	form.submit();
}




function buildProductTypeKeys (form) {
	var boxes = form.elements;
	var ptk = "";
	for (var i = 0;i < boxes.length;i++) {
		if (!boxes[i].name.match(/^pid|^btn_|^ptk|^language|^header|^country|^cat|^psg/i)) {
			if (boxes[i].value != "") {
				ptk += ((ptk == "") ? "" : ",") + boxes[i].name + "|" + boxes[i].value;
			}
		}
	}
	form.ptk.value = ptk; 
	form.btn_submit.value = "1";
	form.submit();
}

/**
 * Adds an order column to the order request
 * New since [jug, 21.09.2006]
 */
function addOrder(sourceElement) {
	var thElement = sourceElement;
	while (thElement.nodeName != "TH") {
		thElement = thElement.parentNode;
	}
	
//	alert("adfasd");
	
	var field = thElement.id;

	// parse image-src
	var image = sourceElement;
	var res = image.src.match(/^(.*)\/(sort-)(asc|desc)-?(selected|)\.(png|gif)/i);
	var dir = res[3];

	// check if the orderby field is selected
	if (res[4] == 'selected') {
//	alert(res[1] + "/" + res[2] + res[3] + "." + res[5]);
		// unselect this field
		// and remove it from the order-by-string
		image.src = res[1] + "/" + res[2] + res[3] + "." + res[5];
		addOrderByItem(field, "");
	}
	else {
		// select the current field
		// unselect the other (asc|desc) image
		image.src = res[1] + "/" + res[2] + res[3] + "-selected." + res[5];
		var inverse = 'asc';
		if (res[3] == 'asc') {
			inverse = 'desc';
		}
//	alert(res[1] + "/" + res[2] + res[3] + "-selected." + res[5]);
		var inversesort = 'sort-'+inverse;
		var parentNode = image.parentNode;
		parentNode.getElementsByTagName('img')[inversesort].setAttribute('src', res[1] + "/" + res[2] + inverse + "." + res[5]);
		addOrderByItem(field, dir);
	}
}

/**
 * Adds an item to the above defined oderByItems-Array, which holds all the
 * items (field) including their sort-direction. the position is the position
 * used for the SQL-oderby clause.
 * 
 * Format: <field1>|<dir1>,<field2>|<dir2>,...
 */
function addOrderByItem (field, dir) {
	var inverseOrder = new Array();
	inverseOrder['asc'] = 'desc';
	inverseOrder['desc'] = 'asc';
	var found = false;
	for (var nr = 0;nr < orderByItems.length;nr++) {
		itemChunks = orderByItems[nr].split("|");
		if (itemChunks[0] == field) {
			// found field
			if (dir == "") {
				// dir is empty, so set this element to idle
				orderByItems[nr] = field + "|-";
			} 
			else {
				if (itemChunks[1] == "-") {
					itemChunks[1] = inverseOrder[dir];
				}
				orderByItems[nr] = field + "|" + inverseOrder[itemChunks[1]];
			}
			found = true;
		}
	}
	
	if (!found) {
		orderByItems.push(field + "|" + dir);
	}
}


/**
 * Finalizes an order request
 * New since [jug, 21.09.2006]
 */
function finalizeOrder (sourceElement) {
	var chunks = document.location.pathname.match(/([a-z0-9\/_]*\.php)/i);
	var queryString = document.location.search;
	var getParams = queryString.substring(1).split("&");
	var cleanedParams = Array();
	for (var p = 0;p < getParams.length;p++) {
		if (getParams[p].search(/^orderby/) == -1) {
			cleanedParams.push(getParams[p]);
		}
	}
	
	var baseUrl = chunks[1] + "?";
	
	var thElement = sourceElement;
	var image = sourceElement;
	while (thElement.nodeName != "TH") {
		thElement = thElement.parentNode;
	}
	
	if (sourceElement.name == "sort-asc" && sourceElement.style.display != "") {
		sourceElement = sourceElement.parentNode.getElementsByTagName('img')["sort-desc"];
	}
	else {
		sourceElement = sourceElement.parentNode.getElementsByTagName('img')["sort-asc"];
	}
	
	var field = thElement.id;
	
	addOrder(sourceElement);
	
	var string = "";
	for (var j = 0;j < orderByItems.length;j++) {
		chunks = orderByItems[j].split("|");
		if (chunks[1] != '-') {
			// only use non-empty = not a - fields
			string += ((string == "") ? "" : ",") + orderByItems[j];
		}
	}
	if (string.length > 0) {
		cleanedParams.push("orderby="+string);
	}
	
	baseUrl = baseUrl + cleanedParams.join("&");
		
	if (baseUrl.indexOf("specialSort=",1)> 0) {
		baseUrl = baseUrl.replace("specialSort=1","specialSort=0");
	}
	else{
		baseUrl = baseUrl + "&specialSort=0";
	}
	
	//document.write (baseUrl);
		
	// reload page with orderby=... as get parameter
	window.location.href = baseUrl;
}

/**
 * selects the orders for the selected columns
 * New since [jug, 21.09.2006]
 */
function selectOrder (selectedColumns) {
    
	var bereich = document.getElementById("results");
	var ths = bereich.getElementsByTagName("th");
	
	var columns = selectedColumns.split(",");
	for (var h = 0;h < ths.length;h++) {
		for (var c = 0;c < columns.length;c++) {
			var chunks = columns[c].split("|");
			if (ths[h].id == chunks[0]) {
				markColumnOrder(ths[h], chunks[1], c+1);
			}
		}
	}
}

/**
 * New since [jug, 21.09.2006]
 */
function markColumnOrder (parentElement, dir, position) {
	if (dir) {
		var image = parentElement.getElementsByTagName("img")["sort-" + dir];
		var otherDir = (dir == "asc") ? "desc" : "asc";
		var otherImage = parentElement.getElementsByTagName("img")["sort-" + otherDir];
		var res = image.src.match(/^(.*)\/(sort-)(asc|desc)-?(selected|)\.(png|gif)/i);
		image.src = res[1] + "/" + res[2] + res[3] + "-selected." + res[5];
		otherImage.style.display = "none";
		image.style.display = "inline";
	}
}

function resetOtherDropdowns (dropdown) {
	for (var i = 0;i < dropdown.form.elements.length;i++) {
		if (dropdown.form.elements[i].type.match(/^select/i) && dropdown.form.elements[i].name != dropdown.name) {
			dropdown.form.elements[i].options.selectedIndex = 0;
		}
	}
}

function ClearForm() {
  document.query.query.value= "";
}

startList = function() {
	if (document.all&&document.getElementById) {
		navRoot = document.getElementById("nav");
		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;

