// JavaScript Document
var sortAscending = null;
var sortColumn = null;
var page = null;
var pageSize = null;
var currentColumn = null;
var allowedSortFields = "Rating,Modify,Owner,Budget,Room";
var iStyleInterval = "";
var iStyleHideInterval = "";
var iGalleryInterval = "";
var iGalleryHideInterval = "";
var iGalleryID = null;
var bLoaded = false;
//
function startStyleTimer() {
	clearStyleTimer();
	iStyleInterval = window.setInterval(showStyleGallery,800);
}
//
function clearStyleTimer() {
	if (iStyleInterval != "") {
		window.clearInterval(iStyleInterval);
		iStyleInterval = "";
	}
}
//
function startStyleHideTimer() {
	clearStyleHideTimer();
	iStyleHideInterval = window.setInterval("hideStyleGallery()",1000);
}
//
function clearStyleHideTimer() {
	if (iStyleHideInterval != "") {
		window.clearInterval(iStyleHideInterval);
		iStyleHideInterval = "";
	}
}
//
//
function startGalleryTimer(id) {
	clearGalleryTimer();
	iGalleryID = id;
	iGalleryInterval = window.setInterval(showGallery,800);
}
//
function clearGalleryTimer() {
	if (iGalleryInterval != "") {
		window.clearInterval(iGalleryInterval);
		iGalleryInterval = "";
	}
}
//
function startGalleryHideTimer() {
	clearGalleryHideTimer();
	iGalleryHideInterval = window.setInterval("hideGallery()",1000);
}
//
function clearGalleryHideTimer() {
	if (iGalleryHideInterval != "") {
		window.clearInterval(iGalleryHideInterval);
		iGalleryHideInterval = "";
	}
}
//
function rollOffThumb() {
	clearGalleryTimer();
	startGalleryHideTimer();
}
//
function showGallery() {
	if (iGalleryID != null) {
		try {
			clearGalleryTimer();
			clearGalleryHideTimer();
			hideGallery();
			// position it
			var el = $("thumb"+String(iGalleryID));
			var o = getAbsolutePosition(el);
			var oS = getScreenSize();
			var oOff = getScrollXY();
			var iMaxY = oS.height+oOff.offY;
			var iMinY = oOff.offY;
			var iTargetY = o.y-60;
			var iMaxX = oS.width;
			var iMinX = 0;
			var iTargetY = o.y-60;
			var iTargetX = o.x+60;
			// Check y value is within window
			if (iTargetY > iMinY) {
				if (iTargetY > iMaxY - 282) {
					iTargetY = iMaxY - 282;
				}
			} else {
				iTargetY = iMinY+3;
			}
			// Check x value is within window
			if (iTargetX > iMinX) {
				if (iTargetX  > iMaxX - 390) {
					iTargetX = iMaxX - 390;
				}
			} else {
				iTargetX = iMinX+3;
			}
			$("cntOverlay").style.left = (iTargetX)+"px";
			$("cntOverlay").style.top = iTargetY+"px";
			// populate it
			var data="id="+escape(iGalleryID);
			data=data+"&r="+Math.random();
			$("cntOverlayBd").innerHTML = "<img src='images/ajax-loader.gif' alt='Loading' class='imgLoader'/>";
			var myAjax = new Ajax.Request('ajax-aspx/getProjectGallery.aspx',{asynchronous:true, method:'get',parameters:data, onSuccess:showGallerySC, onFailure:fnErr});
			iGalleryID = null;
			// show it
			$("cntOverlay").style.display = "block";
		} catch(e) {
			alert(e);
		}
	}
}
//
function fnErr(t) {
	errFunc(t);
}
//
function showGallerySC(r) {
	$('cntOverlayBd').innerHTML = r.responseText;
}
//
function hideGallery() {
	clearGalleryHideTimer();
	$("cntOverlay").style.display = "none";
	
}
//
function showStyleGallery() {
	clearStyleTimer();
	hideStyleGallery();
	$("cntOverlayStyles").style.display = "block";
}
//
function hideStyleGallery() {
	clearStyleHideTimer();
	$("cntOverlayStyles").style.display = "none";
}
//
function setColorFilterAjax(id) {
	filter();
}
//
function getDataString() {
	var fldView = $F("view");
	var typeKitchen = $("fldKitchen").checked;
	var typeBath = $("fldBath").checked;
	var typeWashroom = $("fldWashroom").checked;
	var involveDIY = $("fldDIY").checked;
	var involveContractor = $("fldContractor").checked;
	var involveFriends = $("fldFriends").checked;
	var involveCombo = $("fldCombination").checked;
	var styleInfluence = $F("fldStyle");
	var roomColor = $F("myColorPicker_fld");
	var budget = $F("fldRoomBudget");
	var roomStatus = $F("fldRoomStatus");
	var listingFilter = 0;
	var sortAscending = $F("sortAscending");
	var sortColumn = $F("sortColumn");
	var page = $F("page");
	var pageSize = $F("pageSize");
	if ($("fldFilterPrevWinners").checked) { listingFilter = 1; }
	else if ($("fldFilterNew").checked) { listingFilter = 2; }
	else if ($("fldFilterSaved").checked) { listingFilter = 3; }
	//
	var data="typeKitchen="+escape(typeKitchen);
	data=data+"&typeBath="+escape(typeBath);
	data=data+"&typeWashroom="+escape(typeWashroom);
	data=data+"&involveDIY="+escape(involveDIY);
	data=data+"&involveContractor="+escape(involveContractor);
	data=data+"&involveFriends="+escape(involveFriends);
	data=data+"&involveCombo="+escape(involveCombo);
	data=data+"&styleInfluence="+escape(styleInfluence);
	data=data+"&roomColor="+escape(roomColor);
	data=data+"&budget="+escape(budget);
	data=data+"&roomStatus="+escape(roomStatus);
	data=data+"&listingFilter="+escape(listingFilter);
	data=data+"&sortColumn="+escape(sortColumn);
	data=data+"&sortAscending="+escape(sortAscending);
	data=data+"&page="+escape(page);
	data=data+"&pageSize="+escape(pageSize);
	data=data+"&view="+escape(fldView);
	data=data+"&r="+Math.random();
	//
	/*var dataAlert="typeKitchen="+typeKitchen+"\n";
	dataAlert=dataAlert+"&typeBath="+typeBath+"\n";
	dataAlert=dataAlert+"&typeWashroom="+typeWashroom+"\n";
	dataAlert=dataAlert+"&involveDIY="+involveDIY+"\n";
	dataAlert=dataAlert+"&involveContractor="+involveContractor+"\n";
	dataAlert=dataAlert+"&involveFriends="+involveFriends+"\n";
	dataAlert=dataAlert+"&involveCombo="+involveCombo+"\n";
	dataAlert=dataAlert+"&styleInfluence="+styleInfluence+"\n";
	dataAlert=dataAlert+"&roomColor="+roomColor+"\n";
	dataAlert=dataAlert+"&budget="+budget+"\n";
	dataAlert=dataAlert+"&roomStatus="+roomStatus+"\n";
	dataAlert=dataAlert+"&listingFilter="+listingFilter+"\n";
	dataAlert=dataAlert+"&sortColumn="+sortColumn+"\n";
	dataAlert=dataAlert+"&sortAscending="+sortAscending+"\n";
	dataAlert=dataAlert+"&page="+page+"\n";
	dataAlert=dataAlert+"&pageSize="+pageSize+"\n";
	dataAlert=dataAlert+"&view="+fldView+"\n";
	alert(dataAlert);*/
	//
	return data;
}
//
function resetValues(s) {
	var arrPairs = s.split("&");
	for (var i = 0; i < arrPairs.length; i++) {
		arrPairs[i] = arrPairs[i].split("=");
	}
	//
	setCheckBox("fldKitchen",getValue(arrPairs,"typeKitchen","true"));
	setCheckBox("fldBath",getValue(arrPairs,"typeBath","true"));
	setCheckBox("fldWashroom",getValue(arrPairs,"typeWashroom","true"));
	setCheckBox("fldDIY",getValue(arrPairs,"involveDIY","true"));
	setCheckBox("fldContractor",getValue(arrPairs,"involveContractor","true"));
	setCheckBox("fldFriends",getValue(arrPairs,"involveFriends","true"));
	setCheckBox("fldCombination",getValue(arrPairs,"involveCombo","true"));
	//
	setDropDown("fldStyle",getValue(arrPairs,"styleInfluence","-1"));
	setDropDown("fldRoomBudget",getValue(arrPairs,"budget","-1"));
	setDropDown("fldRoomStatus",getValue(arrPairs,"roomStatus","-1"));
	//
	$("sortAscending").value = getValue(arrPairs,"sortAscending","true");
	$("sortColumn").value = getValue(arrPairs,"sortColumn","Owner");
	$("page").value = getValue(arrPairs,"page","1");
	$("pageSize").value = getValue(arrPairs,"pageSize","10");
	$("view").value = getValue(arrPairs,"view","list");
	//
	var listingFilter = getValue(arrPairs,"listingFilter","0");
	$("fldFilterAll").checked = false;
	$("fldFilterPrevWinners").checked = false;
	$("fldFilterNew").checked = false;
	$("fldFilterSaved").checked = false;
	if (listingFilter == "1") {
		$("fldFilterPrevWinners").checked = true;
	} else if (listingFilter == "2") {
		$("fldFilterNew").checked = true;
	} else if (listingFilter == "3") {
		$("fldFilterSaved").checked = true;
	} else {
		$("fldFilterAll").checked = true;
	}
	var iColor = getValue(arrPairs,"roomColor","0");
	if (!isNaN(iColor)) {
		iColor = parseInt(iColor);	
	} else {
		iColor = 0;	
	}
	//colPicker.changeColor(iColor);
}
//
function filter() {
	$("page").value = 1;
	SWFAddress.setValue(getDataString());
}
//
function makeAjaxCall() {
	//$("cntListingsContent").style.display = "none";
	//$("cntSending").style.display = "block";
	var data = getDataString();
	//alert("SENDING AJAX CALL");
	var url = "";
	if ($F("view")=="thumb") {
		url = "ajax-aspx/getProjectThumb.aspx";
		$("cntThumbImg").className = "on";
		$("cntListImg").className = "off";
	} else {
		url = "ajax-aspx/getProjectList.aspx";
		$("cntThumbImg").className = "off";
		$("cntListImg").className = "on";
	}
	var myAjax = new Ajax.Request(url,{asynchronous:true, method:'post',parameters:data, onSuccess:filterSC, onFailure:filterErr});
}
//
function filterSC(t) {
	if (t.responseText.length > 0) {
		//$("cntSending").style.display = "none";
		$("cntListingsContent").innerHTML = t.responseText;
		//$("cntListingsContent").style.display = "block";
	}
	//showListings();
	setSortField();
}
//
function listView() {
	$("pageSize").value = "10";
	$("view").value = "list";
	filter();
}
//
function thumbView() {
	$("pageSize").value = "12";
	$("view").value = "thumb";
	filter();
}
//
function setSortField() {
	// reset current
	try {
		$("cnt"+currentColumn+"Title").className="off";
		$("cnt"+currentColumn+"TitleFilter").className="off";
	} catch (e1) {
		//	
	}
	// set new
	try {
		//
		var sortAscending = $F("sortAscending");
		var sortColumn = $F("sortColumn");
		$("cnt"+sortColumn+"Title").className="on";
		if (sortAscending == "false") { $("cnt"+sortColumn+"TitleFilter").className="ascending"; } else { $("cnt"+sortColumn+"TitleFilter").className="descending"; };
		currentColumn = sortColumn;
	} catch(e) {
		//alert(e);	
	}
}
//
function changeSortField(sType) {
	// check if value is acceptable
	if (allowedSortFields.indexOf(sType) >= 0) {
		// if current sort field, switch ascending/descending
		if (sType == currentColumn) {
			if (sortAscending == "false") { sortAscending = "true" } else { sortAscending = "false" };
		}
		// update hidden fields
		$("sortAscending").value = sortAscending;
		$("sortColumn").value = sType;
		filter();
	}
}
//
function showPage(sPage) { 
	if (!isNaN(sPage)) {
		var iPage = parseInt(sPage);
		if (iPage > 0) { $("page").value = iPage; }
		SWFAddress.setValue(getDataString());
	}
}
//
function filterErr(t) {
	//showListings();
	errFunc(t);
}
//
function hideListings() {
	$("cntListingsContent").style.display = 'none';
	$("cntSending").style.display = 'block';
}
//
function showListings() {
	$("cntListingsContent").style.display = 'block';
	$("cntSending").style.display = 'none';
}
//  
  /**
 * Retrieve the absolute coordinates of an element.
 *
 * @param element
 *   A DOM element.
 * @return
 *   A hash containing keys 'x' and 'y'.
 */
function getAbsolutePosition(element) {
	var r = { x: element.offsetLeft, y: element.offsetTop };
	if (element.offsetParent) {
		var tmp = getAbsolutePosition(element.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};

function getScreenSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return { width:myWidth, height:myHeight };
}

function getScrollXY() {
  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 { offX:scrOfX, offY:scrOfY };
}
//
function getValue(arr,sName,oDefault) {
	for (var i = 0; i < arr.length; i++) {
		if (arr[i][0] == sName) {
			return arr[i][1];
		}
	}
	return oDefault;
}
//
function setDropDown(sFld, sVal) {
	try {
		for (var i = 0; i < $(sFld).options.length; i++) {
			$(sFld).options[i].selected = ($(sFld).options[i].value == sVal);
		}
	} catch(e) {
		//
	}
}
//
function setCheckBox(sFld, sVal) {
	try {
		if (sVal == "true") { $(sFld).checked = true; } else { $(sFld).checked = false; }
	} catch(e) {
		//	
	}
}
//
function handleChange(event) {
	var title = event.path;
	title = title.substr(1);
	resetValues(title);
	makeAjaxCall();
}
//
SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);