var today = null;
var dateAct = null;
var divCalendarAct = null;
//var divAgendaAct = null;
var heureDeb = heureFin = null;
var est_connecte = null;
var id_credit_select = null;
var scrollToTop = false;


function startCalendar(displayDate, todayDate, estConnecte){
	//On sélectionne le bon mois, et la bonne année dans les listes déroulantes
	var tabDate = displayDate.split("-");
	//$('yearCalendarID').value = parseInt(tabDate[0], 10);
	//$('monthCalendarID').value = parseInt(tabDate[1], 10);
	$('monthYearCalendarID').value = tabDate[1] + "-" + tabDate[0];
	
	today = todayDate;
	dateAct = displayDate;
	//heureDeb = (HheureDeb);
	//heureFin = (HheureFin);
	est_connecte = estConnecte;
	
	//On affiche le calendrier
	showCalendar(displayDate, "none");
}

function updateCalendar(){
	//On récupère les valeurs sélectionnées par l'utilisateur
	var yearMonth = $('monthYearCalendarID').value
	var tabYearMonth = yearMonth.split("-");
	
	var year = parseInt(tabYearMonth[1], 10);
	var month = parseInt(tabYearMonth[0], 10);
	
	var tabTodayDate = today.split("-");
	if(year > parseInt(tabTodayDate[0], 10) || month >= parseInt(tabTodayDate[1], 10)){
		var tabDateAct = dateAct.split("-");
		var direction = "left";
		if(year > parseInt(tabDateAct[0], 10) || month > parseInt(tabDateAct[1], 10)){
			direction = "right";
		}
		
		//On affiche le calendrier
		if(year == tabTodayDate[0] && month == tabTodayDate[1]){
			dateAct = year + "-" + month + "-" + tabTodayDate[2];
		}else{
			dateAct = year + "-" + month + "-01";
		}
		//dateAct = year + "-" + month + "-01";
		showCalendar(dateAct, direction);
	}else{
		tabDateAct = dateAct.split("-");
		$('yearCalendarID').value = parseInt(tabDateAct[0], 10);
		$('monthCalendarID').value = parseInt(tabDateAct[1], 10);
	}
}

function changeCalendarMonth(incr){
	var tabTodayDate = today.split("-");
	var yearMonth = $('monthYearCalendarID').value
	var tabYearMonth = yearMonth.split("-");
	
	var new_year = year = parseInt(tabYearMonth[1], 10);
	var new_month = month = parseInt(tabYearMonth[0], 10);


	new_month = parseInt(month + incr, 10)%12;
	if(new_month == 0){
		new_month = 12;
	}else if(new_month < 0){
		new_month += 12;
	}
	
	if(incr <= -12 || incr >= 12){
		new_year += Math.floor(incr/12);
	}
	
	if(incr > 0 && new_month < month){
		new_year++;
	}else if(incr < 0 && new_month > month){
		new_year--;
	}
	
	if(new_month < 10){
		new_month = "0" + new_month;
	}
	//alert("if((" + new_year +">" + parseInt(tabTodayDate[0], 10) +" || "+  new_month  +" >= " + parseInt(tabTodayDate[1], 10) +")&&"+ new_year +"<="+ (parseInt(tabTodayDate[0])+5, 10) + "){");
	
	//if((new_year > parseInt(tabTodayDate[0], 10) || new_month >= parseInt(tabTodayDate[1], 10)) && new_year <= parseInt(tabTodayDate[0])+4, 10){
	if(existsInList(new_month + "-" + new_year, $('monthYearCalendarID'))){
		//$('yearCalendarID').value = new_year;
		//$('monthCalendarID').value = new_month;
		
		$('monthYearCalendarID').value = new_month + "-" + new_year;
		
		if(new_year == tabTodayDate[0] && new_month == tabTodayDate[1]){
			dateAct = new_year + "-" + new_month + "-" + tabTodayDate[2];
		}else{
			dateAct = new_year + "-" + new_month + "-01";
		}
		
		if(incr < 0){
			showCalendar(dateAct, "left");
		}else{
			showCalendar(dateAct, "right");
		}
	}
}
function existsInList(elt, list){
	for(i=0; i < list.options.length; i++){
		if(elt == list.options[i].value){
			return true;
		}
	}
	return false;
}

function showCalendar(date, direction){
	//On appelle la page qui génère le calendrier
	var req = new Request.HTML({  
		method: "get",  
		url: "include/cal_getCalendarMonth.php",  
		data: "date=" + date,
		onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) { 
		
			var conteneur = $('calendarID');
			var conteneurCoord = conteneur.getCoordinates();
			
			if(divCalendarAct != null){	//Un calendrier était affiché, on le retire
				var oldCadre = $('contentCalendar_' + divCalendarAct);
				
				if(direction == "left"){
					var fxCacheCalend = new Fx.Morph(oldCadre,{duration: 400, fps:60});
					fxCacheCalend.start({"width": "0", "left":conteneurCoord["width"]});
					fxCacheCalend.addEvents({
						'complete': function() {
							if($('contentCalendar_' + divCalendarAct) != oldCadre){
								oldCadre.innerHTML = "";
								oldCadre.style.display = "none";
							}
						}
					});
					
				}else if(direction == "right"){
					var fxCacheCalend = new Fx.Morph(oldCadre,{duration: 400, fps:60});
					fxCacheCalend.start({"width": "0"});
					fxCacheCalend.addEvents({
						'complete': function() {
							if($('contentCalendar_' + divCalendarAct) != oldCadre){
								oldCadre.innerHTML = "";
								oldCadre.style.display = "none";
							}
						}
					});
					
				}else{	//direction == "none"
					oldCadre.innerHTML = "";
					oldCadre.style.display = "none";
				}
			}
			
			if(divCalendarAct == null){
				divCalendarAct = 1;
			}else{
				divCalendarAct++;
				if(divCalendarAct > 6){
					divCalendarAct = 1;
				}
			}
			
			var leCadre = $('contentCalendar_' + divCalendarAct);
			leCadre.style.display = "none";
			
			//Affichage du nouveau calendrier
			leCadre.innerHTML = responseHTML;
			//alert(conteneurCoord["left"]);
			if(direction == "left"){
				leCadre.style.width = "0px";
				leCadre.style.height = conteneurCoord["height"] + "px";
				leCadre.style.top = "5" + "px";
				leCadre.style.left = "0" + "px";
				leCadre.style.display = "block";
				
				var fxAfficheCalend = new Fx.Morph(leCadre,{duration: 400, fps:60});
				fxAfficheCalend.start({"width": conteneurCoord["width"], "left":0});
				
			}else if(direction == "right"){
				leCadre.style.width = "0px";
				leCadre.style.height = conteneurCoord["height"] + "px";
				leCadre.style.top = "5" + "px";
				leCadre.style.left = conteneurCoord["width"] + "px";
				leCadre.style.display = "block";
				var fxAfficheCalend = new Fx.Morph(leCadre,{duration: 400, fps:60});
				fxAfficheCalend.start({"width": conteneurCoord["width"], "left":0});
				
			}else{ //direction == "none"
				leCadre.style.width = conteneurCoord["width"] + "px";
				leCadre.style.height = conteneurCoord["height"] + "px";
				leCadre.style.top = "5" + "px";
				leCadre.style.left = "0" + "px";
				leCadre.style.display = "";
			}
		}  
	}).send();
	showAgenda(date)
}

function calendarChangeDay(displayDate){
	dateAct = displayDate;
	
	//On met à jour le calendrier
	showCalendar(displayDate, "none");
}

function showAgenda(displayDate){
	//On appelle la page qui génère l'agenda
	var req = new Request.HTML({  
		method: "get",  
		url: "include/cal_getCalendarDay.php",  
		data: "date=" + displayDate + "&heureDeb=" + heureDeb + "&heureFin=" + heureFin + "&estConnecte=" + est_connecte,
		onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			
			//divAgendaAct = 1;
			//var leCadre = $('contentAgenda_' + divAgendaAct);
			var leCadre = $('agendaID');
			leCadre.style.display = "none";
			//leCadre.style.height = (((heureFin-heureDeb)+1)*30) + "px";
			//Affichage du nouveau calendrier
			leCadre.innerHTML = responseHTML;
			leCadre.style.display = "";
			

			if((est_connecte && id_credit_select == null) && tabCredits.length > 0){
				var cadreDisable = $('agendaIDDisable');
				if(cadreDisable){
					cadreDisable.style.display="";
					cadreDisable.style.width="200px";
					cadreDisable.style.height="200px";
					cadreDisable.style.backgroundColor="#24201f";
					cadreDisable.style.opacity = 0.8;
					cadreDisable.style.position="absolute";
					
					var tabCoord = leCadre.getCoordinates();
					cadreDisable.style.left = tabCoord["left"] + "px";
					cadreDisable.style.top = tabCoord["top"] + "px";
					cadreDisable.style.width = tabCoord["width"] + "px";
					cadreDisable.style.height = tabCoord["height"] + "px";
					
					writeHelp("Vous devez sélectionner un forfait à placer afin de pouvoir placer une réservation");
				}
			}
			if(scrollToTop){
				scrollToTop = false;
				window.location = "#top";
			}
		}
	}).send();
}

function writeHelp(txt){
	var agendaHelp = $('agendaHelp');
	if(agendaHelp){
		agendaHelp.innerHTML = txt;
	}
}

function selectCredit(idCredit){
	
	if(tabCredits[idCredit]["nb_heures"] > 0){
		if(id_credit_select != null){
			changeCreditBtnClass(id_credit_select, "off");
		}
		id_credit_select = idCredit;
		changeCreditBtnClass(id_credit_select, "on");
		
		//Un crédit a été sélectionné, on désactive le cache devant l'agenda
		var cadreDisable = $('agendaIDDisable');
		if(cadreDisable){
			var fxCacheDisable = new Fx.Morph(cadreDisable,{duration: 400, fps:60});
			fxCacheDisable.start({"opacity": "0"});
			fxCacheDisable.addEvents({
				'complete': function() {
					cadreDisable.style.display="none";
				}
			});	
		}
		
		var txtHelp = "Un forfait de " + tabCredits[idCredit]["aff_nb_heures"] + " ";
		if(parseInt(tabCredits[idCredit]["aff_nb_heures"]) <= 24){
				if(tabCredits[idCredit]["tarif"] == "plein"){
					txtHelp += "en tarif normal ";
				}else{	//reduit
					txtHelp += "en tarif réduit ";
				}
		}
		txtHelp += "a été sélectionné.<br/>Cliquez sur le créneau horaire sur lequel vous souhaitez placer votre réservation."
		writeHelp(txtHelp);
	}
}
function changeCreditBtnClass(idCredit, type){	//Type == on / off
	var btn = document.getElementById("choix_credit_" + idCredit);
	if(btn){
		btn.className = "credit_" + type;
	}
}

function placeResa(id_voiture, heureDeb, typeTarif, confirm){
	if(id_credit_select != null){
		if(changedBtn.length > 0){	//Plusieurs boutons sont sélectionnés
			//On récupère le premier element sélectionné
			while($('id_btn_resa_' + id_voiture + '_' + heureDeb) && in_array($('id_btn_resa_' + id_voiture + '_' + heureDeb), changedBtn,true)){
				heureDeb--;
			}
			heureDeb++;
		}

		if((tabCredits[id_credit_select]["jour_depart"] != "" && tabCredits[id_credit_select]["jour_depart"] != "tous") || (tabCredits[id_credit_select]["tarif"] == typeTarif)){
			//On appelle le php pour vérifier, et valider si ok, la réservation
			var req = new Request.HTML({  
				method: "get",  
				url: "include/cal_setResa.php",  
				data: "id_credit=" + id_credit_select + "&id_voiture=" + id_voiture + "&date=" + dateAct + "&heureDeb=" + heureDeb + "&confirm=" + confirm,
				onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					writeHelp(responseHTML);
				}
			}).send();
		}else{
			var lblTypeTarif = "tarif normal";
			if(tabCredits[id_credit_select]["tarif"] == "reduit"){
				lblTypeTarif = "tarif réduit";
			}
			//alert("Erreur : le forfait que vous avez sélectionné doit être placé sur un jour en " + lblTypeTarif + ".");
			displayPopup("Nouvelle réservation impossible", "Le forfait que vous avez sélectionné doit être placé sur un jour en " + lblTypeTarif + ".", 550, "dialog");
		}
	}else{
		//alert("Erreur : un forfait doit être sélectionné");
		displayPopup("Nouvelle réservation impossible", "Un forfait doit être sélectionné.", 550, "dialog");
	}
}
function placeResaConfirm(ret, id_voiture, heureDeb, typeTarif){
	if(ret){
		placeResa(id_voiture, heureDeb, typeTarif, 1);
	}
}
function supprResa(id_voiture, heureDeb, creneauResa, confirm, dateAutre){
	//On appelle le php pour vérifier, et supprimer si ok, la réservation
	//if(window.confirm("Êtes-vous sûr de vouloir supprimer votre réservation " + creneauResa)){
		if(dateAutre != undefined && dateAutre != "undefined" && dateAutre != "" && dateAutre != null){
			dateAct = dateAutre;
		}else{
			dateAutre = "";
		}
		
		var req = new Request.HTML({  
			method: "get",  
			url: "include/cal_delResa.php",  
			data: "id_voiture=" + id_voiture + "&date=" + dateAct + "&heureDeb=" + heureDeb + "&confirm=" + confirm + "&creneauResa=" + creneauResa + "&dateAutre=" + dateAutre,
			onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				writeHelp(responseHTML);

			}
		}).send();
	//}
}
function supprResaConfirm(ret, id_voiture, heureDeb, dateAutre){
	if(ret){
		supprResa(id_voiture, heureDeb, "", 1, dateAutre);
	}
}
var changedBtn = new Array();


function rollOverBtnResa(idVoiture, creneauHeureDeb){
	rollOutBtnResa();	//On désactive les anciens surlignages

	if(id_credit_select != null){
		var duree = tabCredits[id_credit_select]["nb_heures"];
		
		var tabSelec = new Array();
		if(duree < 24){	//On surligne la plage horaire dispo, si possible
			var creneauHeureCheck = creneauHeureDeb;
			while($('id_btn_resa_' + idVoiture + '_' + creneauHeureCheck) && (creneauHeureCheck - creneauHeureDeb) < duree && creneauHeureCheck <= tabFinDispoVehicule[idVoiture]){
				tabSelec[tabSelec.length] = creneauHeureCheck;
				creneauHeureCheck++;
			}
			
			//alert("length tab = " + tabSelec.length + "\nDuree = " + duree );
			//Si on a pas pu trouver tous les creneaux de libre en cherchant vers le bas
			if((creneauHeureCheck - creneauHeureDeb) < duree){
				var new_duree = duree - (creneauHeureCheck - creneauHeureDeb);
				creneauHeureCheck = creneauHeureDeb - 1;
				//On cherche en montant
				while($('id_btn_resa_' + idVoiture + '_' + creneauHeureCheck) && (creneauHeureDeb - creneauHeureCheck) <= new_duree && creneauHeureCheck >= tabDebutDispoVehicule[idVoiture]){
					tabSelec[tabSelec.length] = creneauHeureCheck;
					creneauHeureCheck--;
				}
				
				if((creneauHeureDeb - creneauHeureCheck) <= new_duree){	//Si on a toujours pas trouvé tous les emplacements
					tabSelec = new Array();
				}
			}
			
		}else if(duree == 24){	//On surligne la journée entière, si possible
			creneauHeureCheck = tabDebutDispoVehicule[idVoiture];
			while($('id_btn_resa_' + idVoiture + '_' + creneauHeureCheck) && creneauHeureCheck <= tabFinDispoVehicule[idVoiture]){
				tabSelec[tabSelec.length] = creneauHeureCheck;
				creneauHeureCheck++;
			}
			
			if(creneauHeureCheck < tabFinDispoVehicule[idVoiture]){
				tabSelec = new Array();
			}
		}else{	//duree > 24	//On surligne la journée en cours, si possible, et la validation sur les autres jours se fera en php
		
		}
		
		for(i=0; i < tabSelec.length; i++){
			var btn = $('id_btn_resa_' + idVoiture + '_' + tabSelec[i]);
			if(btn){
				changedBtn[changedBtn.length] = btn;
				btn.className = btn.className + "_hover";
			}
		}
		
		
	}else{
		//alert("Erreur : un forfait doit être sélectionné");
		//displayPopup("Nouvelle réservation impossible", "Un forfait doit être sélectionné.", 550, "dialog");
	}
}
function rollOutBtnResa(){
	for(i=0; i < changedBtn.length; i++){
		changedBtn[i].className = changedBtn[i].className.replace("_hover", ""); 
	}
	changedBtn = new Array();
}

var popupDisplayed = false;
function displayPopup(txtTitre, txtContenu, width, type, callBackFunction, param1, param2, param3, param4){
	if(!popupDisplayed){
		popupDisplayed = true;
		//On prépare l'affichage de la popup
		var fond = $('id_fond_popud_resa');
		var popup = $('id_popup_resa');
		var contenu = $('id_contenu_popup');
		var conteneur = $('id_conteneur');
		
		if(fond && popup && contenu && conteneur){
			//On dimensionne la popup au plus petit
			conteneur.style.display = "";
			
			
			if(callBackFunction != "" && callBackFunction != undefined && callBackFunction != null){
				var evalTrue = "eval('" + callBackFunction + "(true";
				var evalFalse = "eval('" + callBackFunction + "(false";
				
				if(param1 != "" && param1 != undefined && param1 != null){
					evalTrue += ", \\\'" + param1 + "\\\'";
					evalFalse += ", \\\'" + param1 + "\\\'";
				}	
				if(param2 != "" && param2 != undefined && param2 != null){
					evalTrue += ", \\\'" + param2 + "\\\'";
					evalFalse += ", \\\'" + param2 + "\\\'";
				}	
				if(param3 != "" && param3 != undefined && param3 != null){
					evalTrue += ", \\\'" + param3 + "\\\'";
					evalFalse += ", \\\'" + param3 + "\\\'";
				}	
				if(param4 != "" && param4 != undefined && param4 != null){
					evalTrue += ", \\\'" + param4 + "\\\'";
					evalFalse += ", \\\'" + param4 + "\\\'";
				}
				
				evalTrue += ");');";
				evalFalse += ");');";
			}
			//alert(evalTrue);
			
			var txtBtn = "";
			if(type !=  "confirm"){	//Boite de dialogue classique
				txtBtn = "<input type='image' src='images/btnOK.png' onclick=\"closePopup();" + evalTrue + "\">";
			}else{
				txtBtn = "<input type='image' src='images/btnOui.png' onclick=\"closePopup();" + evalTrue + "\" style='position:relative;left:-20px'>";
				txtBtn += "<input type='image' src='images/btnNon.png' onclick=\"closePopup();" + evalFalse + "\" style='position:relative;left:20px'>";
			}
			
			contenu.innerHTML = "<div class=\"txtTitre\">" + txtTitre + "</div><br/><div class=\"txtContenu\">" + txtContenu + "</div><br/><br/><center>" + txtBtn + "</center>";
			
			popup.style.width = "1000px";
			popup.style.height = "1000px";
			
			//On récupère les dimensions finales
			var newPopupSize = new Array();
			var contenuSize = contenu.getSize();
			contenu.style.display = "none";
			conteneur.style.display = "none";
			newPopupSize["width"] = width;
			newPopupSize["height"] = contenuSize.y + 19 + 19 ;
			
			popup.style.width = "50px";
			popup.style.height = "50px";
			
			//On la place au milieu de l'écran
			var screenCenter = window.center();
			var screenSize = window.sizeScroll();
			
			//alert("Hauteur de l'écran = " + screenSize["height"]);
			
			popup.style.left = (screenCenter["x"]-155) + "px";
			popup.style.top = (screenCenter["y"]-25) + "px";
			conteneur.style.opacity = 0;
			
			conteneur.style.display = "block";
			
			var fxDemarrePopup = new Fx.Tween(conteneur,{duration: 200, fps:60});
			fxDemarrePopup.start("opacity", "0", "1");
			fxDemarrePopup.addEvents({
				'complete': function() {
									
					newPopupSize["x"] = parseInt(popup.style.left) - ((width-19-19)/2);
					newPopupSize["y"] = parseInt(popup.style.top) - (contenuSize.y/2);

					var fxElargPopup = new Fx.Morph(popup,{duration: 300, fps:60});
					fxElargPopup.start({"width": newPopupSize["width"], "left":newPopupSize["x"]});
					fxElargPopup.addEvents({
						'complete': function() {
							var fxHauteurPopup = new Fx.Morph(popup,{duration: 300, fps:60});
							fxHauteurPopup.start({"height": newPopupSize["height"], "top":newPopupSize["y"]});
							fxHauteurPopup.addEvents({
								'complete': function() {
									//On affiche le texte
									contenu.style.display = "";
									contenu.style.opacity = 0;
									contenu.style.display = "block";
									var fxAppariContenu = new Fx.Tween(contenu,{duration: 500, fps:60});
									fxAppariContenu.start("opacity", "0", "1");
									fxAppariContenu.addEvents({
										'complete': function() {
										
										}
									});
								}
							});
						}
					});
					//On affiche le fond noir
					fond.style.opacity = 0;
					fond.style.display = "block";
					fond.style.top = "0px";
					fond.style.left = "0px";
					fond.style.width = "100%";
					fond.style.height = screenSize["height"] + "px";
					var fxAppariContenu = new Fx.Tween(fond,{duration: 500, fps:60});
					fxAppariContenu.start("opacity", "0", "0.7");
					fxAppariContenu.addEvents({
						'complete': function() {
						
						}
					});
				}
			});
		}
	}else{	//Une popup est déjà affichée, on attend
		//var command = "displayPopup('" + txtTitre + "','" + txtContenu + "'," + width + ",'" + type + "','" + callBackFunction + "','" + param1 + "','" + param2 + "','" + param3 + "','" + param4 + "')";
		var command = "displayPopup('" + txtTitre.replace(/'/g, "\\'") + "','" + txtContenu.replace(/'/g, "\\'") + "'," + width + ",'" + type + "','" + callBackFunction + "','" + param1 + "','" + param2 + "','" + param3 + "','" + param4 + "')";
		window.setTimeout(command, 250);
	}
}

function closePopup(){
	var fond = $('id_fond_popud_resa');
	var popup = $('id_popup_resa');
	var conteneur = $('id_conteneur');
	
	if(fond && popup && conteneur){
		var fxDisparPopup = new Fx.Tween(conteneur,{duration: 500, fps:60});
		fxDisparPopup.start("opacity", "1", "0");
		fxDisparPopup.addEvents({
			'complete': function() {
				conteneur.style.display = "none";
			}
		});
		
		var fxDisparFond = new Fx.Tween(fond,{duration: 500, fps:60});
		fxDisparFond.start("opacity", "0.7", "0");
		fxDisparFond.addEvents({
			'complete': function() {
				fond.style.display = "none";
				popupDisplayed = false
			}
		});
	}
}
window.size = function()
{
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth)
	{
		//strict mode
		if(!(document.documentElement.clientWidth == 0))
		{
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else
		{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else
	{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	return {width:w,height:h};
}

window.center = function()
{
	var hWnd = (arguments[0] != null) ? arguments[0] : {width:0,height:0};

	var _x = 0;
	var _y = 0;
	var offsetX = 0;
	var offsetY = 0;

	//IE
	if(!window.pageYOffset)
	{
		//strict mode
		if(!(document.documentElement.scrollTop == 0))
		{
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		}
		//quirks mode
		else
		{
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	}
	//w3c
	else
	{
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}

	_x = ((this.size().width-hWnd.width)/2)+offsetX;
	_y = ((this.size().height-hWnd.height)/2)+offsetY;

	return{x:_x,y:_y};
}

window.sizeScroll = function()
{
	var _width = 0;
	var _height = 0;
	

	//IE
	if(!window.pageYOffset)
	{
		//strict mode
		if(!(document.documentElement.clientHeight == 0))
		{
			_width = document.documentElement.scrollTop;
			_height = document.documentElement.scrollLeft;
		}
		//quirks mode
		else
		{
			_width = document.body.scrollTop;
			_height = document.body.scrollLeft;
		}
	}
	//w3c
	else
	{
		_width = window.pageXOffset;
		_height = window.pageYOffset;
	}
	
	_width = this.size().width + _width;
	_height = this.size().width + _height;

	return{width:_width,height:_height};
}

function in_array (needle, haystack, argStrict) {
    var key = '', strict = !!argStrict;
 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
 
    return false;
}
