
var hsChanger;

function changeHouseSeasonStart(stagione, theUrl){
	if(hsChanger == null){
		hsChanger = new HouseSeasonChanger();
	}
	hsChanger.changeHouseSeason(stagione, theUrl);
}


var HouseSeasonChanger = new Class({

	myStorageElement: null,
	inOperation: false,
	currentTexts: null,
	namesArray : [
			'pricetable',
			'descriptionDiv',
			'accommodationHolder',
			'extraCostsHolder'
		],
	

	changeHouseSeason: function(stagione, theUrl){
		var widget = this;
		if(this.inOperation){
			return;
		}
		if($defined(this.myStorageElement)){
			widget.changeSeason();
		}else{
			this.myStorageElement = new Element('myStorageElement');
			var myRequest = new Request({
				url: theUrl,
				method: 'get',
				onSuccess: function(responseText, responseXML){
					widget.saveStuff(responseText);
					widget.changeSeason();
				}
			}),widget;
			var theObj = $('changeToYear');
			myRequest.send('stagione=' + $('changeToYear').innerHTML + "&priceChangeCall=true&tm=" + new Date().getTime());
		}//end if
	},

	getReplacementObj: function(allDivs, idWanted){
		for(var i = 0; i < allDivs.length; i = i + 1){
			var currentDiv = allDivs[i];
			if(allDivs[i].id == idWanted){
				return allDivs[i];
			}
		}//end for
	},

	createReplacementSlides: function(newObj, divId){

		var newText = newObj.textContent;
		var origText = $(divId).textContent;

		if(newObj.innerHTML == $(divId).innerHTML){
			return;
		}

		newObj.id = divId + 'New';
		newObj.inject($(divId),'before');
		var myFxNew = new Fx.Slide(newObj,{
			duration: 500
		});
		myFxNew.hide();
		
		var myFxOrig = new Fx.Slide($(divId),{
			duration: 500
		});

		this.myStorageElement.store(divId + 'New', myFxNew);
		this.myStorageElement.store(divId + 'Orig', myFxOrig);
		
		
	},
	
	changeSeason: function(){
		//currentTexts variable tells us which season to get
		if(this.currentTexts == null || this.currentTexts == 'Orig'){
			this.currentTexts = 'New';
		}else{
			this.currentTexts = 'Orig';
		}//end if

		var widget = this;
		
		this.doTheUpdates(0);
		this.toggleYears();		
		//ok, we've finished
		this.inOperation = false;
	},
	
	toggleYears: function(){
	
		if(this.currentTexts == 'New'){
			$('changeFromYear').value = this.myStorageElement.retrieve('yearNew');
			$('changeToYear').textContent = this.myStorageElement.retrieve('yearOrig');
		}else{
			$('changeFromYear').value = this.myStorageElement.retrieve('yearOrig');
			$('changeToYear').textContent = this.myStorageElement.retrieve('yearNew');
		}//end if

	},

	doTheUpdates: function(namesArrayIndex){
		if(namesArrayIndex > this.namesArray.length - 1){
			return;
		}
		
		var widget = this;
		var currentObjName = this.namesArray[namesArrayIndex];

		var myFxNew = this.myStorageElement.retrieve(this.namesArray[namesArrayIndex] + 'New');
		var myFxOrig = this.myStorageElement.retrieve(this.namesArray[namesArrayIndex] + 'Orig');
				
		if($defined(myFxNew)){
			myFxNew.toggle('vertical').chain(function(){
				myFxOrig.toggle('vertical').chain(function(){
					widget.doTheUpdates(namesArrayIndex + 1);
				}), widget;
			});
		}//end if
		
	},

/*
	toggleText: function(id){
		var currentObj = this.myStorageElement.retrieve(id + this.currentTexts);
		$(id).innerHTML = currentObj.innerHTML;
	},

	storeObj: function(allDivs, id){
		var replacementObj = this.getReplacementObj(allDivs, id);
		var replacementObjClone = replacementObj.clone(true);
		replacementObjClone.id = "";
		//store the replacement
		this.myStorageElement.store(id + 'New', replacementObjClone);
		replacementObj = null;
		//store the original, as a clone to avoid namespacing problems
		var origObjClone = $(id).clone(true);
		origObjClone.id = "";
		this.myStorageElement.store(id + 'Orig', origObjClone);
	},
*/
	saveStuff: function(responseText){
		var myHtml = new Element('document',{
			html: responseText
		});
		
		//var theIndex = responseText.indexOf("WEEKLY PRICES");
		//alert(responseText.substring(theIndex));
		
		var allDivs = myHtml.getElements('div');
		var widget = this;
		this.namesArray.each(function(value,index){
			var replacementObj = widget.getReplacementObj(allDivs,value);
			widget.createReplacementSlides(replacementObj,value);
		}),widget;
		
		//store the years as well
		var yearOrigText = $('changeFromYear').value;
		var yearNewText = $('changeToYear').innerHTML;

		this.myStorageElement.store('yearOrig', yearOrigText);
		this.myStorageElement.store('yearNew', yearNewText);
		myHtml = null;
		allDivs = null;
	}
});

