// JavaScript Document
// JavaScript Document

var xmlHttp
var server = 'http://www.studentsgoabroad.com/fileadmin/templates/multiflex3/search_tool/';

var start = false;
var begin;

function startSearch(functionID,number,thiselement,bool,navi,naviold,boolsort,boollimit) 
{
	begin = new Date();
	
	xmlHttp=GetXmlHttpObject()

	//opacity("selectelement", 100, 20, 1000);

	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request")
		return
	}
	//Bedingung um Die Zeit zu stoppen --> Startseite
	if(thiselement == false && navi == false) 
	{
		start = true;
	}

	//Wert setzen für SORTBY
	if (typeof(boolsort) == "undefined" || boolsort == false)
	{
		//var j = document.getElementById("boolsort").value;	
		var j = 7;
	}
	else 
		var j = boolsort;
	//Wert setzen für LIMIT
	if (typeof(boollimit)=="undefined") 
	{
		var k = document.getElementById("boollimit").value;	
	}
	else var k = boollimit;


	//ein filterelement oder die startseite wurde gewählt
	if (navi == 0) 
	{
		//idelements für die hidden werte
		var idelements = getIdElements(functionID,number,thiselement);
		//startwert für die navi
		var f = 1;
		
		if(thiselement != false) 
		{
			//document.body.style.cursor="progress";
			document.body.style.cursor="wait";
			for (var i = 0; i < document.getElementsByTagName("input").length; i++) {
				document.getElementsByTagName("input")[i].style.cursor = "wait";
				document.getElementsByTagName("input")[i].disabled = "true";
			}
			for (var i = 0; i < document.getElementsByTagName("p").length;i++) {
				document.getElementsByTagName("p")[i].style.cursor = "wait";
			}

			//window.document.forms.input.style.cursor="wait";
			//document.search_form.check.style.cursor="wait";
		}
		//alert(idelements);
	}
	//Ein Navipunkt wurde gewählt, also idelements und startold werte laden
	else
	{
		var idelements = getIdElmentsNavi(number);
		var f = getStartValue(navi,naviold);		
	}
	var e = functionID;
	//var f = document.getElementById("startold").value;
	var g = number;
	//bool => 1 wenn es ein gechecktes element ist! für alle andern 0
	var i = bool;
	
	var url=server+"getAJAXContent.php"
	//xx => Übergabe an PHP, dass es um search geht == 1
	url=url+"?e="+e+"&f="+f+"&g="+g+idelements+"&h="+thiselement+"&i="+i+"&j="+j+"&k="+k
	url=url+"&sid="+Math.random()
	
	//alert(url);
	xmlHttp.onreadystatechange=stateSearch 
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)

}//end funktion

function stateSearch() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 	{ 
 		document.getElementById("select_maindiv").innerHTML=xmlHttp.responseText;
		//opacity("selectelement", 20, 100, 1000);
		document.body.style.cursor="default";
		for (var i = 0; i < document.getElementsByTagName("input").length; i++) {
			document.getElementsByTagName("input")[i].style.cursor = "pointer";
		}
		for (var i = 0; i < document.getElementsByTagName("p").length; i++) {
			document.getElementsByTagName("p")[i].style.cursor = "pointer";
		}
		//Bedingung um die Zeit zu stoppen
		if(start == true)
		{
			document.getElementById("searchformstudents").style.display = "block";
			opacity("searchformstudents", 0, 100, 1000);
			start = false;
		}
		var timer = begin;
		var ende = new Date();

	 	//alert (((ende.getTime() - timer.getTime()) / 1000).toString());
	}

}//end Function


function getIdElements(functionID,number,thiselement) {

	var selectname = new Array();
	for(var i = 0; i < number; i++) 
	{
		selectname.push("hiddenselect"+i);
	}

	var idelements = "";
	var valarray = new Array();
	var valstring = "";
	var val = "";
	for(var i=0;i < number;i++) 
	{
		//Es ist eine Checkbox ausgewählt worden
		if(thiselement != false) 
		{	
		
			//Es handelt sich um das Selectfeld, was angeklickt wurde
			if(functionID === i) 
			{	
				
				//Es existiert bereits ein Filterkriterium, also muss der Value --thiselement-- geschrieben werden
				if (document.getElementById(selectname[i]).value != false) 
				{
					valarray.push(document.getElementById(selectname[i]).value);
					var valstring = valarray[0];
					
										
					//Es wurde auf das erste Filterkriterium noch einmal geklickt
					if (zeroFill(thiselement) == valstring) 
					{
						valarray.pop();
					}
					else
					{
					
							//alert(valstring);
							var ret = valstring.search(zeroFill(thiselement));
												
							
							//Das Element wurde bereits angeklickt
							if(ret != -1) 
							{	
								
								//ret == beginn des thiselements | leng == gesamtlänge des strings | thisleng == länge des thiselements
								var leng = valstring.length;
								var thisleng = zeroFill(thiselement).length;
								
								//Das letzte Element wurde angeklickt, also Komma mit Element string ---,thiselement--- abschneiden
								if(ret == leng-thisleng) 
								{
									valarray = valstring.replace(","+zeroFill(thiselement),"");
								}
								//Ein mittleres Element wurde angeklickt, also string ---thiselement,--- abschneiden
								else
								{
									valarray = valstring.replace(zeroFill(thiselement)+",","");
								}
								
							}
							//Element wurde noch nicht angeklickt, also hinzufügen
							else
							{
								valarray.push(zeroFill(thiselement));
							}
													
					
					}
					//val ins Filterfeld übertragen und den get String erzeugen
					var val = valarray;
					//document.getElementById(selectname[i]).value = val;
					var idelements = idelements+"&id"+i+"="+val;
					
				}
				//Es ist das erste Filterkriterium aus dem selben selectfeld || zeroFill setzt führende Nullen vorneweg
				else 	
				{
					
					//element = zeroFill(thiselement);
					
					val = thiselement;
					
					//val = element;
					//document.getElementById(selectname[i]).value = val;

					var idelements = idelements+"&id"+i+"="+val;
					
				}
				
			}
			//Es werden IDs geschrieben, welche nicht zum aktuell gewählten Selectkriterium zählen
			else 
			{
			
				//alert(document.getElementById(selectname[i]).value);
				
				var val = document.getElementById(selectname[i]).value;
				var idelements = idelements+"&id"+i+"="+val;
			}
		}
		//Einfaches setzen des GET String, ohne Übertrag eines thiselements (Neuladen der Seite)
		else 
		{
				
			var idelements = idelements+"&id"+i+"="+val;
		}
		
	}
	return idelements;
}// END FUNCTION

function getIdElmentsNavi (number) 
{
	var selectname = new Array();
	var idelements = "";
	for(var i = 0; i < number; i++) 
	{
		selectname.push("hiddenselect"+i);
		var val = document.getElementById(selectname[i]).value;
		var idelements = idelements+"&id"+i+"="+val;
	}
	return idelements;
}

//Funktion setzt den Wert, für die 1 2 3 Navi
function getStartValue(navi,naviold)
{	
	var start = navi;
	var numbers = document.getElementById("boollimit").value;
	//wert 2 steht für eins niedriger
	if(navi == 2) 
	{
		var start = naviold - numbers;
	}
	//wert 3 steht für ein höher
	if(navi == 3) 
	{
		var start = naviold + numbers;
	}

	return start;
}


//zeroFill füllt die aktuelle Zahl mit führenden Nullen, damit es eineindeutige Suchergebnisse gibt
function zeroFill(thiselement) {

	if(thiselement <= 9) var tmp = "000"
	if(thiselement > 9) var tmp = "00"
	if(thiselement > 99) var tmp = "0"
	if(thiselement > 999) var tmp = ""
	var temp = tmp+""+thiselement;
	//alert(thiselement + " "+numLeng+" "+ restLeng+" "+temp);
	return temp;
	//alert(temp);
}//End Function


//FUNCTION FOR OPEN CLOSE SELECTBOX
function showCloseSelect(iterator,counts)
{
	if(document.getElementById("divselect"+iterator).style.display=="none")
        {
	
                for(i=0;i<counts;i++)
                {
                        document.getElementById("divselect"+i).style.display="none";
						document.getElementById("search"+i).style.backgroundColor = "#ffffff"; 
                }
                document.getElementById("divselect"+iterator).style.display="block";
			document.getElementById("search"+iterator).style.backgroundColor = "#eeeeee"; 
        }
        else
        {
	        for(i=0;i<counts;i++)
                {
                        document.getElementById("divselect"+i).style.display="none";
				document.getElementById("search"+i).style.backgroundColor = "#ffffff"; 
                }
        }
}//End Function

function showSelect(iterator,counts)
{
	for(i=0;i<counts;i++)
        {
        	document.getElementById("divselect"+i).style.display="none";
		document.getElementById("search"+i).style.backgroundColor = "#ffffff"; 
        }
        document.getElementById("divselect"+iterator).style.display="block";
		document.getElementById("search"+iterator).style.backgroundColor = "#eeeeee"; 
}//End Function

function closeSelect(counts)
{
	for(i=0;i<counts;i++)
        {
        	document.getElementById("divselect"+i).style.display="none";
		document.getElementById("search"+i).style.backgroundColor = "#ffffff"; 
        }
}//End Function

var ids;

function openIframe (id) 
{
	xmlHttp=GetXmlHttpObject()

	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request")
		return
	}

	//function ist unten eingebunden und nicht vorgegebene js function
	var get = getElementsByClassName("framecontent");
	
	for (var i = 0; i < get.length; i++) {
		get[i].style.display = "none";
	}



	ids = id;
	var url=server+"getFrameContent.php"
	//xx => Übergabe an PHP, dass es um search geht == 1
	url=url+"?id="+id
	url=url+"&sid="+Math.random()
	xmlHttp.onreadystatechange=stateOpenFrame
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)

}//end funktion

function stateOpenFrame() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 	{ 
	//alert(ids);
 		document.getElementById("framecontainer"+ids).innerHTML=xmlHttp.responseText;

	 
		document.getElementById("framecontainer"+ids).style.display="block";

	//	opacity("framecontainer"+ids, 0, 100, 1000);
		

	}
}//end Function

function getSize() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  //return [ scrOfX, scrOfY ];
  return scrOfY;
}

function closeFrame (id) 
{
	//opacity("framecontainer"+id, 100, 0, 1500);
	//setTimeout(document.getElementById("framecontainer"+id).style.display="none",1500);
	document.getElementById("framecontainer"+id).style.display="none";
	

	//opacity("search_content", 20, 100, 1500);


	
	//document.getElementById("search_content").style.opacity="1.0";
}//End Funktion



function GetXmlHttpObject() {
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}//end Function

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

function changeDeleteButton (indizes,id,switcher)
{
	if(switcher == 1) document.getElementById("pic_"+indizes+"_"+id).src = "http://www.studentsgoabroad.com/fileadmin/templates/multiflex3/search_tool/pics/greydelete.gif"
	if(switcher == 2) document.getElementById("pic_"+indizes+"_"+id).src = "http://www.studentsgoabroad.com/fileadmin/templates/multiflex3/search_tool/pics/reddelete.gif"
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}
/* User Agent (Browserkennung) auf einen bestimmten Browsertyp prüfen */  
function checkBrowserName(name)
{
  var agent = navigator.userAgent.toLowerCase();  
  if (agent.indexOf(name.toLowerCase())>-1) {  
    return true;  
  }  
  return false;  
}


/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

