var cur_ftab = 'ft1';
var carousels = new Object();
var urls = new Object();
carousels.ft1_carousel = null;
carousels.ft2_carousel = null;
carousels.ft3_carousel = null;
urls.ft1_carousel = '/listing.htm?getFlashCards=1';
urls.ft2_carousel = '/listing.htm?getPopularCards=1';
urls.ft3_carousel = '/listing.htm?getLatestCards=1';

function selectFTab(ftab){
	$(cur_ftab).removeClassName('selected');
	$(ftab).addClassName('selected');
	$(cur_ftab + '_carousel').setStyle({display:'none'});
	$(ftab + '_carousel').setStyle({display:'block'});
	cur_ftab = ftab;
	initCarousel(ftab);
	
}
var cur_ctab = 'ct1';
function selectCTab(ctab){
	$(cur_ctab).removeClassName('selected');
	$(ctab).addClassName('selected');
	$(cur_ctab + '_panel').setStyle({display:'none'});
	$(ctab + '_panel').setStyle({display:'block'});
	cur_ctab = ctab;
	
}

function initCarousel(carouselid){
	if(carousels[carouselid] == null){
		carousels[carouselid] = new UI.Ajax.Carousel(carouselid, {direction: "horizontal", url:urls[carouselid], elementSize:104});
	}
}
function carousel_pre(carouselid){
	var carousel = carousels[carouselid];
	var scrollInc = Math.floor(carousel.nbVisible);
	carousel.scroll(1 *  scrollInc * carousel.elementSize);
}
function carousel_next(carouselid){
	var carousel = carousels[carouselid];
	var scrollInc = Math.floor(carousel.nbVisible);
	carousel.scroll(-1 *  scrollInc * carousel.elementSize);
}

function previewCard(cardid){
	var url = "/card.htm" ;
	var params = "viewCard=1&cid=" + cardid;
	new AjaxUpdater('dlgBox', null, url, 'post', params, openDlg, null);
}
function addToFavorite(cardid){
	CardBean.addToFavorite(cardid,  function(status){
		resetBoxes();
		var msg = "";
		if(status)
			msg = "The card is added to your favorite folder";
		else
			msg = "Fail to add the card to your favorite folder";
		$('msgBox').update(msg);
		$('msgBox').setStyle({display:'block'});
			
	});

}
function showRates(){
	resetBoxes();
	$('rateBox').setStyle({display:'block'});
}
function rateCard(cardid, point){
	CardBean.rateCard(cardid, point, function(status){
		resetBoxes();
	});
	
}
function resetBoxes(){
	   $$("div.toolBox").each( function(el) {
			el.setStyle({display:'none'});
		});
}
function openDlg(){
	jMoveToCenter('waitingBox');
	$('waitingBox').setStyle({display:'block'});
	setTimeout(_openDlg, 1000);
}
function _openDlg(){
	$('waitingBox').setStyle({display:'none'});
	jMoveToCenter('dlgBox');
	$('dlgBox').setStyle({display:'block'});
}
function closeDlg(){
	$('dlgBox').setStyle({display:'none'});	
}
function showRate(point){
	for(var i=1; i<=point; i++){
		$('star' + i).src = '/Images/orange_star.gif';
	}
}
function hideRate(){
	for(var i=1; i<=5; i++){
		$('star' + i).src = '/Images/black_star.gif';
	}
}

function removeFavorites(clsname){
	var arrids = getChecksByClassName(clsname);
	for(var i=0; i<arrids.length; i++){
	}
	CardBean.removeFavorites(arrids, function(status){
		var theform = document.forms['listingform'];
		getListingPage(theform);
	});

	
}
function loadFavorites(carousel_id){
	if($(carousel_id)){
		carousels[carousel_id] = new UI.Ajax.Carousel(carousel_id, {previousButton:false,nextButton:false,direction: "vertical", url:"/listing.htm?getFavoriteCards=1", elementSize:70});
	}
}
function loadAllFavorites(container_id){
	var params = new Object();
	var url = "/listing.htm";
	params.getAllFavorites=1;
	new AjaxUpdater(container_id, null, url, 'post', params, null, null);
	
}
function loadEvents(carousel_id){
	if($(carousel_id)){
		carousels[carousel_id] = new UI.Ajax.Carousel(carousel_id, {previousButton:false,nextButton:false,direction: "vertical",url:"/listing.htm?getEvents=1", elementSize:50});
	}
}
function loadCalendar(container_id){
	if($(container_id)){
		var url="/listing.htm";
		var params = new Object();
		params.getCalendar=1;
		if(arguments.length == 2)
			params.m = arguments[1];
		new AjaxUpdater(container_id, null, url, 'post', params, null, null);
	}
}
function loadReminders(container_id){
	if($(container_id)){
		var url="/myaccount.htm";
		var params = new Object();
		params.ajaxShowReminders=1;
		if(arguments.length == 2)
			params.m = arguments[1];
		new AjaxUpdater(container_id, null, url, 'post', params, null, null);
	}
}

/*****Util functions ***/
function jMoveToCenter(el){
	var element = $(el);
	var el_w = element.getWidth();
	var el_h = element.getHeight();
	var viewPort = document.viewport.getDimensions();
	var offsets = document.viewport.getScrollOffsets();
	var centerX = viewPort.width / 2 + offsets.left - el_w / 2;
	var centerY = viewPort.height / 2 + offsets.top - el_h / 2;
	
	element.setStyle( { position: 'absolute', top: Math.floor(centerY) + 'px', left: Math.floor(centerX) + 'px' } );
	
	return element;	
}	

var AjaxUpdater = function(successContainer, failContainer, url, method, parameters, successCallback, failCallback) {
   	if (url == null) {
  		throw 'URL has to be provided';
  	}
  	if (method == null) {
    	method = 'get';
  	} else if (method != 'get' && method != 'post') {
     	throw 'Method should be get or post'; 
   	}
   	var ajaxOptions = new Object();
   	ajaxOptions.method = method;
   	ajaxOptions.parameters = parameters;
   	ajaxOptions.evalScripts = true; 	
   	ajaxOptions.contentType='application/x-www-form-urlencoded; charset=utf-8';
   	
   	ajaxOptions.onCreate = function(){
   		if($(failContainer))
   			$(failContainer).setStyle({display:'none'});
   	
   	};
   	ajaxOptions.onFailure = function(t){
   		if(failContainer){
   			$(failContainer).setStyle({display:'block'});
   			$(failContainer).innerHTML = t.responseText;
   		}
   		if(failCallback)
   			eval(failCalback);	
   	};
   	
   	if(successCallback)
   		ajaxOptions.onSuccess = successCallback;
   	var ajaxContainers  = new Object();
   	if(successContainer){
   		ajaxContainers.success = successContainer;
    	var myAjaxUpdater = new Ajax.Updater(
    		successContainer, 
    		url, 
    		ajaxOptions
			);
	}
	else{
		var myAjaxRequest = new Ajax.Request(url, ajaxOptions);
	}
}
/**************Paging ********************************/
function gotoPage(pageindex, formname){
	var theform = document.forms[formname];
	theform.s.value = pageindex * theform.n.value;
	getListingPage(theform);
}

function getNextPage(formname){
	var theform = document.forms[formname];
	theform.s.value = parseInt(theform.s.value) + parseInt(theform.n.value);
	getListingPage(theform);
}
function getPreviousPage(formname){
	var theform = document.forms[formname];
	theform.s.value = parseInt(theform.s.value) - parseInt(theform.n.value);
	getListingPage(theform);

}
function getListingPage(theform){
	var url = theform.action;
	var params = Form.serialize(theform);
	var containerid = theform.containerid.value;
	new AjaxUpdater(containerid, null, url, 'post', params, null, null);

}
function checkAllByClassName(classname, checked) {
	var tag = "input." + classname;
	$$(tag).each( function(el) {
		if (el.type == 'checkbox') {
			el.checked = checked;
		}
	});
}
function getChecksByClassName(classname) {
	var tag = "input." + classname;
	var arrayids = new Array();
	$$(tag).each( function(el) {
		if (el.type == 'checkbox' && el.checked == true && el.value != "") {
			arrayids.push(el.value);
		}
	});
	return arrayids;

}
function getCaptcha(elementid){
	var time = new Date().valueOf();
	$(elementid).src = '/Captcha.jpg?t=' + time;
}
