 //parsuje przeslany przezs serwer plik xml z miejscowosciami






function parseLocalitiesXML(localities){
    	var xml = GXml.parse(localities);
    	if(xml.documentElement!=null){
    		var foundLocalities = xml.documentElement.getElementsByTagName("locality");
    		var array=new Array(); 
    	 	for(var i=0;i<foundLocalities.length;i++){
    	 		locality=new Object();
    	 		locality.locality_id=parseElement(foundLocalities,"locality_id",i);
    	 		locality.name=parseElement(foundLocalities,"name",i);
    	 		locality.county=parseElement(foundLocalities,"county",i);
    	 		locality.district=parseElement(foundLocalities,"district",i);
    	 		locality.commune=parseElement(foundLocalities,"commune",i);
    	 		locality.geom=parseLocalityGeomElement(foundLocalities,"localityGeom",i);
    	 		array[i]=locality;
    	 	}
    	
	    	if(array.length>0){
		     	
	     		return array;
	     	}
	     	else{
	     		return null;
	     	}
    	}
	 	else{
	 		return null;
	 	}
	 	}
	 	
	//parsuje przyslany przez serwer xml
    function parseHappeningsXML(imprezy){
     	var xml = GXml.parse(imprezy);
     	if(xml.documentElement!=null){
	     	var happenings = xml.documentElement.getElementsByTagName("happening");
	     	var array=new Array(); 
	     	for(var i=0;i<happenings.length;i++){
	     		happening=new Object();
	     		happening.happeningId=parseElement(happenings,"happeningId",i);
	     		happening.name=parseElement(happenings,"name",i);
	     		happening.county=parseElement(happenings,"county",i);
	     		happening.district=parseElement(happenings,"district",i);
	     		happening.venue_description=parseElement(happenings,"venueDescription",i);
	     		happening.categoryName=parseElement(happenings,"categoryName",i);
	     		happening.commune=parseElement(happenings,"commune",i);
	     		happening.locality=parseElement(happenings,"localityName",i);
	     		happening.startDate=parseElement(happenings,"startDate",i);
	     		happening.endDate=parseElement(happenings,"endDate",i);
	     		happening.addDate=parseElement(happenings,"captureDt",i);
	     		happening.startHour=parseElement(happenings,"startHour",i);
	     		happening.endHour=parseElement(happenings,"endHour",i);
	     		happening.organizer=new Object();
	     		happening.organizer= parseOrganizer(happenings,i);
	     		happening.vendor=new Object();
	     		happening.vendor= parseVendor(happenings,i);
	     		happening.venue=new Object();
	     		happening.venue=parseVenue(happenings,i);
	     		happening.venue2display=setVenue2Display(happening);
	     	
	     		happening.adress=setHappeningAddress(happening);
	     		happening.sponsor=new Object();
	     		happening.sponsor= parseSponsor(happenings,i);
	     		happening.description=parseElement(happenings,"description",i);
	     		happening.imageUrl=parseElement(happenings,"imageUrl",i);
				happening.happeningUrl=parseElement(happenings,"happeningUrl",i);
	     		happening.tags=parseElement(happenings,"tags",i);
	     		happening.happeningGeom=parseHappeningGeomElement(happenings,"happeningGeom",i);
	     		happening.recommended=parseElement(happenings,"recommended",i);
	     		
	     		happening.price=parseElement(happenings,"price",i);
	     		//parsowanie nowych pol dodanych w celu ujednolicenia danych przy imporcie
	     		happening.street=parseElement(happenings,"street",i);
	     		happening.zipCode=parseElement(happenings,"zipCode",i);
	     		happening.vendorHappeningId=parseElement(happenings,"vendorHappeningId",i);
	     		happening.dateSalesFrom=parseElement(happenings,"dateSalesFrom",i);
	     		happening.dateSalesTo=parseElement(happenings,"dateSalesTo",i);
	     		happening.performanceUrl=parseElement(happenings,"performanceUrl",i);
	     		happening.performanceName=parseElement(happenings,"performanceName",i);
	     		happening.destination=parseElement(happenings,"destination",i);
	     		happening.pageUrl=parseElement(happenings,"pageUrl",i);
	     		happening.zoom=parseElement(happenings,"zoom",i);
	     		checkIsSalesIsActual(happening);
	     		array[i]=happening;
	     		
	     	}
	     	if(array.length>0){
	     	
	     		return array;
	     	}
	     	else{
	     		return null;
	     	}
     	}
     	else{
     		return null;
     	}
     	
    }
    function isEmpty(value){
    	if(value==null || value=='' || value=='null'){
    		return true;
    	}	
    	return false; 
    }
  
    function checkIsSalesIsActual(happening){
    	var start_date=parseSalesDate(happening.dateSalesFrom);
    	var isSalesActual;
    	var end_date=parseSalesDate(happening.dateSalesTo);
    
    	if(start_date==null || end_date==null){
    		isSalesActual=0;
    		return;
    	}	
    	var actual_date=new Date();
    	if(start_date<=actual_date && actual_date<=end_date){
    		isSalesActual=1;
    	}	
    	else{
    		isSalesActual=0;
    	}	
//    	alert('start_date: '+start_date+'end_date: '+end_date+' actual'+actual_date);
//    	alert('is actual: '+isSalesActual);
    	happening.isSalesActual=isSalesActual;
    	
    }
   
    function parseSalesDate(sales_date)
     { 
    	 if(sales_date==null || sales_date==''){
    		 return null;
    	 } 
    	 var sales_date_array=sales_date.split('-');
    	 if (sales_date_array.length!=3){
    		 return null;
    	 }	 
    	 var date=new Date();

    	 date.setFullYear(parseInt(sales_date_array[0],10),parseInt(sales_date_array[1]-1,10),parseInt(sales_date_array[2],10));
    	 date.setHours(0,0,0,0);
    	 return date;
     }
     function parseLocalityGeomElement(loc,element,i){
    	
    	if(element=='localityGeom'){
    		
    		var values=loc[i].getElementsByTagName(element);	
    	
    	
    		if(values.length>0){
    			localitiesGeom=new Object();
    			
    			localitiesGeom.lon= parseElement(values,"lon",0);
    			localitiesGeom.lat= parseElement(values,"lat",0);
    			
    			return localitiesGeom;
    			
        	}
        	else{
        		return null;
        	}
    	}
    	else{
    		return null;
    	}
    }
    //parsje kolumne ze wspolrzednymi geograficznymi
    function parseHappeningGeomElement(happenings,element,i){
    	
    	if(element=='happeningGeom'){
    		
    		var values=happenings[i].getElementsByTagName(element);	
    	
    		if(values.length>0){
    			happeningGeom=new Object();
    			
    			happeningGeom.lon= parseElement(happenings,"lon",i);
    			happeningGeom.lat= parseElement(happenings,"lat",i);
    		
    			return happeningGeom;
    			
        	}
        	else{
        		return null;
        	}
    	}
    	else{
    		return null;
    	}
    }
    
    
     //parsuje pojedunczy element z pliku xml
    function parseElement(happenings,element,i){
    	var values=happenings[i].getElementsByTagName(element);
    	if(values.length>0){
    		if(values[0].childNodes[0]!=undefined){
    			return values[0].childNodes[0].nodeValue;
    		}
    	}
    	else{
    		return null;
    	}
    }
    //parsuje organizatora
    function parseOrganizer(happenings,i){
    	var values=happenings[i].getElementsByTagName("organizer");
    	
    	if(values.length>0){
    		var organizer=new Object();
    		organizer.name=parseElement(values,"name",0);
    		organizer.phone=parseElement(values,"phone",0);
    		organizer.email=parseElement(values,"email",0);
    		organizer.address=parseElement(values,"address",0);
    		organizer.www=parseElement(values,"www",0);
    		organizer.personName=parseElement(values,"personName",0);
    		return organizer;
    	}
    	else{
    		return null;
    	}
    }
    function parseSponsor(happenings,i){
    	var values=happenings[i].getElementsByTagName("sponsor");
    	if(values.length>0){
    		var vendor=new Object();
    		vendor.name=parseElement(values,"name",0);
    		vendor.description=parseElement(values,"description",0);
    		vendor.iconUrl=parseElement(values,"iconUrl",0);
    		vendor.www=parseElement(values,"www",0);
    		return vendor;
    	}
    	else{
    		return null;
    	}
    }
    function setHappeningAddress(happening){
    	if(isEmpty(happening) && sEmpty(happening.venue) && isEmpty(happening.street)){
    		return null;
    	}	
    	var str='';
    	if(!isEmpty(happening.venue)){
    		if(!isEmpty(happening.venue.street)){
    			str=str+', '+happening.venue.street;
    		}	
    		if(!isEmpty(happening.venue.houseApartmentNo)){
    			str=str+', '+happening.venue.houseApartmentNo;
    		}
    		if(str==''){
    			return null;
    		}	
    		return str;
    	}	
    	else if(!isEmpty(happening.street)){	
			return happening.street;
		}
    	return null;
    }
    function setVenue2Display(happening){
    	if((isEmpty(happening) || (isEmpty(happening.venue) && isEmpty(happening.venue_description))) && isEmpty(happening.street)){
    		return null;
    	}	
    	
    	if(isEmpty(happening.venue)){
    		if(!isEmpty(happening.venue_description)){
    			
    			return happening.venue_description;
    		}
    		else{
    			return null;
    		}
    	}	
    	else{
    		var str='';
    		if(!isEmpty(happening.venue.name)){
    			return str=str+''+happening.venue.name;
    		}	
    		else if(!isEmpty(happening.venue_description)){
    			
    			return happening.venue_description;
    		}
  	
    		return null;
    		
    	}	
    }
    function parseVenue(happenings,i){
    	var values=happenings[i].getElementsByTagName("venue");
    	if(values.length>0){
    		var venue=new Object();
    		venue.venueId=parseElement(values,"venueId",0);
    		venue.name=parseElement(values,"name",0);
    		venue.street=parseElement(values,"street",0);
    		venue.postCode=parseElement(values,"postCode",0);
    		venue.houseApartmentNo=parseElement(values,"houseApartmentNo",0);
    		return venue;
    	}
    	else{
    		return null;
    	}
    }
    
    function parseVendor(happenings,i){
    	var values=happenings[i].getElementsByTagName("vendor");
    	if(values.length>0){
    		var vendor=new Object();
    		vendor.name=parseElement(values,"name",0);
    		vendor.description=parseElement(values,"description",0);
    		vendor.iconUrl=parseElement(values,"iconUrl",0);
    		vendor.www=parseElement(values,"www",0);
    		return vendor;
    	}
    	else{
    		return null;
    	}
    }
    
    function vendor2Strinng(vendor){
    	var napis='name: '+vendor.name;
    	napis=napis+'\ndescription'+vendor.description;
    	napis=napis+'\nicon_url: '+vendor.iconUrl;
    	napis=napis+'\nwww'+vendor.www;
    	return napis;
    }
    
       //wyciagam numer aktualnej strony z przesylanego pliku xml
    function getActualPage(imprezy){
    	var xml = GXml.parse(imprezy);
     	if(xml.documentElement!=null){
     		var values = xml.documentElement.getElementsByTagName("actualPage");
     		if(values.length>0){
        		if(values[0].childNodes[0]!=undefined){
        			return values[0].childNodes[0].nodeValue;
        		}
        	}
        	else{
        		return null;
        	}
     	}
    }
