window.addEvent('domready', function() {
	if($$('.button'))
		$$('.button').each(function(trgt) {
			trgt.addEvent('click', function(evnt) {
				if(this.getElement('a')) window.location.href = this.getElement('a').href;
			});
		});

		$$('.devicerow').addEvent('click',function(evnt){
			window.location.href = (this.getElement('a').href);
		}); 

	if($('comment_container')) {
		$$('.commentfield').addEvent('click', function(evnt){
			if(!this.hasClass('small'))
				this.addClass('small');
			else
				this.removeClass('small');
		});
	}

		$('faqsearch').focus();
		$('faqsearch').addEvent('click',function(evnt) {
			this.value="";
		});
		$('faqsearch').addEvent('keypress',function(evnt) {
			this.value="";
			this.removeEvents('keypress');
			myAutoComplete=new AutoComplete($('faqsearch'));


		});

	if($$('.new_comment'))
		$$('.new_comment').addEvent('click', addnewComment.bindWithEvent());

//	if($$('.del_comment'))
//		$$('.del_comment').addEvent('click', removeComment.bindWithEvent());

	if($('faqsearch_commit'))
		$('faqsearch_commit').addEvent('click', function(evnt) {
			var evnt = new Event(evnt);
			evnt.stop();
			this.up('form').submit();
		});

	if($('send_comment'))
		$('send_comment').addEvent('click', function(evnt){
			var evnt = new Event(evnt);
			evnt.stop();
			this.removeEvents();
			var url = '/ajax/faq/addcomment/';
				new Ajax(url, {
					method: 'post',
					data: {
								'articleId'		:	articleID,
								'comment'	: $('addcomment').getValue()
							},
					sgjson:true,
					windowSpinner: true,
					onComplete: function(data) {
//						data = Json.evaluate(data);
						if(data.faultCode==401) {
							alert(lagKeys.JS_COMMENT_ADD_FAILED);
						}
						else if(data.faultCode==444) {
							alert(lagKeys.JS_COMMENT_ADD_FAIL_FLOOD);
						} else {
							var commentBox = $('template_comment').cloneTemplate()
									  .injectAfter( $('comment_insert') )
									  .setProperty('id', 'comment_' + data.data.insertId)
									  .removeClass('view_template');
							commentBox.getElement('.comment_text').setHTML($('addcomment').getValue());

							commentBox.getElement('.new_comment').addEvent('click', addnewComment.bindWithEvent(this));
//							commentBox.getElement('.del_comment').addEvent('click', removeComment.bindWithEvent(this));
							this.up('li').addClass('view_template');
							$('addcomment').value = '';
						}

					}.bind(this)
				}).request();
		});

		if($('config_select'))
			$('config_select').addEvent('change', function(evnt){
				if(this.getValue()!="")
					window.open(secureuri+'/faq/setup/index/id/'+this.getValue(),'',"width=1100,height=800,status=no,toolbar=no,menubar=no,scrollbars=yes");

			});

	if($('rankingtable')) var Bar=new RankingBar( {'articleID':articleID} );

	if($('captcha')) {
		bindCaptcha();

		$('sipuser_true').checked = false;
		$('sipuser_true').addEvent('click', function(evnt) {
			location.href = (secureuri+'/faq/index/index/do/sendhelp');
		});
		$('sipuser_false').checked = false;
		$('sipuser_false').addEvent('click', function(evnt) {
			cleanAndClose('sipuser');
			$$('.nouser').removeClass('view_template');
			$('typeselect').addClass('view_template');
			$('questionform').removeClass('view_template');
		});

		$('send_mail').addEvent('click', sendMail.bindWithEvent());
	}

	if($('contactlink'))
		$('contactlink').addEvent('click', function(evnt) {
			location.href = '/faq/show/category/id/1/type/contact'
		});
	if($('typeselect'))
		if(contactAction==true)
			window.scrollTo(0,$('typeselect').offsetTop);


});

function cancelMail(close) {
	$('error').addClass('view_template')
	$('questionform').addClass('view_template');
	if(close==false) { 
		$('typeselect').removeClass('view_template');
	} else {
		$('response').removeClass('view_template');
		window.scrollTo(0, $('response').offsetTop);
	}
}

function cleanAndClose(selector) {
	$$('.'+selector+' input').each(function(trgt){
		trgt.value = '';
	});
	$$('.'+selector).addClass('view_template')
}

function bindCaptcha() {
	$('captcha').src='/faq/show/captcha/t/'+(new Date()).getTime();
	$("captcha").removeEvents("click");
	$("captcha").addEvent("click", function(e) { e.stop(); return reloadCaptcha(); }.bindWithEvent(this));
	$('abort').addEvent('click', function(e) { cancelMail(false) });
}


function reloadCaptcha() {
	$('captcha').src='/faq/show/captcha/t/'+(new Date()).getTime();
	return false;
}

function checkForm() {
	if( $('sipuser_true').checked == true) {
		if ( !$('sipid').getValue().match(/[0-9]{7}/) || $('sipid').getValue().length!=7) {
			window.scrollTo(0, $('error').offsetTop);
			$('error').removeClass('view_template').effect('backgroundColor', {
							duration: 2000,
							transition: Fx.Transitions.linear
			}).start('#ffaaaa', '#ffaaaa'); 
			return false;
		}
	}
	else {
		var emailpat = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
		if ( !emailpat.test( $('mail').getValue() ) ) {
			window.scrollTo(0, $('error').offsetTop);
			$('error').removeClass('view_template').effect('backgroundColor', {
								duration: 2000,
								transition: Fx.Transitions.linear
			}).start('#ffaaaa', '#ffaaaa'); 
			return false;
		}
	}
	return true;

}

function sendMail(evnt) {
		var evnt = new Event(evnt);
		evnt.stop();
		if(!checkForm()) return;
		var url = '/ajax/faq/servicemail/';
		var formdata = $('sendmailform').toQueryString();
			new Ajax(url, {
				method: 'post',
				sgjson:true,
                data : formdata,
				windowSpinner: false,
				onComplete: function(data) {
//					data = Json.evaluate(data);
					if(data==false) location.reload();
					if(data.faultCode=="301") {
						$('captchainput').effect('backgroundColor', {
										duration: 2000,
										transition: Fx.Transitions.linear
						}).start('#ffaaaa', '#ffffff');
						$('captchainput').value='';
                        window.scrollTo(0, $('captchainput').offsetTop);
					} else if (data.faultCode!='200') {
						window.scrollTo(0, $('error').offsetTop);
						$('error').removeClass('view_template').effect('backgroundColor', {
										duration: 2000,
										transition: Fx.Transitions.linear
						}).start('#ffaaaa', '#ffaaaa');

					} else
						cancelMail(true);
				}.bind(this)
			}).request();	
}

function removeComment(evnt) {
			var evnt = new Event(evnt);
			evnt.stop();
			var commentid = evnt.target.up('li').id.replace('comment_','');
			var url = '/ajax/faq/deletecomment/';
				new Ajax(url, {
					method: 'post',
					data: {
								'CommentId'		:	commentid
							},
					sgjson:true,
					windowSpinner: true,
					onComplete: function(data) {
//						data = Json.evaluate(data);
						if(data.faultCode!=200) {
							alert(lagKeys.JS_COMMENT_ADD_FAILED);
						} else {
							evnt.target.up('li').remove();
							if($('comment_container').getElements('li').length<=2) {
								$('comment_trailer').removeClass('view_template');
							}
						}

					}.bind(this)
				}).request();
}

function addnewComment(evnt) {
			var evnt = new Event(evnt);
			evnt.stop();
			$('comment_trailer').addClass('view_template');
			$('comment_insert').removeClass('view_template');
}

var RankingBar = new Class({
	options: {
		maxStars:5,
		emptyStarName: "unstarred.gif",
		selectedStarName : "starred.gif",
		container : $('rankingtable'),
		stars : new Array(),
		alreadyRated : false,
		ranking : 0,
		articleID : 0
		},

	initialize:function(options) {
		this.setOptions(options);

		var url = '/ajax/faq/getranking/';
			new Ajax(url, {
				method: 'post',
				data: {
							'articleId'		:	this.options.articleID
						},
				sgjson:true,
				windowSpinner: false,
				onComplete: function(data) {

//						data = Json.evaluate(data);
						if(data['rating']) {
							this.options.alreadyRated =  true;
							this.options.ranking = data['rating'];
							$('ratingtext').setHTML(lagKeys.JS_ARTICLE_ALREADY_RATED.replace(/#{ranking}/, data['rating']));
							this.setRankingbar(true);
							this.setStars((data['rating']-1));
							this.getAvg();
						} else {
							this.options.alreadyRated =  false;
							this.setRankingbar(false);
						}
					}.bind(this)
			}).request();
	},

	getAvg:function() {
			var url = '/ajax/faq/getavg/';
			new Ajax(url, {
				method: 'post',
				data: {
							'articleId'		:	this.options.articleID
						},
				sgjson:true,
				windowSpinner: false,
				onComplete: function(data) {
//						data = Json.evaluate(data);
						var ratingText = 'Ø '+(+data['avg']).toFixed(1)+' ('+data['count'];
						ratingText += ' '+((data['count']==1)?lagKeys.JS_RATING_ONE:lagKeys.JS_RATING_MORE)+')';
						new Element('td').setText(ratingText).inject(this.options.container.getElement('tr'));
					}.bind(this)
			}).request();
	},

	setStars:function(ranking) {
		this.options.stars.each(function(removeElements,remindex){
			if ( remindex > ranking) removeElements.addClass('unstarred').removeClass('starred');
			else removeElements.addClass('starred').removeClass('unstarred');
		}.bind(this));
	},

	setRankingbar:function(alreadyRated) {
		for(starCount=0;starCount<(this.options.maxStars);starCount++) {
			this.options.stars.push(new Element('td').addClass('unstarred').injectTop(this.options.container.getElement('tr')));
		}
		this.options.stars.reverse();

 		if(!alreadyRated) {
			this.options.stars.each( function(trgt,index) {
				this.options.container.addEvent('mouseout', function(evnt){
					if(this.options.alreadyRated) return;
					this.setStars(-1);
				}.bindWithEvent(this));

				trgt.addEvent('mouseover', function(evnt){
					this.setStars(index);
				}.bindWithEvent(this));

				trgt.addEvent('click', function(evnt){
					var url = '/ajax/faq/setranking/';
					new Ajax(url, {
						method: 'post',
						data: {
									'articleId'		:	this.options.articleID,
									'rating'		:	(index+1)
						},
						sgjson:true,
						onComplete: function(data) {
								this.options.rating = (index);
								this.options.alreadyRated =  true;
								this.setStars(index);
								this.disableRating();
								this.getAvg();
							}.bind(this)
					}).request();
				}.bind(this));
			}.bind(this));
		} 
	},

	disableRating:function() {

		this.options.stars.each(function(trgt){
			trgt.removeEvents();
			this.options.container.removeEvents();
			$('ratingtext').setHTML(lagKeys.JS_ARTICLE_ALREADY_RATED.replace(/#{ranking}/, this.options.rating+1));
		}.bind(this));
	},


});
RankingBar.implement(new Options, new Events);


