var MyMenu = Class.create({
	initialize : function(menu_element) {
		this.menu_element = $(menu_element); //make sure you have an extended element
		this.state = 0; // the state of the menu
		this.mouseover_callback =  this.mouseOver.bindAsEventListener(this); //callbacks
		this.mouseout_callback = this.mouseOut.bindAsEventListener(this);
		this.menu_element.observe('mouseover', this.mouseover_callback);
		this.menu_element.observe('mouseout', this.mouseout_callback);
		this.queue = Effect.Queues.get(this.menu_element.identify() + '-scope'); //create a queue with a unique name
	},
	mouseOver : function() {
		this.queue.each(function(ev) { ev.cancel(); });
		opacity = $(this.menu_element).getOpacity();
		new Effect.Opacity(this.menu_element, {duration: 0.4,from:opacity, to:0,
			queue : {scope : this.menu_element.identify() + '-scope',  
			limit : 1},
			afterFinish : function() { // using an effect callback to  make sure state is changes _after_ the last frame was renderd
				this.state = 1;
			}.bind(this)
		});
	},
	mouseOut : function() {
		this.queue.each(function(ev) { ev.cancel(); });
		opacity = $(this.menu_element).getOpacity();
		new Effect.Opacity(this.menu_element, {duration: 0.4,from:opacity, to:1,
			queue : {scope :  this.menu_element.identify() + '-scope',  
			limit : 1},
			afterFinish : function() {
				this.state = 0;
			}.bind(this)
		});
	}
});
function initPage(page){
	switch(page){
		case "indexlogin":
			addClassOnMouseOver("indexCoursesProgressTableBodyRow","fadeTableOver");
			removeClassOnMouseOut("indexCoursesProgressTableBodyRow","fadeTableOver");
			break;
		case "mytraining":
			addClassOnMouseOver("fadeTableRow","fadeTableOver");
			removeClassOnMouseOut("fadeTableRow","fadeTableOver");
			break;
		case "regstep1":
			
			break;
		case "regstep2":
			registerChangeOver();
			registerClick();
			break;
		case "upgrade":
			registerChangeOver();
			
			break;
		case "home":
		case "course":
			break;
	}
	widgetImg = $$(".widget_tab_image");
	if(widgetImg.length>1){
		widgetImg.invoke('observe', 'click', widgetChange);
	}
	effectStatus = false;
}
function widgetChange(){
	widgetImg = $$(".widget_tab_image").each(function(ele){ele.removeClassName("widget_tab_image_sel")});
	parent = this.parentNode;
	$(parent).select(".widget_tab_image")[1].addClassName("widget_tab_image_sel");
	switch(parent.parentNode.className){
		case "featured_div":
			actionUrl = "featured";
			break;
		case "most_div":
			actionUrl = "viewed";
			break;
		default:
			return;
	}
	if(actionUrl == widgettype)
		return;
	new Ajax.Request(homeUrl+"loadcourseboxes/"+actionUrl, {
		onComplete: function(resp) {
			var txt = eval('('+ resp.responseText +')');
			widgettype = actionUrl;
			$("coursesboxes").innerHTML = txt['content'];
			numOfPages = txt['numOfPages'];
			$('coursesboxes').setStyle({ width:'auto',left:0});
			topPage = 1;
			page = 1;
		}
	});
}
function addClassOnMouseOver(classOver,addClassOver){
	$$("div."+classOver).invoke('observe', 'mouseover', function(ele){this.addClassName(addClassOver)});
}
function removeClassOnMouseOut(classOver,addClassOver){
	$$("div."+classOver).invoke('observe', 'mouseout', function(ele){this.removeClassName(addClassOver)});
}

function registerChangeOver(){
	$$("div.registerTableMembershipExpert").invoke('observe', 'mouseover', function(ele){$$("div.registerTableMembershipExpert").each(function(element){element.addClassName("registerOverPlan");});});
	$$("div.registerTableMembershipExpert").invoke('observe', 'mouseout', function(ele){$$("div.registerTableMembershipExpert").each(function(element){element.removeClassName("registerOverPlan");});});
	$$("div.registerTableMembershipIntermediate").invoke('observe', 'mouseover', function(ele){$$("div.registerTableMembershipIntermediate").each(function(element){element.addClassName("registerOverPlan");});});
	$$("div.registerTableMembershipIntermediate").invoke('observe', 'mouseout', function(ele){$$("div.registerTableMembershipIntermediate").each(function(element){element.removeClassName("registerOverPlan");});});
	//$$("div.registerTableMembershipFree").invoke('observe', 'mouseover', function(ele){$$("div.registerTableMembershipFree").each(function(element){element.addClassName("registerOverPlan");});});
	//$$("div.registerTableMembershipFree").invoke('observe', 'mouseout', function(ele){$$("div.registerTableMembershipFree").each(function(element){element.removeClassName("registerOverPlan");});});
}
function registerClick(){
	$$("div.registerTableMembershipExpert").invoke('observe', 'click', function(ele){sendStep2('3')});
	$$("div.registerTableMembershipIntermediate").invoke('observe', 'click', function(ele){sendStep2('2')});
	$$("div.registerTableMembershipFree").invoke('observe', 'click', function(ele){sendStep2('1')});
}
function openCourse(course_id){
	urlToRedirect = homeUrl+course_id;
	window.location = (urlToRedirect);
}

function sendLoginForm(evt) {
	Event.stop(evt);
	formData = $('loginFormData').serialize();
	new Ajax.Request($('loginFormData').action, {
		method: 'post',
		postBody: formData,
		onComplete: function(resp) {
			txt = resp.responseText;
			switch(txt){
				case "Fine":
					window.location = (currentUrl);
					break;
				default:
					window.location = (homeUrl+"login");
					break;
			}
		}
	});
}
function goLoginForm(evt) {
	Event.stop(evt);
	formData = $('loginFormDataForm').serialize();
	new Ajax.Request($('loginFormDataForm').action, {
		method: 'post',
		postBody: formData,
		onComplete: function(resp) {
			txt = resp.responseText;
			switch(txt){
				case "Fine":
					window.location = (homeUrl);
					break;
				default:
					$('registerErrorText').innerHTML = txt;
					$('registerError').style.display = "block";
					break;
			}
		}
	});
}
function goAddComment(evt) {
	Event.stop(evt);
	formData = $('addCommentFormData').serialize();
	new Ajax.Request($('addCommentFormData').action, {
		method: 'post',
		postBody: formData,
		onComplete: function(resp) {
			txt = resp.responseText;
			switch(txt){
				case "Error Type":
					//$('formError').innerHTML="Please log in";
					break;
				case "Error Empty":
					$('commentsNewCommentError').innerHTML="Error: Please fill all the fields";
					break;
				default:
					Effect.BlindUp('commentsNewComment', {
						duration: 1.5,
						afterFinish: function(){
								$('addCommentFormData').reset();
								$("commentsContent").innerHTML = txt+$("commentsContent").innerHTML;
							}
						});
					break;
			}
		}
	});
}

function goForgot(evt) {
	Event.stop(evt);
	formData = $('forgotFormDataForm').serialize();
	new Ajax.Request($('forgotFormDataForm').action, {
		method: 'post',
		postBody: formData,
		onComplete: function(resp) {
			arr = resp.responseText.split("~,~");
            $('registerErrorText').innerHTML = arr[1];
            $('registerError').style.display = "block";  
		}
	});
}
function openVideo(video_id){
	newUrl = videoUrl + "/" + video_id;
	window.location = (newUrl);
}
function moveMoreVideo(side){
	if(side=="left")
		xParam = -763;
	if(side=="right")
		xParam = 763;
	if(continueSlide==true){
		leftParam = Element.getStyle("morevideosContent", "left");
		var leftParamNum = leftParam.match(/[\d-\.]+/g);
		leftParamNum = Number(leftParamNum);
		checkVar = leftParamNum+xParam;
		if(side=="right")
			leftVideos = 7;
		else{
			moved = Number(leftParamNum/109);
			leftVideos = Number(sizeOfVideos) + Number(moved);
		}
		if(checkVar<=0 && leftVideos>=7){
			new Effect.Move('morevideosContent', {
				x: xParam,
				y:0,
				mode: 'relative',
				duration:0.8,
				afterFinish : function(){
					continueSlide = true;
				}
			 });
			 continueSlide = false;
		}
	}
}
function moveCourses(side){
	if(continueSlide==true){
		flag=false;
		if(side=="left"){
			xParam = -573;
			if(topPage<(page+1)){
				if((page+1)<=numOfPages){
					page++;
					new Ajax.Request(homeUrl+"loadcourseboxes/"+widgettype+"/"+page, {
						onComplete: function(resp) {
							var txt = eval('('+ resp.responseText +')');
							$("coursesboxes").innerHTML = $("coursesboxes").innerHTML+txt['content'];
							coursebox = $$("div.coursebox");
							lengthOfCourses = coursebox.length;
							width = lengthOfCourses*191;
							$('coursesboxes').setStyle({ width: width+'px'});
							moveTheBox(xParam);
							topPage = page;
						}
					});
				}
				else{
					flag = true;
				}
			}
			else{
				moveTheBox(xParam);
			}
		}
		if(side=="right"){
			xParam = 573;
			leftParam = Element.getStyle("coursesboxes", "left");
			var leftParamNum = leftParam.match(/[\d-\.]+/g);
			leftParamNum = Number(leftParamNum);
			if(page>1 && leftParamNum<=0){
				page--;
				moveTheBox(xParam)
			}
			else{
				flag = true;
			}
		}
		continueSlide = flag;
	}
}
function moveTheBox(xParam){
	new Effect.Move('coursesboxes', {
		x: xParam,
		y:0,
		mode: 'relative',
		duration:1.5,
		afterFinish : function(){
			continueSlide = true;
		}
	 });
}
function changeLocation(page){
	switch(page){
		case "catalog":
			window.location = (homeUrl+"catalog");
			break;
		case "download":
			break;
		case "upgrade":
			window.location = (homeUrl+"upgrade");
			break;
		case "register":
			window.location = (homeUrl+"register");
			break;		
	}
}
function rateItem(type,type_id,rate_num){
	new Ajax.Request(homeUrl+"courses/rating/"+type+"/"+type_id+"/"+rate_num,{
		onComplete: function(resp) {
			txt = resp.responseText;
			$$("li.star-rating-item").each(
				function(element){
					element.remove();
				}
			);
			$$("li.current-rating").each(
				function(element){
					element.setStyle({width: txt});
				}
			);
			$$(".ratingModuleText span").each(
				function(element){
					str = $(element).innerHTML;
					num = parseInt(str.replace(",",""));
					$(element).innerHTML = parseInt(num+1);
				}
			);
		}
	});
}
function changeLinkLocation(){
	link = $(this).select("a")[0];
	window.location = (link);
}
function sendEditProfile(evt){
	Event.stop(evt);
	switch(this.id){
		case "editFormInformation":
			type = "information";
			break;
		case "editFormPass":
			type = "password";
			break;
		case "editFormInterests":
			type = "interest";
			break;
		case "editFormTerms":
			type = "terms";
			break;
		case "editMailSettings":
			type = "mailSettings";
			break;	
		default:
			return;
	}
	
	formData = $(this).serialize();
	
	new Ajax.Request(homeUrl+"saveEditProfile/"+type, {
		method: 'post',
		postBody: formData,
		onComplete: function(resp) {
			var txt = eval('('+ resp.responseText +')');
			if(txt['errorType']!=undefined){
				$("registerErrorText").innerHTML = txt['errorText'];
				$("registerError").style.display = "block";
			}
			if(txt['returnText']!=undefined){
				$("registerErrorText").innerHTML = txt['returnText'];
				$("registerError").style.display = "block";
				//$("registerError").style.display = "none";
				//alert(txt['returnText']);
			}
		}
	});
}
function setText(ele){
	$(ele.parentNode).select(".selectBoxText")[0].innerHTML = ele.options[ele.selectedIndex].innerHTML;
}
