$(document).ready(function(){UI.Init();});
var GlobalUtil = loadGlobalUtil();

var UI = {
		Init: function(){
			UI.Common = loadCommon();
			var David = loadDavid();
			UI.Admin.TagEditor = David.TagEditor;
			GlobalUtil.TraverseObject(UI,GlobalUtil.ProcessObject);
			},
		Common	: {},
		Admin : {
			isFound : function(){ return true; },
			Init: function() {
	            $(window).bind('keydown', function (e) {
	                switch (e.keyCode) {
	                    case 37: if (UI.Admin.Datagrid.isFound()) { UI.Admin.Datagrid.Pagination.MoveDirection('left'); } break;
	                    case 39: if (UI.Admin.Datagrid.isFound()) { UI.Admin.Datagrid.Pagination.MoveDirection('right'); } break;
						}
	            	});
	            $('form#CourseEditView input.save').live('click', function () {
	                if (UI.Admin.Badge.CheckFileName()) { return true; }
	                else {UI.Admin.Popup.Show('A file already exists with this file name', false); return false;}
		            });				
				},
			Alert : {
				Message : '',
				Show : function(message){
					UI.Admin.Alert.Message = message;
					UI.Admin.Popup.Show('UI.Admin.Alert.Action');
					},
				Action: function(){
					var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder');
					_body.append('<p>'+UI.Admin.Alert.Message+'</p>');							
					_buttons.append('<a href="#" class="btn-blue effects cancel-alert">Ok</a>');
					$('.cancel-alert').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-alert').unbind(); return false; });											
					},				
				},
			KnowledgeCheckEditor : {
				isFound : function(){ return $('.question-block').length },
				Options : {
					TabContentHeight : '',
					Selectors : {
						QuestionBlock : '.question-block',
						QuestionTools : '.question-tools',
						QuestionDetails : '.question-content',
						Data : '.knowledge-check-data'
						},
					LoadingModal : function(){
						var _popup = $('.popup');
						_popup.find('.text-holder').html('<img src="/public/images/_admin/loader_ffffff.gif" alt="" />').next('.btn-holder').remove();
						},
					Save : function(){
						UI.Admin.Popup.Show('UI.Admin.KnowledgeCheckEditor.Options.LoadingModal');
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' option.correct').each(function(){
							if (!$(this).val().match('c::')) { $(this).val('c::'+$(this).val()); }
							});
						//var data = GlobalUtil.SerializeToJSON($(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data).parents('form:first'));
                        $(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data).parents('form:first').find('option,input:text,textarea').each(function(){
							$(this).val($(this).val().replace(/&/g,'[[AMP]]'));
							});
						var data = $(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data).parents('form:first').serialize();
						UI.Common.ConsoleLog(data);
                        $.ajax({
							type: "post",
							url: UI.Common.Service.Url+'/json/SaveLessonQuestions',
							data: JSON.stringify({'form' : data}),
							contentType: "application/json",
							success: function (result) {
								if (result.SaveLessonQuestionsResult) {
									UI.Common.Notification.Inline.Options.Show('.tab-content','kc-save-success','Notification','Knowledge Check successfully saved.','',true);					
									}
								else {
									UI.Common.Notification.Inline.Options.Show('.tab-content','kc-save-success','Notification','Knowledge Check was not saved.','',true);														
									}	
								UI.Admin.Popup.Hide();
								},
							error : function(jqXHR, textStatus, errorThrown){
								UI.Admin.Popup.Hide();
								}
							});	
						},
					Markup : {
						Container : function() { return '<div class="question-content effects"></div>'; },
						QuestionTools : function(id,num){
							var markup = '<li><span class="btn-question effects" data-id="[[ID]]"><span class="btn-del-small">del</span><span class="arrow"></span>Question [[NUM]]</span></li>';
							markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[NUM\]\]/g,num);
							return markup;
							},
						Section : function(num){
							var markup = '<div class="section section[[NUMBER]]"></div>';
							markup = markup.replace(/\[\[NUMBER\]\]/g,num);
							return markup;
							},						
						Prompt : function(id,num,p){
							var markup = '<div class="heading-box"><a class="btn-del-red effects" href="#"><span class="decor"></span>DELETE</a><h2>Question [[NUM]]:</h2></div><div class="text effects" style="width:79.1%;"><textarea data-id="[[ID]]" cols="30" rows="10" style="width:98% !important; max-width:98%; height:125px;" title="Please enter your questions or prompt here!">[[PROMPT]]</textarea></div>';
							markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[NUM\]\]/g,num).replace(/\[\[PROMPT\]\]/g,p);
							return markup;
							},
						Response : function(id,num,value,selected){
							var markup = '<div class="row" data-id="[[ID]]"[[ISCORRECT]]><label for="answer'+num+'">Answer [[NUMBER]]:</label><input type="text" class="text response" id="answer'+num+'" style="width:97%;" value="[[RESPONSE]]" /><input type="checkbox" name="checkbox" id="correct'+num+'" [[CHECKED]] class="checkbox correct-response" /><label class="small" for="correct'+num+'">Correct Answer</label></div>';
							markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[NUMBER\]\]/g,num).replace(/\[\[RESPONSE\]\]/g,value);
							if (selected) { markup = markup.replace(/\[\[CHECKED\]\]/g,'checked="checked"').replace(/\[\[ISCORRECT\]\]/g,' data-correct="true"'); }
							else { markup = markup.replace(/\[\[CHECKED\]\]/g,'').replace(/\[\[ISCORRECT\]\]/g,''); }							
							return markup;
							},
						Clip : {
							Container : function(id){
								var markup = '<div class="heading-box"><h2>Clip that contains answer</h2></div><select class="clip-options" data-id="[[ID]]" style="float: left; margin-right: 20px; margin-bottom:20px;"></select><div style="float:left;width:230px;"><a href="#" class="btn-blue effects use-current-clip">Use Current Clip</a><a href="#" class="btn-blue effects goto-current-clip">Goto Clip</a></div>';
								markup = markup.replace(/\[\[ID\]\]/g,id);
								return markup;
								},
							Item : function(id,mark,title,selected){
								var markup = '<option data-id="[[ID]]" data-marker="[[MARKER]]" [[CHECKED]]>[[TITLE]]</option>';
								markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[MARKER\]\]/g,mark).replace(/\[\[TITLE\]\]/g,title);
								if (selected) { markup = markup.replace(/\[\[CHECKED\]\]/g,'selected="selected"'); }
								else { markup = markup.replace(/\[\[CHECKED\]\]/g,''); }															
								return markup;
								},
							Collection : ''
							},
						MarkerTime : function(id,value){
							var markup = '<div class="heading-box"><h2>Marker Time that contains correct answer</h2></div><div class="row" data-id="[[ID]]" style="padding-left:0;"><input type="text" class="text" id="answer1" style="width:97%;" value="[[RESPONSE]]" /><div style="float:left;width:240px;"><a href="#" class="btn-blue effects use-current-time">Use Current Time</a><a href="#" class="btn-blue effects goto-current-time">Goto Time</a></div></div>';
							markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[RESPONSE\]\]/g,value);
							return markup;
							},						
						Model : function(){
							var _this,clips,markup = '<fieldset><input type="hidden" value="0" /><textarea class="prompt"></textarea><select class="responses" multiple="multiple"><option value="" selected="selected"></option><option value="" selected="selected"></option><option value="" selected="selected"></option><option value="" selected="selected"></option></select><select class="clips">'+UI.Admin.KnowledgeCheckEditor.Options.Markup.Clip.Collection+'</select><input type="text" value="" class="timecode" /></fieldset>';
							markup = markup.replace(/\[\[CLIPS\]\]/g,clips);
							return markup;
							},
						}
					},
				Init : function(){
					$('input[name="SubmitCommand"]').live('click',function(){UI.Admin.KnowledgeCheckEditor.Options.Save();  return false;});
					$('.lesson-clips li').each(function(){ var _this = $(this); UI.Admin.KnowledgeCheckEditor.Options.Markup.Clip.Collection += '<option data-marker="'+_this.attr('data-marker')+'" data-id="'+_this.attr('data-id')+'" value="'+_this.attr('data-id')+'">'+_this.text()+'</option>'; });					
					//$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset select.clips').append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Clip.Collection);
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionTools+' span').live('click',function(){
						var _this = $(this),id = _this.parents('li:first').find('span.btn-question').attr('data-id');
						if (_this.hasClass('btn-del-small')) {
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset#'+id).remove();
							}
						else {
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset').removeClass('active');
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset#'+id).addClass('active');
							}	
						UI.Admin.KnowledgeCheckEditor.Cleanup();
						return false;
						});										
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .heading-box .btn-del-red').live('click',function(){
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active').remove();
						UI.Admin.KnowledgeCheckEditor.Cleanup();
						return false;
						});						
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).find('.use-current-clip,.goto-current-clip,.use-current-time,.goto-current-time').live('click',function(){
						var _this = $(this),id = _this.parents('.row:first').attr('data-id'),time = UI.Common.Ooyala.Options.GetCurrentTime(),value = _this.parents('.row:first').find('input').val(),cur,next,clipID;
						if (_this.is('.use-current-clip')) { 
							var clipID = $(UI.Common.Ooyala.Options.Selectors.ClipContainer+' li.clip-active').attr('data-id');
							var mrkr = $(UI.Common.Ooyala.Options.Selectors.ClipContainer+' li.clip-active').attr('data-marker');							
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option[data-id="'+clipID+'"]').attr('selected',true);
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active input:text.timecode').val(mrkr);
							}
						else if (_this.is('.goto-current-clip')) { 
							//UI.Common.Ooyala.Options.NewPlayheadLocation((_this.parents('.row:first').find('select option:selected').attr('data-marker'))); 
							$.scrollTo($('.tabs'),{duration:2000});
							UI.Common.Ooyala.Options.NewPlayheadLocation(_this.parents('.section').find('select option:selected').attr('data-marker'));
						}
						else if (_this.is('.use-current-time')) { 
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' #'+id).val(time); 
							
							var time = _this.parents('.row').find('#answer1').val(),cur,next,ind;
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option').removeAttr('selected');
							$(UI.Common.Ooyala.Options.Selectors.ClipContainer+' li').each(function(){
								cur = $(this).attr('data-marker'); next = $(this).next('li').attr('data-marker'); ind = $(this).index()+1;
								if (time >= cur && time < next) { 
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option:nth-child('+ind+')').attr('selected',true);
								} else if (time >= cur && typeof next == 'undefined') { 
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option:nth-child('+ind+')').attr('selected',true);
								}
							});
						}
						else if (_this.is('.goto-current-time')) { 
							//UI.Common.Ooyala.Options.NewPlayheadLocation((_this.parents('.row:first').find('input').val())); 
							$.scrollTo($('.tabs'),{duration:2000});
							UI.Common.Ooyala.Options.NewPlayheadLocation(_this.parents('.row').find('#answer1').val());

							var time = _this.parents('.row').find('#answer1').val(),cur,next,ind;
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option').removeAttr('selected');
							$(UI.Common.Ooyala.Options.Selectors.ClipContainer+' li').each(function(){
								cur = $(this).attr('data-marker'); next = $(this).next('li').attr('data-marker'); ind = $(this).index()+1;
								if (time >= cur && time < next) { 
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option:nth-child('+ind+')').attr('selected',true);
								} else if (time >= cur && typeof next == 'undefined') { 
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option:nth-child('+ind+')').attr('selected',true);
								}
							});
						}
						UI.Admin.KnowledgeCheckEditor.Cleanup();
						return false;
						});											
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionTools+' a.add-question').live('click',function(){
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Model());
						UI.Admin.KnowledgeCheckEditor.Cleanup();
						return false;
						});
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' input.correct-response').live('change',function(){
						var _this = $(this),_parent = _this.parents('.row:first'),id = _parent.attr('data-id');						
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active select.responses option').removeClass('correct');
						$('option#'+id).addClass('correct');
						UI.Admin.KnowledgeCheckEditor.Cleanup();
						return false;
						});					
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).find('textarea, input').live('keypress change',function(e){
						var _this = $(this),id,prefix='',_parent = _this.parents('.row:first');
						if (_this.is(':text')) { id = _parent.attr('data-id'); }
						else { id = _this.attr('data-id'); }						
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' #'+id).val(_this.val()).text(_this.val());
						switch(e.type){
							case 'change': UI.Admin.KnowledgeCheckEditor.Cleanup(); break;
							}						
						});						
					UI.Admin.KnowledgeCheckEditor.Cleanup();
					var questionID = GlobalUtil.GetQueryStringParam(window.location.href,'q');
					if (questionID) {
						$('.question-tools .btn-question[data-id="q'+questionID+'"]').click();
						}	
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .clip-options').live("change", function(e){ 
						var opt = $(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .clip-options option:selected');
						var mrkr = opt.attr('data-marker');
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option').removeAttr('selected');
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active .clips option:eq('+opt.index()+')').attr('selected','selected');
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active input:text.timecode').val(mrkr);
						$(this).parent().next('.section').find('#answer1').val(mrkr);
					});
					$('#answer1,#answer2,#answer3,#answer4').parent().css({width:'50%'});
					},
				Cleanup : function(){					
					var qCount = $(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset').length;
					if (qCount) {if (!$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).length) {$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionBlock).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Container());}}
					else {$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).remove();}
					if (!$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset.active').length) { $(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset:first').addClass('active'); }
	
					$('.tab-content').height($('.tab-content').height()+'px');
					
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionTools+' ul,'+UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).empty();
					var q=0,_q,_p,_r,_t,_c,_qID,_pID,_rID,_tID,_cID,i=1,_ro,_co,_cur;
					$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.Data+' fieldset').each(function(){q++;
						_q = $(this); _qID = 'q'+q; _q.attr('id',_qID);
						$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionTools+' ul').append(UI.Admin.KnowledgeCheckEditor.Options.Markup.QuestionTools(_qID,q));
						_cur = _q.hasClass('active')
						if (_cur) {
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionTools+' ul li span[data-id="'+_qID+'"]').addClass('active');
							}
							// Handle Prompt
							_q.find('input:hidden[data-type="question-id"]').attr('id',_qID+'id').attr('name',_qID+'id');
							_q.find('input:hidden[data-type="answer-options"]').attr('id',_qID+'rid').attr('name',_qID+'rid');
							_p = _q.find('textarea.prompt'); _pID =_qID+'p1'; _p.attr('id',_pID).attr('name',_pID);
						if (_cur) {							
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Section(i));
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .section'+i).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Prompt(_pID,q,_p.val()));
							}
							i++;
							_r = _q.find('select.responses'); _rID =_qID+'r1'; _r.attr('id',_rID).attr('name',_rID);
						if (_cur) {		
							$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Section(i));		
							}
							_ro = 1;
							_r.find('option').each(function(){
								var _this = $(this),id = _rID+'o'+_ro,value = _this.text(),isSelected = false;
								_this.attr('id',id).attr('name',id);								
								if (_this.hasClass('correct')) { isSelected = true; }								
								if (_cur) {		
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .section'+i).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Response(id,_ro,value,isSelected));												
								}
								_ro++;
								});
							i++;
							_c = _q.find('select.clips'); _cID =_qID+'c1'; _c.attr('id',_cID).attr('name',_cID);
							if (_cur) {	
								$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Section(i));																
								}
							_co = 1;							
							if (_cur) {	
								$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .section'+i).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Clip.Container());
								}
							_c.find('option').each(function(){
								var _this = $(this),id = _cID+'o'+_co,title = _this.text(),mark = _this.attr('data-marker'),isSelected = false;
								_this.attr('id',id).attr('name',id);
								if(_this.attr('selected')) { isSelected=true; } else { isSelected = false }
								if (_cur) {	
									$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .section'+i+' select.clip-options').append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Clip.Item(id,mark,title,isSelected));												
									}
								_co++;
								});							
							i++;
							_t = _q.find('input:text.timecode'); _tID =_qID+'t1'; _t.attr('id',_tID).attr('name',_tID),_tVal = _t.val();
							if (_cur) {	
								$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.Section(i));									
								$(UI.Admin.KnowledgeCheckEditor.Options.Selectors.QuestionDetails+' .section'+i).append(UI.Admin.KnowledgeCheckEditor.Options.Markup.MarkerTime(_tID,_tVal));
								}
						});
					$('.tab-content').height('auto');					
					UI.Common.Form.Cleanup();
					$('#answer1,#answer2,#answer3,#answer4').parent().css({width:'50%'});
					}	
				},
			BillingInfo: {
				isFound : function(){ return $('.billing-data').length; },
				Options : {
					Selectors : {
						BillingTools : '.question-tools',
						Data : '.multiuseraccount-data',
						BillingData : '.billing-data',
						BillingDetails : '.question-content'
					},
					Markup:{
						BillingTools : function(id,num){
							var markup = '<li><span class="btn-question effects" data-id="[[ID]]"><span class="btn-del-small">del</span><span class="arrow"></span><span class="tick"></span>Billing [[NUM]]</span></li>';
							markup = markup.replace(/\[\[ID\]\]/g,id).replace(/\[\[NUM\]\]/g,num);
							return markup;
							},
						BillingResponse : function(id,did,ccnum,ccnam,m,y,cvs,check){
							id = parseInt(id);
							var c = '';
							if(check) { c = 'Checked'; }
							if(typeof ccnum == 'undefined') { ccnum = ""; }
							if(typeof ccnam == 'undefined') { ccnam = ""; }
							if(typeof cvs == 'undefined') { cvs = ""; }
							var markup = '<div class="cell" data-id="'+did+'">';
							markup += '<div class="row"><label>Credit Card Number</label><div class="area"><div class="text effects" style="width: 271px;"><input type="text" name="CreditCardNumber" style="width: 261px;" value="[[CCNUM]]" data-id="bb'+(id+1)+'"></div></div></div>';
							markup += '<div class="row"><label>Name on Credit Card</label><div class="area"><div class="text effects" style="width: 271px;"><input id="Name" name="Name" style="width: 261px;" type="text" value="[[CCNAME]]" data-id="bb'+(id+2)+'"></div></div></div>';
							markup += '<div class="row"><label for="card-type">Expiration:</label><select class="select" id="MonthExpiration" name="MonthExpiration" style="width:130px" data-id="bb'+(id+3)+'">'+m+'</select><select class="select" id="YearExpiration" name="YearExpiration" style="width:90px" data-id="bb'+(id+4)+'">'+y+'</select></div>';
							markup += '<div class="row"><label>CVS</label><div class="area"><div class="text effects" style="width: 46px;"><input type="text" name="CVS" style="width: 36px;" value="[[CVS]]" data-id="bb'+(id+5)+'"></div></div></div>';
							markup += '<div class="row"><label for="checkbox" style="float:left;">Set as Default</label><div class="checkboxArea'+c+'"></div><input type="checkbox" name="checkbox" data-id="bb'+(id+6)+'" class="checkbox outtaHere" '+c+'></div>';
							markup = markup.replace(/\[\[CCNUM\]\]/g,ccnum).replace(/\[\[CCNAME\]\]/g,ccnam).replace(/\[\[CVS\]\]/g,cvs);
							markup += '</div>';
							return markup;
							},
						Model : function(id, c){
							id = parseInt(id);
							var markup = '<fieldset><input type="hidden" name="billing['+c+'][BillingId]" value=""><input type="hidden" name="billing['+c+'][CreditCardNumber]" value="" id="bb'+(id+1)+'" /><input type="hidden" name="billing['+c+'][CreditCardName]" value="" id="bb'+(id+2)+'" /><select class="select" class="months" name="billing['+c+'][MonthExpiration]" id="bb'+(id+3)+'"><option selected="selected" value="1">January</option><option value="2">February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option><option value="13"></option></select><select class="select" class="years" name="billing['+c+'][YearExpiration]" id="bb'+(id+4)+'"><option selected="selected" value="2012">2012</option><option value="2013">2013</option><option value="2014">2014</option><option value="2015">2015</option><option value="2016">2016</option></select><input type="hidden" name="billing['+c+'][CVS]" value="" id="bb'+(id+5)+'" /><input type="hidden" name="billing['+c+'][default]" value="false" id="bb'+(id+6)+'" /></fieldset>';
							return markup;
						}
					}
				},
				Init:function(){
					$(UI.Admin.BillingInfo.Options.Selectors.BillingTools+' span').live('click',function(){
						var _this = $(this),id = _this.parents('li:first').find('span.btn-question').attr('data-id');
						if (_this.hasClass('btn-del-small')) {
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset#'+id).remove();
						} else {
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset').removeClass('active');
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset#'+id).addClass('active');
						}	
						UI.Admin.BillingInfo.Cleanup();
						return false;
					});
					$(UI.Admin.BillingInfo.Options.Selectors.BillingTools+' a.add-question').live('click',function(){
						var count = $(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset').length;
						var lastid = $(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset:last-child').find('input:last-child').attr('id');
						$(UI.Admin.BillingInfo.Options.Selectors.BillingData).append(UI.Admin.BillingInfo.Options.Markup.Model(lastid.substr(2),count));
						UI.Admin.BillingInfo.Cleanup();
						return false;
					});
					$(UI.Admin.BillingInfo.Options.Selectors.BillingDetails).find('textarea, input, select').live('keypress change',function(e){
						var _this = $(this), id = _this.attr('data-id'); 
						if(_this.is('select')) {
							var ind = parseInt(_this.find(":selected").index())+1;
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' #'+id+' option').removeAttr('selected');
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' #'+id+' option:nth-child('+ind+')').attr('selected',true);
						} else {
							$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' #'+id).val(_this.val()).text(_this.val());
						}
						switch(e.type){
							case 'change': UI.Admin.BillingInfo.Cleanup(); break;
						}						
					});
					$(UI.Admin.BillingInfo.Options.Selectors.BillingDetails).find('div[class^="checkboxArea"]').live('click',function(){ 
						var _this = $(this), id = _this.next('input:checkbox').attr('data-id');
						$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' input[name*="default"]').attr('checked',false);
						$(UI.Admin.BillingInfo.Options.Selectors.BillingData+' #'+id).attr('checked',true);
						var _bID = _this.parents('.cell').attr('data-id');
						$('.question-tabset .tick').hide();
						$('.question-tabset span').each(function(){
							if($(this).attr('data-id')) {
								if( $(this).attr('data-id') == _bID) {
									$(this).find('.tick').show();
								}
							}
						});
						UI.Admin.BillingInfo.Cleanup();
					});
					UI.Admin.BillingInfo.Cleanup();
				},
				Cleanup : function(){
					if ($(UI.Admin.BillingInfo.Options.Selectors.BillingData).find('fieldset').length == 1) { 
						$(UI.Admin.BillingInfo.Options.Selectors.BillingData).find('fieldset:first input[name*="default"]').attr('checked',true); 
					}
					
					if (!$(UI.Admin.BillingInfo.Options.Selectors.Data+' fieldset.active').length) { $(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset:first').addClass('active'); }
					
					$(UI.Admin.BillingInfo.Options.Selectors.BillingTools+' ul,'+UI.Admin.BillingInfo.Options.Selectors.BillingDetails).empty();
					var b=0, _bID;
					var lastid = $(UI.Admin.BillingInfo.Options.Selectors.BillingData+' fieldset:last-child').find('input:last-child').attr('id');
					$(UI.Admin.BillingInfo.Options.Selectors.Data+' fieldset').each(function(){
						var _this = $(this);
						if(_this.parent().hasClass(UI.Admin.BillingInfo.Options.Selectors.BillingData.substr(1)))
						{
							b++; _bID = 'b'+b; _this.attr('id',_bID);
							$(UI.Admin.BillingInfo.Options.Selectors.BillingTools+' ul').append(UI.Admin.BillingInfo.Options.Markup.BillingTools(_bID,b));
							if(_this.hasClass('active'))
							{
								$(UI.Admin.BillingInfo.Options.Selectors.BillingTools+' ul li span[data-id="'+_bID+'"]').addClass('active');
								$(UI.Admin.BillingInfo.Options.Selectors.BillingDetails).append(UI.Admin.BillingInfo.Options.Markup.BillingResponse(
									parseInt(_this.find('input:last-child').attr('id').substr(2))-(_this.children().length-1),
									_bID,
									_this.find('input[name*="CreditCardNumber"]').val(),
									_this.find('input[name*="CreditCardName"]').val(),
									_this.find('select[name*="MonthExpiration"]').html(),
									_this.find('select[name*="YearExpiration"]').html(),
									_this.find('input[name*="CVS"]').val(),
									_this.find('input[name*="default"]').attr('checked')
								));	
							}
							
							if(_this.find('input[name*="default"]').attr('checked')) {
								$('.question-tabset .tick').hide();
								$('.question-tabset span').each(function(){
									if($(this).attr('data-id')) {
										if( $(this).attr('data-id') == _bID) {
											$(this).find('.tick').show();
										}
									}
								});
							}
						} else {
							
						}
					});
				}
			},
			MultiUserAccounts : {
				isFound : function(){ return $('.multi-user').length; },
				Options : {
					Selectors : {},
					Markup:{
						KeyList : function(){
							var markup = '<table cellspacing="0" cellpadding="10" border="0" style="margin-top: 10px; border: 1px solid #ccc; width: 100%; float: left; clear: both;" class="MultiUserKeyList"><tbody></tbody></table>'
							return markup;
							},
						KeyHeader : function(){
							var markup = '<tr><th align="left">Key Code</th><th align="center" width="50">Inactive</th><th align="center">User</th></tr>';
							return markup;
							},
						KeyItem : function(obj){
							var isDeleted = '', user= 'No User', markup = '<tr data-type="multi-user-key" data-id="[[ID]]"><td align="left">[[KEYCODE]]</td><td align="center"><input type="checkbox" class="mark-key-deleted" [[ISDELETED]] /></td><td align="center">[[USER]]</td></tr>';
							if (obj.attr('data-isdeleted') == 'true') { isDeleted = 'checked="checked"'}
							if (obj.attr('data-user') != 0) { user = '<a href="/Admin/Users/AccountDetails/'+obj.attr('data-user')+'/edit">'+obj.attr('data-username')+'</a>'}
							markup = markup.replace(/\[\[ID\]\]/g,obj.attr('data-id')).replace(/\[\[KEYCODE\]\]/g,obj.text()).replace(/\[\[ISDELETED\]\]/g,isDeleted).replace(/\[\[USER\]\]/g,user);
							return markup;
							},
						KeyDataItem : function(key){
							var markup = '<option data-id="'+key.MultiUserKeysId+'" data-type="MultiUserKey" data-IsDeleted="'+key.IsDeleted+'" data-IsRedeemed="'+key.IsRedeemed+'" data-username="'+key.Username+'">'+key.MultiUserKeyValue+'</option>';
							//markup = '';
							return markup;
							}
						},
					UpdateKeyIsDeleted : function(keyId,obj){
					 	var _holder = $('select.multi-user-keys-holder'),_IsDeleted,_keyData;
						if (obj.is(':checked')) { _IsDeleted = true; }
						else { _IsDeleted = false; }
						$.ajax({
							type: "get",
							url: UI.Common.Service.Url()+'/Multiuser/UpdateMultiUserKeyIsDeleted',
							data: { 'keyid' : keyId,'isdeleted' : _IsDeleted },
							contentType: "application/json; charset=utf-8",
							success: function (result) {
								result = GlobalUtil.MakeObject(result);
								//UI.Common.ConsoleLog(result);
								_keyData = _holder.find('option[data-id="'+keyId+'"]');
								_keyData.attr('data-IsDeleted',_IsDeleted)								 								
								UI.Admin.MultiUserAccounts.Cleanup();
								},
							error : function(jqXHR, textStatus, errorThrown){
								}
							});							
						},
					GetAllKeysForOrder : function(orderId){
					 	var _holder = $('select.multi-user-keys-holder');
						$.ajax({
							type: "get",
							url: UI.Common.Service.Url()+'/Multiuser/GetMultiUserKeys',
							data: { multiuseraccountid : orderId },
							contentType: "application/json; charset=utf-8",
							success: function (result) {
								//UI.Common.ConsoleLog(result);
								result = GlobalUtil.MakeObject(result);
								_holder.empty();
								$.each(result.DataCollection,function(i,key){
									_holder.append(UI.Admin.MultiUserAccounts.Options.Markup.KeyDataItem(key));								 
									});
								UI.Admin.MultiUserAccounts.Cleanup();
								},
							error : function(jqXHR, textStatus, errorThrown){
								}
							});							
						},
					GenerateKeysForOrder : function(orderId,quantity){
					 	var _holder = $('select.multi-user-keys-holder');
						$.ajax({
							type: "get",
							url: UI.Common.Service.Url()+'/Multiuser/CreateMultiUserKey',
							data: { 'multiuseraccountid' : orderId,'Quantity':quantity },
							contentType: "application/json; charset=utf-8",
							success: function (result) {
								//UI.Common.ConsoleLog(result);
								result = GlobalUtil.MakeObject(result);								
								_holder.empty();
								$.each(result.DataCollection,function(i,key){
									_holder.append(UI.Admin.MultiUserAccounts.Options.Markup.KeyDataItem(key));								 
									});								
								UI.Admin.MultiUserAccounts.Cleanup();								
								},
							error : function(jqXHR, textStatus, errorThrown){
								}
							});							
						},
					LoadCompanyContactDetails : function(companyId){
                        // TODO: (IVO), looks this function is without use.
//						$.ajax({
//							type: "post",
//							url: UI.Common.Service.Url() + '/Company/Get',
//							data: { 'CompanyId' : companyId },
//							success: function (result) {
//								UI.Common.ConsoleLog(result);
//								},
//							error : function(jqXHR, textStatus, errorThrown){
//								}
//							});						
						},	
					/*
					UpdateMultiUserOrderQuantity : function(orderId,quantity){
						$.ajax({
							type: "post",
							url: '/RaptorService/UpdateMultiUserOrderKeyQuantity',
							data: { 'MultiUserOrderId' : orderId,'Quantity': quantity },
							success: function (result) {
								if (result.Status) { UI.Admin.MultiUserAccounts.Options.SyncKeyQuantity(); }
								else { $('input#KeyQuantity').val(result.KeyQuantity); UI.Admin.Alert.Show(result.Message); }								
								},
							error : function(jqXHR, textStatus, errorThrown){
								}
							});							
						
						},
					*/
					SyncKeyQuantity : function(){
						var _quantity = $('input#KeyQuantity').val(),
							_activeKeys = $('select.multi-user-keys-holder option[data-isdeleted="false"]').length,
							_remainingKeys = _quantity - _activeKeys,
							_button = $('.create-multi-user-keys:first'),
							_status,
							_buttonAmount = _button.parent().find('input');
						if (!_button.next('span.key-status').length) { _button.after('<span class="key-status" style="display: block; font-size: 18px; padding: 5px; color: rgb(102, 102, 102); float: right; clear: none;"></span>'); } 	
						_status = $('span.key-status');
						if(_buttonAmount.val() == '')
						{
							_buttonAmount.val(10);
						}
						/*
						if (_activeKeys < _quantity) {
							_button.show();
							_status.text(_activeKeys+' Active Key'+((_activeKeys ==1)?'':'s')+'. '+_remainingKeys+' more Active Key'+((_remainingKeys ==1)?'':'s')+' available.');
							_buttonAmount.val(_remainingKeys);
							}						
						else if (_activeKeys == _quantity) {
							_button.hide();
							_status.text(_activeKeys+' Active Key'+((_activeKeys ==1)?'':'s')+'. '+_remainingKeys+' more Active Key'+((_remainingKeys ==1)?'':'s')+' available.');
							}	
						else {
							_button.hide();
							_status.text('Active User Limit ('+_quantity+') is less than amount of active keys. Please mark '+Math.abs(_remainingKeys)+' key'+((_remainingKeys ==1)?'':'s')+' as inactive, or update Active User Limit');														
							}	
						*/	
						},
						
					UpdateOrderLock : function(obj){
						var service,orderId = obj.parents('*[data-type="multi-user"]').attr('data-id'),lock,_unlocked = $('.multi-user-unlocked'),_locked = $('.multi-user-locked'),_lockCheck = $('input:checkbox.multi-user-lock-check');
						if (obj.hasClass('lock-multi-user-order')) { service = '/MultiUser/LockMultiUserOrder'; lock = true; }
						else if (obj.hasClass('unlock-multi-user-order')) { service = '/MultiUser/UnlockMultiUserOrder'; lock = false; }
						else { return false; }
						$.ajax({
							type: "post",
							url: UI.Common.Service.Url() + service + "?multiuseraccountid=" + orderId,
                            contentType: "application/json; charset=utf-8",
							success: function (result) {
								result = GlobalUtil.MakeObject(result);
								if (result.OperationResult) {
									if (lock) {
										_locked.show();
										_unlocked.hide().find('input,select').attr('disabled',true);
										}
									else {
										_lockCheck.attr('checked',false).change();
										_locked.hide();
										_unlocked.show().find('input,select').attr('disabled',false);										
										}	
									UI.Common.Form.Cleanup();
									UI.Admin.MultiUserAccounts.Cleanup();
									}
								},
							error : function(jqXHR, textStatus, errorThrown){
								}
							});							
						}
					},
				Init : function(){
					$('.create-multi-user-keys').live('mouseup click',function(event){
						if (event.type == 'mouseup') {
							var _this = $(this), _muOrderId = _this.parents('*[data-type="multi-user"]').attr('data-id');												
							if ($(event.target).hasClass('key-quantity')) { return false; }
							else { UI.Admin.MultiUserAccounts.Options.GenerateKeysForOrder(_muOrderId,_this.parent().find('input').val()); return false; }						
							}
						else { return false; }
						});
					$('.create-multi-user-company').live('click',function(){UI.Admin.Popup.Show('UI.Common.Companies.Options.CreateNewCompany'); return false;});
					$('.lock-multi-user-order, .unlock-multi-user-order').live('click',function(){ UI.Admin.MultiUserAccounts.Options.UpdateOrderLock($(this)); return false;});					
					$('select.user-company-select').live('change',function(){ UI.Admin.MultiUserAccounts.Options.LoadCompanyContactDetails($(this).val()); });
					//$('input#KeyQuantity').live('change',function(){ UI.Admin.MultiUserAccounts.Options.UpdateMultiUserOrderQuantity($(this).parents('*[data-type="multi-user"]').attr('data-id'),$(this).val()); });
					$('input.mark-key-deleted').live('change',function(){
						var _this = $(this), _muKeyId = _this.parents('tr[data-type="multi-user-key"]').attr('data-id');												
						if (_this.is(':checked')) {
							UI.Admin.MultiUserAccounts.Options.UpdateKeyIsDeleted(_muKeyId,_this);						
							}
						else {
							UI.Admin.MultiUserAccounts.Cleanup();
							}	
						});					
					UI.Admin.MultiUserAccounts.Options.GetAllKeysForOrder($('*[data-type="multi-user"]').attr('data-id'));
					
					$('#RenewalDay,#RenewalMonth,#ExpirationDay,#ExpirationMonth,#ExpirationYear').parent().css({width:'40px'});
					
					UI.Admin.MultiUserAccounts.Cleanup();
					},
				Cleanup : function(){				
					var _holder = $('select.multi-user-keys-holder'),_container = $('.area.multi-user-keys'),_list,_this;
					if (!_container.find('.MultiUserKeyList').length) { _container.append(UI.Admin.MultiUserAccounts.Options.Markup.KeyList()); }
					_list = _container.find('.MultiUserKeyList tbody');
					_list.empty();
					if (_holder.find('option').length) {
						$('tr#no-keys').remove();
						_list.append(UI.Admin.MultiUserAccounts.Options.Markup.KeyHeader());
						_holder.find('option').each(function(){
							_this = $(this);								 
							_list.append(UI.Admin.MultiUserAccounts.Options.Markup.KeyItem(_this));
							});						
						_list.find('tr:odd td').css('background','#f6f6f6');
						}
					else {
						_list.append('<tr id="no-keys"><td colspan="2" style="text-align: center; padding: 20px 0px; font-size: 18px; color: #666;">No keys, yet. <a href="#" class="create-multi-user-keys">Generate Keys for Order</a></td></tr>');
						}						
					UI.Admin.MultiUserAccounts.Options.SyncKeyQuantity();
					UI.Common.Form.RadioCheck.Cleanup();
					}				
				},			
			RuleBuilder: {
				isFound: function(){ return $('.requirements-builder').length; },
				Options: {
					Behavior: function(){
						$( ".drag-link" ).draggable({ 
							helper: 'clone',
							appendTo: 'body',
							revert: "invalid",
							revertDuration: 500,
							zIndex: 999999,
							});
						$(".btn-add-item").droppable({
							over: function() { $(this).css('border-color','#999'); },
							out: function() { $(this).css('border-color','#e1e1e1'); },
							drop: function(event,ui) { $('select#'+$(this).parents('.col:first').attr('data-id')).append(UI.Admin.RuleBuilder.Options.Markup.And.Data(ui.draggable.attr('data-type')+'::')); UI.Admin.RuleBuilder.Cleanup(); }
							});														
					},
					Markup: {
						Requirement: {
							Item : function(r,reqActiveClass,rID) { return '<li[[REQACTIVE]] data-id="[[REQID]]"><span class="effects requirement-item"><em class="arrow"></em><a href="#" class="btn-del"></a>Requirement [[REQCOUNT]]</span></li>'.replace(/\[\[REQCOUNT\]\]/g,r).replace(/\[\[REQACTIVE\]\]/g,reqActiveClass).replace(/\[\[REQID\]\]/g,rID);},
							Add: '<li><a href="#" class="btn-add-item effects"><span>Add Requirement</span></a></li>',
							Data: '<fieldset></fieldset>'
						},
						Or: {
							Container : function(o,oID){ return '<div class="col" data-id="[[OPTID]]"><header class="heading-block effects"><a href="#" class="btn-close">close</a><h3><mark>OR</mark> REQUIREMENT OPTION [[OPTNUM]]</h3></header><div class="option-block effects"><div class="width-fix-wrapper"><div class=" width-fix opt-con"></div></div></div></div>'.replace(/\[\[OPTNUM\]\]/g,o).replace(/\[\[OPTID\]\]/g,oID); },
							Divider : '<span class="divider-or">OR</span>',
							Add : '<div class="btn-holder effects"><a href="#" class="btn-blue effects addNewOR">+&#160; Add New OR Option</a></div>',
							Data : '<select multiple></select>'
						},
						And: {
							Container: function(name,action,value,id,callback) { 
								var newAnd = '<div class="option-group effects" data-id="[[ANDID]]"><div class="row"><h4>[[OPTNAME]]</h4><a href="#" class="btn-green small effects modify" data-callback="[[OPTCALLBACK]]">[[OPTACTION]]</a></div><div class="row">[[OPTVALUE]]</div></div>'.replace(/\[\[OPTNAME\]\]/g,name).replace(/\[\[OPTCALLBACK\]\]/g,callback).replace(/\[\[OPTACTION\]\]/g,action).replace(/\[\[ANDID\]\]/g,id); 							
								if (value != '') { newAnd = newAnd.replace(/\[\[OPTVALUE\]\]/g,'<a href="#" class="link">'+value+'</a>'); } else { newAnd = newAnd.replace(/\[\[OPTVALUE\]\]/g,'Choose Value'); }
								return newAnd;
								},						
							Divider : '<span class="divider">&</span>',
							Add : '<div class="btn-add-item effects"><span>Add</span></div>',
							Data : function(v){ return '<option selected value="[[OPTVALUE]]"></option>'.replace(/\[\[OPTVALUE\]\]/g,v); }
						},
						Option: {
							Data:'',
							Markup: function(name,i){ return '<li><a href="#" class="drag-link [[OPTIONNAME-LC]]-link effects" data-type="[[OPTIONNAME-LC]]"><span class="decor"></span>[[OPTIONNAME]]</a></li>'.replace(/\[\[OPTIONNAME\]\]/g,name).replace(/\[\[OPTIONNAME-LC\]\]/g,i) },
							SetValue : function(callback,id){ alert(callback); },
							LoadData: function(viewType){
								var optionGroup = {
									Exam: {
										Name: 'Exam',
										Action: 'Browse Exams',
										Callback: 'BrowseExams'
										},
									TimeViewing: {
										Name: 'Time Viewing Training',
										Action: 'Edit Time',
										Callback: 'EditTimeViewing'
										},
									HasBadge: {
										Name: 'Earned Badge',
										Action: 'Select Badge',
										Callback: 'ChooseBadge'
										},
									HasPoints: {
										Name: 'Has Points',
										Action: 'Set Points',
										Callback: 'SetPoints'
										},
									HasCertification: {
										Name: 'Earned Certification',
										Action: 'Select Certification',
										Callback: 'ChooseCertification'
										},
									HasCareer: {
										Name: 'Earned Career',
										Action: 'Select Career',
										Callback: 'ChooseCareer'
										},
									}
								UI.Admin.RuleBuilder.Options.Markup.Option.Data = optionGroup;
								},
							LoadOptions: function(){							
								var data = UI.Admin.RuleBuilder.Options.Markup.Option.Data;
								for (i in data) {if (typeof(data[i])=="object") { $('.heading-tools ul').append(UI.Admin.RuleBuilder.Options.Markup.Option.Markup(data[i].Name,i));}}
								},
							Key: function(type){
								var name,action,callback;
								var data = UI.Admin.RuleBuilder.Options.Markup.Option.Data;
								for (i in data) {								      
									if (typeof(data[i])=="object" && i == type) {
										name = data[i].Name;
										action = data[i].Action;
										callback = data[i].Callback;
										}
									}
								return name+'::'+action+'::'+callback;	
								}
							},
						Toolbar :{
							Selector: function(){ return $('header.heading-tools'); },
							CSS : function() { var width = $('.heading-tools').width()+'px'; var css = {'position' : 'fixed', 'top' : '-2px','width': width,'z-index':'9999'}; return css; },
							Offset: '',
							Height: '',
							}	
						}
					},
				Init: function(){				
					UI.Admin.RuleBuilder.Options.Markup.Option.LoadData();
					UI.Admin.RuleBuilder.Options.Markup.Option.LoadOptions();
					UI.Admin.RuleBuilder.Options.Markup.Toolbar.Offset = UI.Admin.RuleBuilder.Options.Markup.Toolbar.Selector().offset();
					$(window).bind("scroll", function(){
						var toolBar = $('header.heading-tools');
						var toolHeading = $('header.requirements-heading');
						var toolsOffset = UI.Admin.RuleBuilder.Options.Markup.Toolbar.Offset;					
						UI.Admin.RuleBuilder.Options.Markup.Toolbar.Height =  UI.Admin.RuleBuilder.Options.Markup.Toolbar.Selector().height();
						var toolsHeight = UI.Admin.RuleBuilder.Options.Markup.Toolbar.Height;
						var scrollOffset = $(window).scrollTop();
						var toolsCSS = UI.Admin.RuleBuilder.Options.Markup.Toolbar.CSS();
						if (scrollOffset > toolsOffset.top) { toolHeading.css('margin-bottom',(toolsHeight+21)+'px'); toolBar.css(toolsCSS); }
						else { toolHeading.css('margin-bottom','21px'); toolBar.attr('style',''); }	
						});				
					$('.addNewOR').live('click',function(){
						$('.requirements-data form fieldset.active').append(UI.Admin.RuleBuilder.Options.Markup.Or.Data);
						UI.Admin.RuleBuilder.Cleanup();
						return false;
						});
					$('.requirements-builder .col .btn-close').live('click',function(){
						var oID = $(this).parents('.col:first').attr('data-id');
						$('.requirements-data form fieldset.active select#'+oID).remove();
						UI.Admin.RuleBuilder.Cleanup();
						return false;														
						});
					$('.requirements-tools #tools-box li span.requirement-item, .requirements-tools #tools-box li a').live('click',function(){
						if ($(this).hasClass('btn-del')) { 
							$('.requirements-data form fieldset#'+$(this).parents('li:first').attr('data-id')).remove();
							}
						else if ($(this).hasClass('btn-add-item')) { 
							$('.requirements-data form').append(UI.Admin.RuleBuilder.Options.Markup.Requirement.Data);
							}						
						else { 
							$('.requirements-data form fieldset').removeClass('active');
							$('.requirements-data form fieldset#'+$(this).parents('li:first').attr('data-id')).addClass('active');
							}
						UI.Admin.RuleBuilder.Cleanup();
						return false;														
						});
					$('.option-group a.modify').live('click',function(){
						UI.Admin.RuleBuilder.Options.Markup.Option.SetValue($(this).attr('data-callback'));
						return false;
						});
					$('.tools-list a').live('click',function(){
						$('.tools-list a').removeClass('active');
						$(this).addClass('active');
						UI.Admin.RuleBuilder.Cleanup();
						return false;
						});
					$('.btn-export').live('click',function(){
						alert($('form#requirement').serialize());
						return false;
						});
					UI.Admin.RuleBuilder.Cleanup();
					},
				Cleanup: function(){
					if ($('.tools-list a.active').hasClass('horizontal')) { $('.options').addClass('options-horizontal'); }
					else if ($('.tools-list a.active').hasClass('vertical')) {$('.options').removeClass('options-horizontal');}
					
					$('.options-holder, #tools-box').empty();
					var r = 1, o, a, type, name, action, value;				
					var reqCount = $('.requirements-data fieldset').length;
					if (!$('.requirements-data fieldset.active').length) { $('.requirements-data fieldset:first').addClass('active'); }
					$('.requirements-data fieldset').each(function(){ 
						var reqActiveClass = '', current = false, _this = $(this), rID = 'r'+r;
						if ($(_this).hasClass('active')) { current = true; }
						if (current) { reqActiveClass = ' class="active"'; $('.requirements-heading mark span').text(r); }					
						$('#tools-box').append(UI.Admin.RuleBuilder.Options.Markup.Requirement.Item(r,reqActiveClass,rID));					
						_this.find('select').attr('multiple','multiple').find('option').attr('selected','selected');
						_this.attr('id',rID);
						_this.attr('name',rID);
						o = 1; 
						var optCount = $(_this).find('select').length;
						$(_this).find('select').each(function(){
							var oID = rID+'o'+o, _this = $(this);
							_this.attr('id',oID);
							_this.attr('name',oID);							
							a = 1;
							var andCount = $(_this).find('option').length;
							var container = UI.Admin.RuleBuilder.Options.Markup.Or.Container(o,oID);
							if (current){ 
								$('.options-holder').append(container);																				
								if (o < optCount) { $('.options-holder').append(UI.Admin.RuleBuilder.Options.Markup.Or.Divider); }
								}
							$(_this).find('option').each(function(){
								var aID = oID+'a'+a, _this = $(this);							
								_this.attr('id',aID);
								_this.attr('name',aID);
								if (current){ 
									type = $(_this).val().split('::')[0];
									key = UI.Admin.RuleBuilder.Options.Markup.Option.Key(type).split('::');
									name = key[0];
									action = key[1];
									aCallback = key[2];
									value = $(_this).text();
									$('*[data-id='+oID+'] .opt-con').append(UI.Admin.RuleBuilder.Options.Markup.And.Container(name,action,value,aID,aCallback));	 
									if (a < andCount) { $('*[data-id='+oID+'] .opt-con').append(UI.Admin.RuleBuilder.Options.Markup.And.Divider); }
									}
								a++;
								});
							if (current){ 
								$('*[data-id='+oID+'] .opt-con').append(UI.Admin.RuleBuilder.Options.Markup.And.Add);
								}
							o++;
							});
						r++;
						});
					$('#tools-box').append(UI.Admin.RuleBuilder.Options.Markup.Requirement.Add);
					if (reqCount) { $('.options-holder').append(UI.Admin.RuleBuilder.Options.Markup.Or.Add); }
					UI.Admin.RuleBuilder.Options.Behavior();
					}
				},
			Popup: {
	            isFound: function(){return true;},
				Options: {
					Markup : '<div class="popup" id="ajax-popup" style="display: none;"><div class="holder"><div class="frame"><div class="text-holder"></div><div class="btn-holder"></div></div></div></div>'
					},
				Init: function(){if (!$('#ajax-popup').length) {$('body').append(this.Options.Markup);}},
				Show: function (callback) {
	                var currentScroll = window.pageYOffset,popupStyle;
	                if (currentScroll < 168) { currentScroll = 0; }
					popupStyle = {
					    'position': 'absolute',
					    'top': currentScroll + 90,
					    'left': ($(window).width() - $('#ajax-popup').width()) / 2,
					    'z-index': 99999999
						}
	                $('#ajax-popup').css(popupStyle).show().find('.text-holder').empty().next('.btn-holder').empty();
	                $(window).bind('resize', function () {
	                    var centeredOffset = ($(window).width() - $('#ajax-popup').width()) / 2;
	                    $('#ajax-popup').css('left', centeredOffset);
	                });
					//UI.Common.ConsoleLog(callback);
					GlobalUtil.ExecuteFunctionByName(callback, window);
	            },
	            Hide: function (clear) {
	                $('#ajax-popup').hide();
					if (clear) { $('.popup').find('.text-holder *, .btn-holder *').remove(); }
	            }
	        },
			LessonCompleter: {
				Options: {
					acCollector : function(){ return $('.acLessonCollector'); },
					acFilter : function(){ return $('.acLessonCollector .acFilter'); },
                    filterBox : function(){ return UI.Admin.LessonCompleter.Options.acCollector().find('.search-drop'); },
					isFilterActive: false
					},
				isFound: function(){ return $('.acLessonCollector').length; },
				Init: function(){					
					UI.Admin.LessonCompleter.Options.acFilter().live('keyup focus',function(e){		
                        UI.Admin.LessonCompleter.PopulateLessons();
                        return false;
						});
                    $('*:not(.acLessonObject)').live('click',function(){
                        if (UI.Admin.LessonCompleter.Options.filterBox().is(":visible") == true && UI.Admin.LessonCompleter.isFound()) {
                            UI.Admin.LessonCompleter.Options.isfilterActive = false;  
                            UI.Admin.LessonCompleter.Cleanup();                            
                            }
                            //return false;                        
                        });
					UI.Admin.LessonCompleter.Options.acCollector().find('.text:first').live('click',function(){
						UI.Admin.LessonCompleter.Options.acFilter().focus();
                        return false;
						});
					$('#acLessonsContainer a.lessonli').live('click',function(){   
                        UI.Admin.LessonCompleter.Options.isfilterActive = true;                    
						$('#acLessonsforDB').append('<option selected="selected" value="'+$(this).attr('data-id')+'">'+$(this).text()+'</option>');
						UI.Admin.LessonCompleter.Cleanup();
						return false;
						});
                    $('#LessonCollection').live('sortdeactivate',function(){
                        $("#acLessonsforDB").empty();
                        var i = 0;
                        //var optionArr = new Array();
                        $('#LessonCollection .btn-list').each( function(){
                            $('#acLessonsforDB').append('<option selected="selected" value="'+$(this).attr('href')+'">'+$(this).attr('ref')+'</option>');
                            });

                        UI.Admin.LessonCompleter.Cleanup();
                        });
					$('#LessonCollection a.btn-del').live('click',function(){
						var _this = $(this);
						$('#acLessonsforDB option').each(function(){
							if ($(this).val() == _this.attr('href')) { $(this).remove(); } 
                            $('#LessonCollection .' + _this.attr('href')).remove();
							});
                        UI.Admin.LessonCompleter.PopulateLessons();
						UI.Admin.LessonCompleter.Cleanup();
						return false;
						});
                    UI.Admin.LessonCompleter.Cleanup();
					},
                PopulateLessons: function(){
                    var _value = UI.Admin.LessonCompleter.Options.acFilter().val();
                    if (_value != UI.Admin.LessonCompleter.Options.acFilter().attr('title')) {
					    if (_value.length == 1) {
                            UI.Admin.LessonCompleter.Options.isfilterActive = true;
						    UI.Admin.LessonCompleter.LoadLessons(_value);	
                            return false;					        
						    }
					    else if (_value.length > 1) {                                                        
						    UI.Admin.LessonCompleter.Options.isfilterActive = true;
                            if (jQuery.parseJSON($("#acFirstLetterLessonResults").val()) == null) { 
                                UI.Admin.LessonCompleter.LoadLessons(_value);  
                                return false;                                   
                                }
                            var parsed = jQuery.parseJSON($("#acFirstLetterLessonResults").val());                                
                            var filteredResults = $.grep(parsed, function(el, i) {
                                if (JSON.stringify(el.Name.toLowerCase()).indexOf(_value.toLowerCase()) != -1) { return true; }
                                else { return false; }
                                });
                            $("#acLessonsforFilter").val(JSON.stringify(filteredResults));
                            $("#acLessonsContainer").empty();
                            $("#acLessonsTemplate").tmpl(filteredResults).appendTo("#acLessonsContainer");
                            UI.Admin.LessonCompleter.Cleanup();
						    }
					    else {
						    UI.Admin.LessonCompleter.Options.isfilterActive = false;
                            UI.Admin.LessonCompleter.Cleanup();
						    }	                         
                        } 			
                    },
                ReorderResults: function(){
                    var ul = $('#LessonCollection');
                    var li = ul.children("li");

                    li.detach().sort(function(a, b) {
                        var indexA = $("#acLessonsforDB").children().index($('#acLessonsforDB option[value="'+a.classList[0]+'"]'))
                        var indexB = $("#acLessonsforDB").children().index($('#acLessonsforDB option[value="'+b.classList[0]+'"]'))
                        return indexA > indexB ? 1 : -1;
                        });
                    ul.append(li);

                    },
				Cleanup: function(){ 
                    UI.Admin.LessonCompleter.FilterForExistingLessons();
					UI.Admin.LessonCompleter.Options.acCollector().find('header h3 span').text('"'+ UI.Admin.LessonCompleter.Options.acFilter().val() +'"');
                    var i = 1;
                    $('#LessonCollection li').remove();
                    $('.sortable').sortable('destroy');
					$('#acLessonsforDB option').each(function(){
                        if ($('#LessonCollection .'+$(this).val()).length == 0) {
                            $('#LessonCollection').append('<li class="'+$(this).val()+'"><div class="holder effects"><div class="options-lessons"><a href="/Admin/Content/LessonDetails/'+$(this).val()+'/edit" class="btn-edit effects">EDIT</a><a href="'+$(this).val()+'" class="btn-del effects">X</a><a href="'+$(this).val()+'" ref="'+$(this).text()+'" class="btn-list"></a></div><strong class="number">' + i + '</strong><p>' + $(this).text() + '</p></div></li>');
							}
                        i++;								   
						});			
					UI.Admin.LessonCompleter.Options.acCollector().css('overflow','visible');
					var filterBox = UI.Admin.LessonCompleter.Options.acCollector().find('.search-drop');
					filterBox.css({'top' : ($('.acLessonCollector .text').height() - 2)+'px', 'z-index':999});
					if (UI.Admin.LessonCompleter.Options.isfilterActive) { filterBox.show(); }
					else { filterBox.hide(); }
                    initSortableList();
                    return false;
					},                    
                FilterForExistingLessons: function(){
                    if (UI.Admin.LessonCompleter.Options.acFilter().val().length) {
                        var filteredResults = jQuery.parseJSON($("#acLessonsforFilter").val());  	                              
                        filteredResults = $.grep(filteredResults, function(el, i) {
                            if ($('#acLessonsforDB option[value="'+el.LessonId+'"]').length) {  
                                return false;
                                }
                            else { 
                                return true;
                                }
                            });                        
                        $("#acLessonsforFilter").val(JSON.stringify(filteredResults));
                        $("#acLessonsContainer").empty();
                        $("#acLessonsTemplate").tmpl(filteredResults).appendTo("#acLessonsContainer");
                        }
                    },
				LoadLessons: function (LessonBeginning) {
					var LessonCompleterQuery = $.dataSource({
						serviceUrl: UI.Common.Service.Url,
						queryName: "GetLessonsByLessonName",
						queryParameters: {"lessonBeginning" : LessonBeginning}
					}).options({
						refresh: function (data) {							                            
                            $("#acLessonsforFilter").val(JSON.stringify(data));
                            $("#acFirstLetterLessonResults").val(JSON.stringify(data));
                            $("#acLessonsContainer").empty();
                            $("#acLessonsTemplate").tmpl(data).appendTo("#acLessonsContainer");
							UI.Admin.LessonCompleter.Cleanup();
                            //return false;
							}
						});
					LessonCompleterQuery.refresh();                    
					},									
				},			
			FileBrowser: {
				isFound: function(){ return $(".fileBrowser").length; },
				Options: {
					QueryOptions: function(type){
						var fileBrowser = $('.fileBrowser');
						if (fileBrowser.hasClass('badges')) {
							var fileType = 'image';
							var filePath = 'BadgeContent';
							}
						else if (fileBrowser.hasClass('lesson-content')) {
							var fileType = 'all';
							var filePath = 'CourseInformation';
							}
						else if (fileBrowser.hasClass('certification-exam')) {
							var fileType = 'xml';
							var filePath = 'TranscenderExams';
							}
                        else if (fileBrowser.hasClass('bulk-upload')) {
							var fileType = 'directory';
							var filePath = 'CourseInformation';
							}
						else {
							var fileType = 'all';
							var filePath = '';							
							}
						switch (type){
							case 'path': return filePath; break;
                            case 'depth' : return fileDepth; break;
							default: return fileType; break;
							}
						},
					RootPath:'RaptorContent\\',
					ServiceOptions: function(){
						var queryParams = UI.Admin.FileBrowser.Options.QueryOptions();
						var folder = UI.Admin.FileBrowser.Options.QueryOptions('path');
						var fbOptions = {
							root: UI.Admin.FileBrowser.Options.RootPath + folder, 
							script: '/FileBrowse/FileBrowseServerConnector?type='+queryParams, 
							folderEvent: 'click', 
							expandSpeed: 750, 
							collapseSpeed: 750, 
							multiFolder: true}
						return fbOptions;
						}
					},
				Init: function(){
					UI.Admin.FileBrowser.BuildFileBrowser();					
					UI.Admin.FileBrowser.Cleanup();
					},
				Cleanup: function(){
					var selectedFile = $('input:hidden#fileBrowserSelectedFile');
					var selectedFileOutput = $('.fileBrowserSelection span');
					if (selectedFile.val() != '') { 
						selectedFileOutput.text(selectedFile.val()); 
                        if (selectedFile.val().indexOf(".") == -1) {
                            selectedFileOutput.attr('class','code-200');
                            }
                        else {
						    selectedFileOutput.attr('class','code-200');
                            }
						}
					else { selectedFileOutput.text('No file selected...yet!').removeAttr('class'); }																
					},
				BuildFileBrowser: function(path){
					$('#fileBrowserBrowser').fileTree(UI.Admin.FileBrowser.Options.ServiceOptions(),function (file) { $('input:hidden#fileBrowserSelectedFile').val( file.replace(file.substring(0, file.lastIndexOf('RaptorContent/') + 14), '').replace('\\','/')); UI.Admin.FileBrowser.Cleanup(); });					
					},					
				},		 
		TagCloudCheckList : {
			isFound : function(){ return $('.temp-tag-check-cloud').length; },
			Options : {
				CreateNewTag : function(name,type){
					$.ajax({
						type: "POST",
						url: UI.Common.Service.Url()+'/Tag/Add?TagTypeId='+type+'&TagTitle='+name,
						contentType: "application/json; charset=utf-8",
						success : function(data){
                            data = GlobalUtil.MakeObject(data);
							$('.temp-tag-check-cloud ul[data-id="'+type+'"]').append('<li><label for="tag'+data.TagId+'">'+name+'</label><div class="checkboxArea"></div><input type="checkbox" value="'+data.TagId+'" name="tag'+data.TagId+'" id="tag'+data.TagId+'" class="outtaHere"></li>');
							return data.TagId;
							},
						error : function(){
							return false;
							}	
						});					
					}
				},
			Init : function(){
				$('.temp-tag-check-cloud li').live('mouseover mouseout',function(e){
					var _this = $(this);
					if (e.type == 'mouseover') { _this.addClass('hover'); }	 
					else { _this.removeClass('hover'); }	 
					});
				$('.temp-tag-check-cloud li input').live('change',function(e){
					UI.Admin.TagCloudCheckList.Cleanup();	 
					});				
				$('.temp-create-new-tag').live('click',function(){
					var _this = $(this),type,name,newTag;
					type = _this.parents('ul:first').attr('data-id');
					name = prompt("Please enter the new tag name:","");
					if (name != null && name != "") {
						newTag = UI.Admin.TagCloudCheckList.Options.CreateNewTag(name,type);
						}
					return false;
					});
				UI.Admin.TagCloudCheckList.Cleanup();	
				},
			Cleanup : function(){
				$('.temp-tag-check-cloud li').each(function(){
					var _this = $(this);
					if (_this.find('input:checked').length) { _this.addClass('focus'); }	
					else { _this.removeClass('focus'); }
					});
				}
			},
		TagCompleter: {
				isFound: function(){ return $('.acTagCollector').length; },
				Options: {
					acCollector : function(){ return $('.acTagCollector'); },
					acFilter : function(){ return $('.acTagCollector .acFilter'); },
                    filterBox : function(){ return UI.Admin.TagCompleter.Options.acCollector().find('.search-drop'); },
					isFilterActive: false
					},
				Init: function(){					
					$('span.tag-item a').live('hover',function(){
						if ($(this).parent().hasClass('delete')) { $(this).parent().removeClass('delete'); }
						else { $(this).parent().addClass('delete'); }					
						});
					UI.Admin.TagCompleter.Options.acFilter().live('keyup focus',function(e){		
                        UI.Admin.TagCompleter.PopulateTags();
                        return false;
						});
                    $('*:not(.tag-area)').live('click',function(){
                        if (UI.Admin.TagCompleter.Options.filterBox().is(":visible") && UI.Admin.TagCompleter.isFound()) {
                            UI.Admin.TagCompleter.Options.isfilterActive = false;  
                            UI.Admin.TagCompleter.Cleanup();                            
                            }
                            //return false;                        
                        });
					UI.Admin.TagCompleter.Options.acCollector().find('.text').live('click',function(){
						UI.Admin.TagCompleter.Options.acFilter().focus();
						});
					$('#acTagsContainer a.tagli').live('click',function(){   
                        UI.Admin.TagCompleter.Options.isfilterActive = true;                    
						$('#acTagsforDB').append('<option selected="selected" value="'+$(this).attr('href')+'">'+$(this).text()+'</option>');
						UI.Admin.TagCompleter.Cleanup();
						return false;
						});
					$('#tagCollection .tag-item a.btn-del').live('click',function(){
						var _this = $(this);
						$('#acTagsforDB option').each(function(){
							if ($(this).val() == _this.attr('href')) { $(this).remove(); } 
							_this.parent('span.tag-item').remove();
							});
                        UI.Admin.TagCompleter.PopulateTags();
						UI.Admin.TagCompleter.Cleanup();
						return false;
						});
                    UI.Admin.TagCompleter.Cleanup();
					},
                PopulateTags: function(){
                    var _value = UI.Admin.TagCompleter.Options.acFilter().val();
                    if (_value != UI.Admin.TagCompleter.Options.acFilter().attr('title')) {
					    if (_value.length == 1) {
                            UI.Admin.TagCompleter.Options.isfilterActive = true;
						    UI.Admin.TagCompleter.LoadTags(_value);	
                            return false;					        
						    }
					    else if (_value.length > 1) {                                                        
						    UI.Admin.TagCompleter.Options.isfilterActive = true;
                            if (jQuery.parseJSON($("#acFirstLetterTagResults").val()) == null) { 
                                UI.Admin.TagCompleter.LoadTags(_value);  
                                return false;                                   
                                }
                            var parsed = jQuery.parseJSON($("#acFirstLetterTagResults").val());                                
                            var filteredResults = $.grep(parsed, function(el, i) {
                                if (JSON.stringify(el.DisplayName.toLowerCase()).indexOf(_value.toLowerCase()) != -1) { return true; }
                                else { return false; }
                                });
                            $("#acTagsforFilter").val(JSON.stringify(filteredResults));
                            $("#acTagsContainer").empty();
                            $("#acTagsTemplate").tmpl(filteredResults).appendTo("#acTagsContainer");
                            UI.Admin.TagCompleter.Cleanup();
						    }
					    else {
						    UI.Admin.TagCompleter.Options.isfilterActive = false;
                            UI.Admin.TagCompleter.Cleanup();
						    }	                         
                        } 			
                    },
				Cleanup: function(){ 
                    UI.Admin.TagCompleter.FilterForExistingTags();
					UI.Admin.TagCompleter.Options.acCollector().find('header h3 span').text('"'+ UI.Admin.TagCompleter.Options.acFilter().val() +'"');
					$('#acTagsforDB option').each(function(){
						//if ($(this).is(':selected') && $('#tagCollection .'+$(this).val()).length == 0) {
                        if ($('#tagCollection .'+$(this).val()).length == 0) {
							$('#tagCollection').append('<span class="tag-item '+$(this).val()+'"><span class="tag-name">' + $(this).text() + '</span><a href="'+$(this).val()+'" class="btn-del"></a></span>');	
							}								   
						});			
					UI.Admin.TagCompleter.Options.acCollector().css('overflow','visible');
					
					var filterBox = UI.Admin.TagCompleter.Options.acCollector().find('.search-drop');					
					var tagContainerHeight = $('div.acTagObject').height();
					filterBox.css('top', (parseInt(tagContainerHeight, 10)) + 'px');															
					filterBox.css({'top' : ($('.acTagCollector .text').height() - 2)+'px', 'z-index':999});
					if (UI.Admin.TagCompleter.Options.isfilterActive) { filterBox.show(); }
					else { filterBox.hide(); }
					if (filterBox.is(':visible')) {
						$('div.acTagObject').css('padding-bottom', '5px');
						}                    
					return false;
					},                    
                FilterForExistingTags: function(){
                    if (UI.Admin.TagCompleter.Options.acFilter().val().length) {
                        var filteredResults = jQuery.parseJSON($("#acTagsforFilter").val());  	                              
                        filteredResults = $.grep(filteredResults, function(el, i) {
                            if ($('#acTagsforDB option[value="'+el.FriendlyName+'"]').length) {  
                                return false;
                                }
                            else { 
                                return true;
                                }
                            });                        
                        $("#acTagsforFilter").val(JSON.stringify(filteredResults));
                        $("#acTagsContainer").empty();
                        $("#acTagsTemplate").tmpl(filteredResults).appendTo("#acTagsContainer");
                        }
                    },
				LoadTags: function (tagBeginning) {
					var tagCompleterQuery = $.dataSource({
						serviceUrl: UI.Common.Service.Url,
						queryName: "GetTagsByTagName",
						queryParameters: {"tagBeginning" : tagBeginning}
					}).options({
						refresh: function (data) {							                            
                            $("#acTagsforFilter").val(JSON.stringify(data));
                            $("#acFirstLetterTagResults").val(JSON.stringify(data));
                            $("#acTagsContainer").empty();
                            $("#acTagsTemplate").tmpl(data).appendTo("#acTagsContainer");
							UI.Admin.TagCompleter.Cleanup();
                            //return false;
							}
						});
					tagCompleterQuery.refresh();                    
					},									
				},		 
			TagEditor: {				
				isFound: function () { return $(".tags-form").length; },				
				Options: {
					animSpeed: 500,
					editingText: 'EDITING',
					editingTextDef: 'EDIT',
					objTagEditor: function() { return $('.tags-form'); },
					objTagList: function() { return $('.tags-form .sortable'); },			
					objTagEditForm: function() { 
						if ($('#propertiesBox-wrapper').length) { return $('.tags-form #propertiesBox-wrapper'); }
						else { return $('.tags-form .properties'); }
						}
					},		
				Init: function () {		
					var editForm = UI.Admin.TagEditor.Options.objTagEditForm();
					editForm.wrap('<div id="propertiesBox-wrapper" style="float: right; width: 0; overflow: hidden; position: relative; display: none;"></div>');
					editForm.find('.btn-delete-tag').live('click',function(){ 
						alert('Clicked Delete Tag Button in Edit Form'); 
						UI.Admin.TagEditor.Cleanup(true);
						return false; 
						});
					editForm.find('.btn-save').live('click',function(){ 
						alert('Clicked Save Tag Button in Edit Form'); 
						UI.Admin.TagEditor.Cleanup(true);
						return false; 				
						});
					editForm.find('.btn-cansel').live('click',function(){ 
						//alert('Clicked Cancel Button in Edit Form'); 
						UI.Admin.TagEditor.Options.objTagEditForm().animate({width:'0px'},function(){ $(this).hide() });
						$('#tagContainer li').removeClass('active');
						UI.Admin.TagEditor.Cleanup(true);
						return false;
						});
						
					var tagItem = UI.Admin.TagEditor.Options.objTagList().find('li');			
					tagItem.find('.btn-edit').live('click',function(){ 
						//alert('Clicked Edit Button'); 
						var li = $(this).parents('li:first');
						var id = li.attr('data-id');
						var type = li.attr('data-type');
						$('#tagContainer li').removeClass('active');
						li.addClass('active');
						$('#ActiveTagTitle').val(li.find('.tag-name-paragraph').text());
						$('#selectTagType option').removeAttr("selected");
						$("#selectTagType option[value='"+type+"']").attr("selected", "selected");
						UI.Admin.TagEditor.Options.objTagEditForm().show().animate({width:'466px'});
						//UI.Admin.TagEditor.Cleanup();
						return false; 
						});
					tagItem.find('.btn-del').live('click',function(){ alert('Clicked Delete Button'); return false; });			
					
					$('.btn-create-item').live('click',function(){ alert('Add New Tag Button Clicked'); return false; });
					$('#tagTypeContainer input:checkbox').live('change',function(){ UI.Admin.TagEditor.TagTypeList.Cleanup(); });
					UI.Admin.TagEditor.LoadTagTypes();
				},
				Cleanup: function(clearAll) {
					var _tags = UI.Admin.TagEditor.Options.objTagList().find('li.active'), _this = _tags.hasClass('active');
					if (clearAll) { _this.removeClass('active');}										
					if (_this.length) {
						UI.Admin.TagEditor.Options.activeTagID = activeTag.attr('data-id');
						activeTag.find('.btn-edit').text(UI.Admin.TagEditor.Options.editingText);
						$('input#ActiveTagTitle').val();
						UI.Admin.TagEditor.TagEditForm.Show();
						}			
					else {
						UI.Admin.TagEditor.TagEditForm.Hide();
						}
					_tags.each(function(){
						if (!$(this).hasClass('active')) { $(this).find('.btn-edit').text(UI.Admin.TagEditor.Options.editingTextDef); }		   
						});
					$('#tagTypeContainer li:first').append('<span class="check"></span>');
					UI.Admin.TagEditor.TagTypeList.Cleanup();
					UI.Common.Form.RadioCheck.Cleanup();											
					UI.Admin.TagEditor.LoadTags();
					},
				TagEditForm: {
					Show: function(){ UI.Admin.TagEditor.Options.objTagEditForm().show().animate({ width: '476px' }, { queue: false, duration: UI.Admin.TagEditor.Options.animSpeed }); },
					Hide: function(){ UI.Admin.TagEditor.Options.objTagEditForm().animate({ width: '0px' }, { queue: false, duration: UI.Admin.TagEditor.Options.animSpeed,complete: function(){ $(this).hide(); } });}
					},
				TagTypeList: {
					Cleanup: function(){						
						if ($('#tagTypeContainer input:checkbox:checked').length == $('#tagTypeContainer input:checkbox').length) { $('.check-list .btn-select').text('All'); }
						else if ($('#tagTypeContainer input:checkbox:checked').length == 0) { $('.check-list .btn-select').text('None'); }
						else {
							var tagTypeCount = 0;
							$('#tagTypeContainer input:checkbox:checked').each(function(){ tagTypeCount++; });
							$('.check-list .btn-select').text(tagTypeCount+' Types');
							}
						}
					},				
				LoadTagTypes: function () {
					$.ajax({
						type: "Get",
						url: UI.Common.Service.Url()+'/tagtype/get',
						contentType: "application/json; charset=utf-8",
						success : function(data){
							data = GlobalUtil.MakeObject(data);						
							$.each(data.DataCollection, function(i, result) {
								$("#tagTypeContainer").append('<li><input type="checkbox" name="TagTypeList" id="TagTypeId_'+result.Id+'" value="'+result.Id+'}" checked="checked" /><label for="TagTypeId_'+result.Id+'">'+result.Name+'</label></li>');
								$("#selectTagType").append('<option value="'+result.Id+'">'+result.Name+'</option> ');
								});
							UI.Admin.TagEditor.Cleanup(); 
							}
						});					
					},					
				LoadTags: function (type,sort) {    
					//$("#tagContainer").empty();
					$.ajax({
						type: "Get",
						url: UI.Common.Service.Url()+'/Tag/Get',
						contentType: "application/json; charset=utf-8",
						data: { take: -1, tagtypeid: (type != null ? type : 0) },
						success : function(data){
							data = GlobalUtil.MakeObject(data);
							$.each(data.DataCollection, function(i, result) {
								var count = (result.TotalCourses*1)+(result.TotalCertifications*1)+(result.TotalCareers*1)+(result.TotalDiscussions*1);
								$("#tagContainer").append('<li data-id="'+result.TagId+'" data-type="'+result.TagTypeId+'"><div class="holder effects"><div class="options-lessons"><a href="#" class="btn-edit effects">EDIT</a><a href="#" class="btn-del">X</a><a href="#" class="btn-list"></a></div><p class="tag-name-paragraph">'+result.DisplayName+'</p><span class="label-green effects"><span>'+count+'</span></span></div></li>');
								});							
							}
						});					
					},				
			},		
	        CertificationExams : {
				isFound : function(){ return $('.cert-exam-mgmt').length; },
				Options : {
					ExamToManage : 0,
					CourseToManage : 0,
					Courses : {},
					Exams : {},
					Markup : {
						LinkingModuleClass : 'exam-course-link',
						LinkingModuleContentClass : 'exam-course-link-items',
						LinkingModuleControlsClass : 'exam-course-link-controls',
						LinkingModule : function() { 
							var examID = UI.Admin.CertificationExams.Options.ExamToManage,
								containerClass = UI.Admin.CertificationExams.Options.Markup.LinkingModuleClass,
								controlClass = UI.Admin.CertificationExams.Options.Markup.LinkingModuleControlsClass
								contentClass = UI.Admin.CertificationExams.Options.Markup.LinkingModuleContentClass;
							return 	'<tr data-id="'+examID+'" data-type="CertificationExamLink">'+
										'<td style="padding: 0;" colspan="'+$('.datagrid tbody tr:first td').length+'">'+
											'<div class="'+containerClass+'">'+
												'<div class="tool-tip-point"></div>'+
												'<div class="'+controlClass+'">'+
													'<a href="#" class="effects btn-green add-link-course">Link New Course</a>'+
													'<a class="effects btn-blue course-exam-refresh" href="#">Refresh</a>'+
													'<a href="#" class="effects btn-red cancel-link-course">Done Linking</a>'+
												'</div>'+
												'<div class="'+contentClass+'"><ul></ul></div>'+
											'</div>'+
										'</td>'+
									'</tr>'; 
							},
						LinkingItem : function(empty,course,exam,itemTitle,percent){
							if (!empty) { return '<li course-id="'+course+'" exam-id="'+exam+'" data-type="CourseExamLink"><span class="item-title">'+itemTitle+'</span> '+UI.Admin.CertificationExams.Options.GetCourseLinkOptions(course,exam,percent)+'</li>'; }
							else { 
								if ($('.cert-exam-mgmt.exam-to-course').length) { return '<li class="no-data">No Courses are currently linked with this Certification Exam. <a href="#" class="add-link-course">Link New Course</a></li>'; }
								else { return '<li class="no-data">No Exams are currently linked with this Course. <a href="#" class="add-link-course">Link New Exam</a></li>'; }	  											
								}
							},	
						LinkingModuleOptionsValues : [0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100],											
						},
					ShowCourseLinkView : function(){
						var examContainer = $('*[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExam"]');							
						if (!$('*[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExamLink"]').length) {
							examContainer.after(UI.Admin.CertificationExams.Options.Markup.LinkingModule());
							$('tr[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExamLink"] td:first');
							UI.Admin.CertificationExams.Options.LoadLinkedCourses();
							}
						},
					HideCourseLinkView : function(){
						$('*[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExamLink"]').remove();
						},						
					AddCourseLink: function(){
						var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder'),courses = UI.Admin.CertificationExams.Options.Courses,courseMarkup='';
						$.each(courses, function(i, course) {
							if (!$('*[course-id="'+course.Id+'"][exam-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"]').length) {
							courseMarkup += '<tr valign="center"><td width="30" align="center"><input type="radio" name="course-to-load" id="course-to-load_'+course.Id+'" value="'+course.Id+'" /></td><td align="left"><label for="course-to-load_'+course.Id+'">'+course.Name+'</label></td></tr>';
							}
							});
						_popup.find('.frame').css('padding','10px 10px 15px 10px').find('.text-holder').css('padding','0px 20px 20px 20px');
						_body.append('<div style="width: 100%; max-height: 250px;" class="raptor-scroll"><table cellpadding="3" cellspacing="0" width="100%" style="font-size: 14px;" id="load-template-container"><thead><tr><th colspan="2" align="left">Name</th></tr></thead><tbody>'+courseMarkup+'</tbody></table></div>');							
						_buttons.append('<a href="#" class="btn-gray effects cancel-load-templates">Cancel</a><a href="#" class="btn-blue effects load-load-templates">Link Selected Course</a>');
						$('#load-template-container').find('th').css('border-bottom','1px solid #ccc');
						$('#load-template-container').find('tr:odd td').css('background-color','#f6f6f6');
						UI.Common.Form.RadioCheck.Cleanup();
						$('#load-template-container').find('div[class^="radioArea"]').css('margin','0px 0px 0px 5px');
						$('.cancel-load-templates').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-load-templates,.load-load-templates').unbind(); return false; });											
						$('.load-load-templates').bind('click',function(){ 
							_body.find('.notification-bar').remove();
							if (!$('#load-template-container').find('input:checked').length) {
								_body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please select a course to link.</dd></dl></div>');							
								}
							else { 
								var container = $('tr[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExamLink"] .'+UI.Admin.CertificationExams.Options.Markup.LinkingModuleContentClass+' ul'),courseID = $('input[name="course-to-load"]:checked').val(),courseName = $('input[name="course-to-load"]:checked').parents('td:first').next('td').text();
								if (container.find('li.no-data').length) { container.find('li.no-data').remove(); }
								//container.append('<li data-id="'+courseID+'" data-type="CourseExamLink"><span class="item-title">'+courseName+'</span> '+UI.Admin.CertificationExams.Options.GetCourseLinkOptions(courseID,0)+'</li>');
								container.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(false,courseID,UI.Admin.CertificationExams.Options.ExamToManage,courseName,0));
								$('select[id*="CourseExamPercent_"]').each(function(){ if (!$(this).hasClass('processed')) { $(this).addClass('processed').selectToUISlider({labels:6,labelSrc:"text"}); } });
								UI.Admin.Popup.Hide(true); 
								}							
							return false; 
							});																	
						UI.Common.jQuery.Scroll();																						
						},													
					AddExamLink: function(){
						var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder'),exams = UI.Admin.CertificationExams.Options.Exams,courseMarkup='';
						$.each(exams, function(i, exam) {
							if (!$('*[course-id="'+$('.course-to-exam').attr('data-id')+'"][exam-id="'+exam.Id+'"]').length) {
							courseMarkup += '<tr valign="center"><td width="30" align="center"><input type="radio" name="exam-to-load" id="exam-to-load_'+exam.Id+'" value="'+exam.Id+'" /></td><td align="left"><label for="exam-to-load_'+exam.Id+'">'+exam.Name+'</label></td></tr>';
							}
							});
						_popup.find('.frame').css('padding','10px 10px 15px 10px').find('.text-holder').css('padding','0px 20px 20px 20px');
						_body.append('<div style="width: 100%; max-height: 250px;" class="raptor-scroll"><table cellpadding="3" cellspacing="0" width="100%" style="font-size: 14px;" id="load-template-container"><thead><tr><th colspan="2" align="left">Name</th></tr></thead><tbody>'+courseMarkup+'</tbody></table></div>');							
						_buttons.append('<a href="#" class="btn-gray effects cancel-load-templates">Cancel</a><a href="#" class="btn-blue effects load-load-templates">Link Selected Exam</a>');
						$('#load-template-container').find('th').css('border-bottom','1px solid #ccc');
						$('#load-template-container').find('tr:odd td').css('background-color','#f6f6f6');
						UI.Common.Form.RadioCheck.Cleanup();
						$('#load-template-container').find('div[class^="radioArea"]').css('margin','0px 0px 0px 5px');
						$('.cancel-load-templates').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-load-templates,.load-load-templates').unbind(); return false; });											
						$('.load-load-templates').bind('click',function(){ 
							_body.find('.notification-bar').remove();
							if (!$('#load-template-container').find('input:checked').length) {
								_body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please select an exam to link.</dd></dl></div>');							
								}
							else { 
								var container = $('.'+UI.Admin.CertificationExams.Options.Markup.LinkingModuleContentClass+' ul'),examID = $('input[name="exam-to-load"]:checked').val(),examName = $('input[name="exam-to-load"]:checked').parents('td:first').next('td').text();
								if (container.find('li.no-data').length) { container.find('li.no-data').remove(); }
								//container.append('<li data-id="'+examID+'" data-type="CourseExamLink"><span class="item-title">'+examName+'</span> '+UI.Admin.CertificationExams.Options.GetCourseLinkOptions(examID,0)+'</li>');
								container.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(false,$('.course-to-exam').attr('data-id'),examID,examName,0));
								$('select[id*="CourseExamPercent_"]').each(function(){ if (!$(this).hasClass('processed')) { $(this).addClass('processed').selectToUISlider({labels:6,labelSrc:"text"}); } });
								UI.Admin.Popup.Hide(true); 
								}							
							return false; 
							});																	
						UI.Common.jQuery.Scroll();																						
						},													
					LoadAllCourses : function(){
						UI.Admin.CertificationExams.Options.Courses = {};
						$.ajax({
							type: "Get",
							url:  UI.Common.Service.Url()+'/Course/Get',
							data: { take: -1 },
                            contentType: "application/json; charset=utf-8",
							success: function (result) {
								result = GlobalUtil.MakeObject(result);
                                UI.Admin.CertificationExams.Options.Courses = result.DataCollection;								
								return true;
								},
							error:function(){ return false; }	
							});							
						},
					LoadAllExams : function(){
						UI.Admin.CertificationExams.Options.Exams = {};
						$.ajax({
							type: "Get",
							url: UI.Common.Service.Url() + '/CertificationExam/GetAllCertificationExamTitles',
							data: { take: -1 },
                            contentType: "application/json; charset=utf-8",
							success: function (result) {
                                result = GlobalUtil.MakeObject(result);
								UI.Admin.CertificationExams.Options.Exams = result.DataCollection;								
								return true;
								},
							error:function(){ return false; }	
							});							
						},
					LoadLinkedCourses : function(){
						$.ajax({
							type: "Get",
							url: UI.Common.Service.Url() + '/Course/GetCoursesByExam',
                            contentType: "application/json; charset=utf-8",
							data: { "certificationExamId" : UI.Admin.CertificationExams.Options.ExamToManage, "take" : -1 },
							success: function (result) {
								result = GlobalUtil.MakeObject(result);
                                var contentContainer = $('*[data-id="'+UI.Admin.CertificationExams.Options.ExamToManage+'"][data-type="CertificationExamLink"] .'+UI.Admin.CertificationExams.Options.Markup.LinkingModuleContentClass+' ul');
								contentContainer.empty();
								if (!$('link[rel="stylesheet"][href*="jquery-ui-1.7.1.custom.css"]').length) { $('head').append('<link media="screen" href="/Public/css/jquery-ui-1.7.1.custom.css" type="text/css" rel="stylesheet" />'); }										
								if (result.TotalRows > 0) {
									$.each(result.DataCollection, function(i, course) {						
										contentContainer.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(false,course.Id,UI.Admin.CertificationExams.Options.ExamToManage,course.Name,course.Percentage));
										});
									} 
								else {
									contentContainer.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(true));
									}
								$('select[id*="CourseExamPercent_"]').each(function(){ if (!$(this).hasClass('processed')) { $(this).addClass('processed').selectToUISlider({labels:6,labelSrc:"text"}); } });
								return true;
								},
							error:function(){ return false; }	
							});	
						},					
					LoadLinkedExams : function(){
						var courseId = $('.course-to-exam').attr('data-id'), contentContainer = $('*[data-id="'+courseId+'"][data-type="course"] .'+UI.Admin.CertificationExams.Options.Markup.LinkingModuleContentClass+' ul');
						$.ajax({
							type: "Get",
                            url: UI.Common.Service.Url() + '/Course/GetCertificationExams',
							data: { "courseid" : courseId, "take" : -1 },
                            contentType: "application/json; charset=utf-8",
							success: function (result) {
								result = GlobalUtil.MakeObject(result);
								contentContainer.empty();
								if (result.TotalRows > 0) {
									$.each(result.DataCollection, function(i, exam) {
										contentContainer.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(false,courseId,exam.Id,exam.Name,exam.Percentage));
										});
									}
								else {
									contentContainer.append(UI.Admin.CertificationExams.Options.Markup.LinkingItem(true));
									}
								$('select[id*="CourseExamPercent_"]').each(function(){ if (!$(this).hasClass('processed')) { $(this).addClass('processed').selectToUISlider({labels:6,labelSrc:"text"}); } });
								return true;
								},
							error:function(){ return false; }	
							});	
						},					
					GetCourseLinkOptions : function(course,exam,percent){ 
						var options = '',avail = UI.Admin.CertificationExams.Options.Markup.LinkingModuleOptionsValues,selectID = 'CourseExamPercent_'+exam+'_'+course;
						for (var i in avail) {
							var selected ='';
							if (percent == avail[i]) { selected = ' selected="selected"'; }
							options += '<option value="'+avail[i]+'"'+selected+'>'+avail[i]+'%</option>';
							}
						if (options != '') { return '<select id="'+selectID+'" name="'+selectID+'" exam-id="'+exam+'" course-id="'+course+'" class="CourseExamPercent outtaHere">'+options+'</select>'; }
						else { return false; } 
						},	
					RefreshListings : function(_this){
						if ($('.cert-exam-mgmt.exam-to-course').length) { UI.Admin.CertificationExams.Options.ExamToManage = _this.parents('tr').attr('data-id'); UI.Admin.CertificationExams.Options.LoadLinkedCourses(); }
						else if ($('.cert-exam-mgmt.course-to-exam').length) { UI.Admin.CertificationExams.Options.LoadLinkedExams(); }											
						},
					ToggleStatus : function(isDeleted){
						$.ajax({
							type: "GET",
							url: UI.Common.Service.Url()+'/CertificationExam/ToggleCertificationExamDelete',
							data: { "isDeleted" : isDeleted,"certificationExamId" : UI.Admin.CertificationExams.Options.ExamToManage},
							contentType: "application/json; charset=utf-8",
							success : function(results){
								results = GlobalUtil.MakeObject(results);
								if (results.OperationResult) {
									//UI.Common.ConsoleLog(result);
									UI.Admin.Datagrid.Options.JumpToPage(UI.Admin.Datagrid.Options.CurrentPage);
									return true;
									}
								else { return false; }
								},
							error:function(){ return false; }	
							});	
						},
					SaveExamXML : function(file){
						$('.popup .text-holder').prepend('<div class="loading" style="width: 100%; height: 50px; background-color: #f6f6f6;"></div>');
						$.ajax({
							type: "Post",
							url: UI.Common.Service.Url()+'/CertificationExam/SaveCertificationExam?fileName='+file+'&certificationExamId=' + UI.Admin.CertificationExams.Options.ExamToManage,
                            contentType: "application/json; charset=utf-8",
							success: function (result) {
                                result = GlobalUtil.MakeObject(result);
								UI.Admin.Datagrid.Pagination.JumpToPage(UI.Admin.Datagrid.Pagination.Options.CurrentPage);
								UI.Admin.Popup.Hide(true);
								return true;
								},
							error:function(){ return false; }	
							});													
						},							
					SaveCourseExamLinks : function(){
						$('select.CourseExamPercent.pending').each(function(){
							var _this = $(this),course = _this.attr('course-id'),exam = _this.attr('exam-Id'),percent = _this.val();												
							$.ajax({
								type: "Post",
								url: UI.Common.Service.Url()+'/CertificationExam/CourseCertificationExamLink?CourseId=' + course + '&CertificationExamId=' + exam + '&Percentage=' + percent,
                                contentType: "application/json; charset=utf-8",
								success: function (result) {
									_this.removeClass('pending');
									return true;
									},
								error:function(){ return false; }	
								});	
							});
						},
					UploadExamXML : function(){
						var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder'),templates = UI.Admin.Permissions.Options.Templates,templateMarkup='';
						_popup.find('.frame').css({'padding':'10px 10px 15px 10px'}).find('.text-holder').css({'padding':'0px 20px 20px 20px','text-align':'left'});
						_body.append('<input id="fileBrowserSelectedFile" name="fileBrowserSelectedFile" value="" type="hidden"><span class="fileBrowserSelection">Selected File: <span class="code-200"></span></span><div id="fileBrowserBrowser" class="fileBrowser certification-exam raptor-scroll"></div>');							
						_buttons.append('<a href="#" class="btn-gray effects cancel-load-exam-xml">Cancel</a><a href="#" class="btn-blue effects save-load-exam-xml">Load Selected Exam XML</a>');						
						$('.cancel-load-exam-xml').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-load-exam-xml,.save-load-exam-xml').unbind(); return false; });											
						$('.save-load-exam-xml').bind('click',function(){ 
							_body.find('.notification-bar').remove();
							if ($('#fileBrowserSelectedFile').val() != '') {								
								UI.Admin.CertificationExams.Options.SaveExamXML($('#fileBrowserSelectedFile').val());								
								}
							else { _body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please select an XML file to load.</dd></dl></div>'); }	
							return false; 															
							});								
						UI.Admin.FileBrowser.BuildFileBrowser();												
						},
					},
				Init : function(){
					if ($('.cert-exam-mgmt.exam-to-course').length) { UI.Admin.CertificationExams.Options.LoadAllCourses(); }
					else if ($('.cert-exam-mgmt.course-to-exam').length) { UI.Admin.CertificationExams.Options.LoadAllExams(); UI.Admin.CertificationExams.Options.LoadLinkedExams(); $('nav.tools').remove(); }					
					$('.cert-exam-upload').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = 0; UI.Admin.Popup.Show('UI.Admin.CertificationExams.Options.UploadExamXML'); return false; });
					$('.cert-exam-update').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.Popup.Show('UI.Admin.CertificationExams.Options.UploadExamXML'); return false; });
					$('.cert-exam-delete').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.CertificationExams.Options.ToggleStatus(true); return false; });
					$('.cert-exam-restore').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.CertificationExams.Options.ToggleStatus(false); return false; });
					$('.cert-exam-link').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.CertificationExams.Options.ShowCourseLinkView(); return false; });
					
					$('.cancel-link-course').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.CertificationExams.Options.HideCourseLinkView(); return false; });
					$('.add-link-course').live('click',function(){ UI.Admin.CertificationExams.Options.ExamToManage = $(this).parents('tr').attr('data-id'); UI.Admin.Popup.Show('UI.Admin.CertificationExams.Options.AddCourseLink'); return false; });
					$('.add-link-exam').live('click',function(){ UI.Admin.Popup.Show('UI.Admin.CertificationExams.Options.AddExamLink'); return false; });
					$('.course-exam-refresh').live('click',function(){ UI.Admin.CertificationExams.Options.RefreshListings($(this)); return false; });
					$('.exam-course-link-items select').live('change',function(){ $(this).addClass('pending'); });
					setInterval(function(){UI.Admin.CertificationExams.Options.SaveCourseExamLinks();},2000);
					if (!$('link[rel="stylesheet"][href*="jquery-ui-1.7.1.custom.css"]').length) { $('head').append('<link media="screen" href="/Public/css/jquery-ui-1.7.1.custom.css" type="text/css" rel="stylesheet" />'); }															
					},
				Cleanup : function(){}
				},
			Datagrid: {
	            isFound: function () { return $('.datagrid').length; },
	            Options: {
	                Datagrid: function () { return $('.datagrid:first'); },
	                DatagridID: function () { return UI.Admin.Datagrid.Options.Datagrid().attr('id'); },
					Container: function () { return $('.datagrid:first tbody'); },
					ContainerID: function () { return UI.Admin.Datagrid.Options.Container().attr('id'); },
					RecordsPerPage: 25,
					TotalRecords: 1,
					TotalPages: 1,
					CurrentPage: 1,					
					ServiceRequest : function(){
						var url = false;
						switch (UI.Admin.Datagrid.Options.DatagridID()) {
							case 'dgUserList': url = '/User/Get'; break;
							case 'dgCompanyList': url = '/Company/Get'; break;
							case 'dgSubscriptionPlanList': url = '/SubscriptionPlan/Get'; break;
                            case 'dgMultiUserAccountList': url = '/MultiuserAccount/Get'; break;
                            case 'dgCourseList': url = '/Course/Get'; break;
							case 'dgCertificationExamsList': url = '/CertificationExam/Get'; break;
							}
						return url;
						},					
					Markup : {
						Header : function(){
							var markup = false;
							switch (UI.Admin.Datagrid.Options.DatagridID()) {
								case 'dgUserList': markup = '<tr><th class="col1">ID</th><th class="col3">Name</th><th class="col3-1">Email</th><th class="col3-2">Status</th><th class="col5">Start Date</th><th class="col6">Last Login</th></tr>'; break;
								case 'dgCompanyList': markup = '<tr><th class="col2">ID</th><th class="col3">Company Name</th><th align="center" class="col4">City</th><th class="col5">State</th><th class="col5">Phone</th><th>&nbsp;</th></tr>'; break;
								case 'dgSubscriptionPlanList': markup = '<tr><th class="col1">ID</th><th class="col4">Name</th><th class="col5">Plan Id</th><th class="col6">Created By</th><th class="col7">Start Date</th></tr>'; break;
                                case 'dgMultiUserAccountList': markup = '<tr><th class="col2">ID</th><th class="col3">Company Name</th><th class="col4" align="center">Base Price</th><th class="col5">Billing Type</th><th class="col6">Renewal Date</th><th class="col7">Number of Users</th><th class="col8">Is Locked?</th></tr>'; break;
                                case 'dgCourseList': markup = '<tr><th class="col2">ID</th><th class="col3">Course Name</th><th class="col4" align="center">Published</th><th class="col5">Last Modified</th></tr>'; break;
                                case 'dgCertificationExamsList': markup = '<tr><th class="col4">Number</th><th class="col3">Certification Exam Name</th><th class="">Version</th><th style="width: 25%">&nbsp;</th></tr>'; break;
								}
							return markup;
							},
						Item : function(obj){
							var markup = false;
							switch (UI.Admin.Datagrid.Options.DatagridID()) {
								case 'dgUserList': markup = '<tr><td class="col1">'+obj.UserId+'</td><td class="col3"><a href="/Admin/Users/AccountDetails/'+obj.UserId+'">'+obj.Name+'</a></td><td>'+obj.Email+'</td><td>'+obj.Status+'</td><td class="col5">'+obj.StartDate+'</td><td>'+obj.LastLogin+'</td></tr>'; break;
								case 'dgCompanyList': markup = '<tr><td><a href="CompanyDetails/'+obj.CompanyId+'">'+obj.CompanyId+'</a></td><td><a href="CompanyDetails/'+obj.CompanyId+'">'+obj.CompanyName+'</a></td><td align="center">'+obj.City+'</td><td>'+obj.State+'</td><td>'+obj.Phone+'</td><td><a href="CompanyDetails/'+obj.CompanyId+'" class="micro green icon-update"><span>Update</span></a></td></tr>'; break;
								case 'dgSubscriptionPlanList': markup = '<tr><td class="col1">'+obj.SubscriptionPlanId+'</td><td class="col4"><a href="SubscriptionPlanDetails/'+obj.SubscriptionPlanId+'">'+obj.Name+'</a></td><td class="col5"><a href="SubscriptionPlanDetails/'+obj.SubscriptionPlanId+'">'+obj.PlanId+'</a></td><td class="col6">'+obj.CreatedByUser+'</td><td class="col7">'+obj.CreationDate+'</td></tr>'; break;
								case 'dgMultiUserAccountList': markup = '<tr><td class="col2">'+obj.MultiUserAccountId+'</td><td class="col3"><a href="MultiUserAccountDetails/'+obj.MultiUserAccountId+'/edit">'+ obj.CompanyName +'</a></td><td class="col4">'+ obj.BasePrice +'</td><td class="col5">'+ obj.BillingType +'</td><td class="col6">'+ obj.RenewalDate+'</td><td class="col7">'+ obj.NumberOfUsers+'</td><td class="col8">'; if (obj.IsLocked) { markup += '<a class="micro green icon-good"><span>Good</span></a>';} else { markup+= '<a class="micro black icon-blocked"><span>Blocked</span></a>';} markup += '</td></tr>'; break;
								case 'dgCourseList': markup = '<tr><td class="col2">'+obj.Id+'</td><td class="col3"><a href="CourseDetails/'+obj.Id+'">'+obj.Name+'</a></td><td class="col4" align="center">';if (obj.IsPublished) { markup += '<img src="/public/images/_admin/valid-green.png" alt="Published" width="20" height="20" />'; } else { markup +='<img src="/public/images/_admin/remove-red.png" alt="Not Published" width="20" height="20" />'; }markup += '</td><td class="col5">'+obj.ModifiedDate+'</td></tr>'; break; 
								case 'dgCertificationExamsList': 
									markup = '<tr data-id="'+obj.CertificationExamId+'" data-type="CertificationExam" file="'+obj.XMLFile+'"><td>'+obj.Number+'</td><td class="col3"><a href="CertificationExamDetails/'+obj.CertificationExamId+'">'+obj.Name+'</a></td><td>'+obj.Version+'</td><td width="200"><a href="CertificationExamDetails/'+obj.CertificationExamId+'" class="cert-exam-view micro grey icon-view"><span>View</span></a><a href="#" class="cert-exam-update micro green icon-update"><span>Update</span></a><a href="#" class="cert-exam-link micro blue icon-link"><span>Link Courses</span></a>';
									if (obj.IsDeleted) { markup+= '<a href="#" class="cert-exam-restore micro grey icon-restore"><span>Restore</span></a>';} else { markup+= '<a href="#" class="cert-exam-delete micro red icon-delete"><span></span></a>'; }
									markup += '</td></tr>'; 
									break;
                                }
							return markup;
							}
						},
	                JumpToPage: function (targetPage) {
	                    if (!UI.Admin.Datagrid.Options.Loading.isFound()) {
	                        if (targetPage > UI.Admin.Datagrid.Options.TotalPages) { targetPage = UI.Admin.Datagrid.Options.TotalPages; }
	                        UI.Admin.Datagrid.Options.CurrentPage = targetPage;
	                        var dgPageSkip = UI.Admin.Datagrid.Options.RecordsPerPage * (targetPage - 1);
	                        UI.Admin.Datagrid.Options.Index(dgPageSkip, UI.Admin.Datagrid.Options.RecordsPerPage);
	                    }
	                },
	                MoveDirection: function (direction) {
	                    switch (direction) {
	                        case 'left':
	                            var control = $('.paging-block a.prev-page');
	                            if (!control.hasClass('disabled')) { control.click(); }
	                            break;
	                        case 'right':
	                            var control = $('.paging-block a.next-page');
	                            if (!control.hasClass('disabled')) { control.click(); }
	                            break;
	                    }
	                },					
					Loading: {
						isFound: function () { return $('.datagrid td.dgLoading').length; },
						Template: function () { var colspan = $(".datagrid th").length; return '<tr id="dgLoading"><td colspan="' + colspan + '"><div class="dgLoading"></div></td></tr>'; },
						Show: function () {
							var loadingTemplate = UI.Admin.Datagrid.Options.Loading.Template();
							$('.datagrid tbody#dgContainer').html('').append(loadingTemplate);
						},
						Hide: function () {
							$('.datagrid tbody#dgContainer tr#dgLoading').remove();
						}
					},
					Index: function (skip, take) {
						UI.Admin.Datagrid.Options.Container().empty();
						UI.Admin.Datagrid.Options.Loading.Show();
						$.ajax({
							type: "GET",
							url: UI.Common.Service.Url()+UI.Admin.Datagrid.Options.ServiceRequest(),
							data: {'take':take,'skip':skip},
							contentType: "application/json; charset=utf-8",
							success : function(results){
								UI.Admin.Datagrid.Options.Loading.Hide();
								results = GlobalUtil.MakeObject(results);
								if (results.DataCollection.length) {
									if (!UI.Admin.Datagrid.Options.Datagrid().find('thead').length) { UI.Admin.Datagrid.Options.Datagrid().prepend('<thead>'+UI.Admin.Datagrid.Options.Markup.Header()+'</thead>'); }
									$.each(results.DataCollection, function(i, v) { 
										UI.Admin.Datagrid.Options.Container().append(UI.Admin.Datagrid.Options.Markup.Item(v));
										});								
									}
				                UI.Admin.Datagrid.Options.TotalRecords = results.TotalRows;
								$(".datagrid tr:even").addClass("even");								
								UI.Admin.Datagrid.Cleanup();
								}
							});						
					}
					},
				Init: function(){
					$('.paging-block').show();
					$('#dgPageJump').live('change', function () {
						UI.Admin.Datagrid.Options.JumpToPage($(this).val());
					});
					$('#dgPageRecordCount').live('change', function () {
						UI.Admin.Datagrid.Options.RecordsPerPage = $(this).val();
						UI.Admin.Datagrid.Options.TotalPages = Math.ceil(UI.Admin.Datagrid.Options.TotalRecords / $(this).val());
						UI.Admin.Datagrid.Options.JumpToPage(UI.Admin.Datagrid.Options.CurrentPage);
					}).val(UI.Admin.Datagrid.Options.RecordsPerPage);
					$('.paging-block a').live('click', function () {
						var newPage;
						if (!$(this).hasClass('disabled')) {
							if ($(this).text().match(/[0-9]+/) != null) { newPage = $(this).text(); }
							else if ($(this).hasClass('first-page')) { newPage = 1; }
							else if ($(this).hasClass('prev-page')) { newPage = (UI.Admin.Datagrid.Options.CurrentPage * 1) - 1; }
							else if ($(this).hasClass('next-page')) { newPage = (UI.Admin.Datagrid.Options.CurrentPage * 1) + 1; }
							else if ($(this).hasClass('last-page')) { newPage = UI.Admin.Datagrid.Options.TotalPages; }
							UI.Admin.Datagrid.Options.JumpToPage(newPage);
						}
						return false;
					});
					UI.Admin.Datagrid.Options.JumpToPage(1);					
					},
				Cleanup : function(){
					UI.Admin.Datagrid.Options.TotalPages = Math.ceil(UI.Admin.Datagrid.Options.TotalRecords / UI.Admin.Datagrid.Options.RecordsPerPage);
					if (UI.Admin.Datagrid.Options.CurrentPage == 1) { $('.paging-block').find('.first-page,.prev-page').addClass('disabled'); }
					else { $('.paging-block').find('.first-page,.prev-page').removeClass('disabled'); }
					if (UI.Admin.Datagrid.Options.CurrentPage == UI.Admin.Datagrid.Options.TotalPages) { $('.paging-block').find('.last-page,.next-page').addClass('disabled'); }
					else { $('.paging-block').find('.last-page,.next-page').removeClass('disabled'); }
					var newPageNav = '';
					for (i = 1; i < ((UI.Admin.Datagrid.Options.TotalPages * 1) + 1); i++) {
						if (i == UI.Admin.Datagrid.Options.CurrentPage) { var active = ' class="active"'; }
						else { var active = ''; }
						newPageNav += '<li' + active + '><a href="#">' + i + '</a></li>' + "\n";
					}
					$('.paging-block span.info-page').html('Page ' + UI.Admin.Datagrid.Options.CurrentPage + ' <span class="mark">of</span> ' + UI.Admin.Datagrid.Options.TotalPages);
					$('.paging-block nav.paging ul').html(newPageNav);
					if ($('#dgPageJump').val() > UI.Admin.Datagrid.Options.CurrentPage) { $('#dgPageJump').val(UI.Admin.Datagrid.Options.CurrentPage); }					
					},					
				},
		 Badge: {
	            CheckFileName: function () {
	                var badgeFilenameLookupData = [];
	                $.dataSource({
	                    serviceUrl: UI.Common.ServiceUrl,
	                    queryName: "IsFileExists",
	                    refresh: function (data) { badgeFilenameLookupData = data; }
	                }).refresh();
	                if (badgeFilenameLookupData.Status == 'Success') { return true; }
	                else { return false; }
	            }
	        },
		AccountAdmin : {
			isFound : function(){ return $('.admin-account-edit').length; },
			Options: {
				Selectors : {
					AutoGenerate : '.account-password-auto input[name="AutoGeneratePassword"]:checked',
					Passwords : '.account-password'
					},
				},
			Init : function(){
				$(UI.Admin.AccountAdmin.Options.Selectors.Passwords).live('change',function(){
					UI.Admin.AccountAdmin.Cleanup();
					});
				_auto = $(UI.Admin.AccountAdmin.Options.Selectors.AutoGenerate);
				_auto.live('change',function(){ UI.Admin.AccountAdmin.Cleanup(); });
				UI.Admin.AccountAdmin.Cleanup();
				},
			Cleanup : function(){
				var _auto = $(UI.Admin.AccountAdmin.Options.Selectors.AutoGenerate);
				if (_auto.length) {
					var  _password = $(UI.Admin.AccountAdmin.Options.Selectors.Passwords);
					if (_auto.val() == 'True') { _password.find('input').attr('disabled',true).removeAttr('data-val'); _password.hide(); }
					else { 
						_password.each(function(){
							var _this = $(this);
							_this.find('input').attr('disabled',false);					
							if (_this.find('input#ConfirmPassword').length) {
								_this.find('input#ConfirmPassword').attr('data-val-equalto-other','#Password').attr('data-val-equalto',"Password doesn't match.").attr('data-val','true');
								}	
							else {
								_this.find('input#Password').attr('data-val-required',"Password is required.").attr('data-val','true');
								}	
							_this.show();
							}); 
						}						
					}
				else {
					var _password = $('#Password');
					if (_password.val()) {
						$(UI.Admin.AccountAdmin.Options.Selectors.Passwords).find('#Password,#ConfirmPassword').attr('data-val','true');
						}
					else {
						$(UI.Admin.AccountAdmin.Options.Selectors.Passwords).find('#Password,#ConfirmPassword').removeAttr('data-val');
						}	
					}
				UI.Common.Form.Validate.Cleanup();
				}
			},
			Permissions : {
				isFound : function() { return $('.permissions').length;},
				Options : {
					Templates : {},
					TemplateMatch : {},
					MatchedTemplates : [],
					TemplateToApply : false,
					Markup : {
						AdvancedButton : '<a class="micro perms-adv" href="#">Advanced</a>'
						},
					GetTemplates : function(templateToApply){
						$.ajax({
							type: "Get",
							url: UI.Common.Service.Url() + '/Permission/GetRoleTemplates',
                            contentType: "application/json; charset=utf-8",
							success : function(data){
                                data = GlobalUtil.MakeObject(data);
								delete UI.Admin.Permissions.Options.Templates;
								UI.Admin.Permissions.Options.Templates = {};
								$.each(data.DataCollection, function(i, result) {
									var templateId = result.Id,tempObj = {};
									UI.Admin.Permissions.Options.Templates[templateId] = result;																		
									$.each(result.Values, function(i, value) {
										var valueName = value.Type+value.ID;										
										tempObj[valueName] = {};
										tempObj[valueName] = value;										
										});	
									delete UI.Admin.Permissions.Options.Templates[templateId].Values;
									UI.Admin.Permissions.Options.Templates[templateId].Values = tempObj;
									});
								$('.box-rounded select').each(function(){
									var _this = $(this),name = _this.attr('data-type')+_this.attr('data-id');
									_this.attr('template-name',name);
									});								
								UI.Admin.Permissions.Cleanup();
								if (templateToApply) { /*UI.Admin.Permissions.Options.ApplyTemplate(result.Id);*/ }
								return true;
								}
							});
						},
					SyncTemplates : function(){
						var templates = UI.Admin.Permissions.Options.Templates,templateMatches = UI.Admin.Permissions.Options.TemplateMatch,templateToApply = UI.Admin.Permissions.Options.TemplateToApply;
						$('.user-type input:radio').parent('li').removeClass('selected');
						UI.Admin.Permissions.Options.MatchedTemplates = [];
						if (templates != {}) {							
							delete UI.Admin.Permissions.Options.TemplateMatch;
							UI.Admin.Permissions.Options.TemplateMatch = {};
							$('.box-rounded select:not(:disabled)').each(function(){
								var _this = $(this),name = _this.attr('data-type')+_this.attr('data-id');
								UI.Admin.Permissions.Options.TemplateMatch[name] = _this.val();
								});								
							templateMatches = UI.Admin.Permissions.Options.TemplateMatch;
							$.each(templates, function(i, template) {
								templateId = template.Id,templateName = template.Name;																
								var testTemplate = UI.Admin.Permissions.Options.TestTemplateMatch(template,templateMatches);
								if (testTemplate) { UI.Admin.Permissions.Options.MatchedTemplates.push(template.Id); }								
								});	
							var matched = UI.Admin.Permissions.Options.MatchedTemplates;
							if (matched.length) {
								if (matched.length == 1) { templateToApply = matched[0]; }								
								else { 
									if (!templateToApply) { UI.Admin.Popup.Show('UI.Admin.Permissions.Options.ResolveTemplateSelect'); } 									
									}
								}
							templateToApply = templateToApply *1;	
							if (templateToApply) {								
								if (templates[templateToApply].Type == 'Standard') {
									$('.user-type input[name="Permission_template"][value="'+templateToApply+'"]').attr('checked',true);
									}
								else {
									$('.user-type input[name="Permission_template"]:last').attr('checked',true).val(templateToApply).next('label').text(templates[templateToApply].Name);
									}								
								}							
							else {
								$('.user-type input[name="Permission_template"]:last').attr('checked',true).val(0).next('label').text('Custom');
								}		
							}
						UI.Admin.Permissions.Options.TemplateToApply = false;
						$('.user-type input:radio:checked').parent('li').addClass('selected');
						UI.Common.Form.RadioCheck.Cleanup();				
						},
					TestTemplateMatch : function(template,match) {
						var falseCount = 0;
						$.each(template.Values, function(i,value) {
							if ((typeof match[i] == 'undefined') || (match[i] != value.Value)) { falseCount++; }							 
							//UI.Common.ConsoleLog(i+' - Form: '+match[i]+', Template:'+value.Value);							
							});						
						$('.box-rounded select:not(:disabled)').each(function(){
							var _this = $(this),name = _this.attr('template-name');
							if (template.Values[name] == null && _this.val() > -1) { falseCount++; }
							});
						if (falseCount || template.Values.length != match.length) { return false; }
						else { return true; }
						},	
					ApplyTemplate: function(templateId){
						var templates = UI.Admin.Permissions.Options.Templates;
						UI.Common.ConsoleLog(templates);
						$.each(templates, function(v, template) {
							if (template.Id == templateId) {
								$.each(template.Values, function(j, value) {
									var _option = $('*[template-name="'+j+'"] option[value="'+value.Value+'"]'),_parent = _option.parent('select'),disabled = false;
									if (_parent.is(':disabled')) { disabled = true; _parent.attr('disabled',false); }
									_option.attr('selected',true);
									if (disabled) { disabled = true; _parent.attr('disabled',true); }
									});
								$('.box-rounded select').each(function(){
									var _this = $(this),name = _this.attr('template-name');
									if (typeof template.Values[name] == 'undefined') { _this.find('option:first').attr('selected',true); }
									});
								}
							});
						UI.Admin.Permissions.Options.TemplateToApply = templateId;
						$('.box-rounded select:first').change();
						//UI.Admin.Permissions.Cleanup();
						},
					SaveTemplate: function(name){
						if (name) {
							var templateId = 0,templates = UI.Admin.Permissions.Options.Templates,settings = $('#FormUser').serialize(),formItems;
							name = name.replace(/(\w)(\w*)/g,function(g0,g1,g2){return g1.toUpperCase() + g2.toLowerCase();});
							$.each(templates, function(i, template) { if (template.Name == name) { templateId = template.Id; } });						
							$.ajax({
								type: "Post",
								url: UI.Common.Service.Url() + '/Permission/SetRoleTemplates?templateid='+templateId+'&templatename='+name+'&form='+encodeURIComponent(settings),
                                contentType: "application/json; charset=utf-8",
								success: function (result) {
									UI.Admin.Permissions.Options.TemplateToApply = result;
									UI.Admin.Permissions.Options.GetTemplates();
									return true;
									},
								error:function(){ return false; }	
								});													
							}
						else { return false; }	
						},	
					LoadTemplate: function(){ UI.Admin.Popup.Show('UI.Admin.Permissions.Options.LoadTemplateSelect'); },
					LoadTemplateSelect: function(){
						var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder'),templates = UI.Admin.Permissions.Options.Templates,templateMarkup='';
						$.each(templates, function(i, template) {
							templateMarkup += '<tr valign="center"><td width="30" align="center"><input type="radio" name="template-to-load" value="'+template.Id+'" /></td><td align="left">'+template.Name+'</td><td align="center">'+template.Type+'</td></tr>';
							});
						_popup.find('.frame').css('padding','10px 10px 15px 10px').find('.text-holder').css('padding','0px 20px 20px 20px');
						_body.append('<div style="width: 100%; max-height: 250px;" class="raptor-scroll"><table cellpadding="3" cellspacing="0" width="100%" style="font-size: 14px;" id="load-template-container"><thead><tr><th colspan="2" align="left">Name</th><th align="center">Type</th></tr></thead><tbody>'+templateMarkup+'</tbody></table></div>');							
						_buttons.append('<a href="#" class="btn-gray effects cancel-load-templates">Cancel</a><a href="#" class="btn-blue effects load-load-templates">Load Selected Template</a>');
						$('#load-template-container').find('th').css('border-bottom','1px solid #ccc');
						$('#load-template-container').find('tr:odd td').css('background-color','#f6f6f6');
						UI.Common.Form.RadioCheck.Cleanup();
						$('#load-template-container').find('div[class^="radioArea"]').css('margin','0px 0px 0px 5px');
						$('.cancel-load-templates').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-load-templates,.load-load-templates').unbind(); return false; });											
						$('.load-load-templates').bind('click',function(){ 
							_body.find('.notification-bar').remove();
							if (!$('#load-template-container').find('input:checked').length) {
								_body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please select a template to load.</dd></dl></div>');							
								}
							else { UI.Admin.Permissions.Options.ApplyTemplate($('#load-template-container input:checked').val()); UI.Admin.Popup.Hide(true); }							
							return false; 
							});																	
						UI.Common.jQuery.Scroll();						
						},
					ResolveTemplateSelect: function(){
						var _popup = $('.popup'),_body = _popup.find('.text-holder'),_buttons = _popup.find('.btn-holder'),templates = UI.Admin.Permissions.Options.Templates,templateMarkup='',matched = UI.Admin.Permissions.Options.MatchedTemplates,valid = false;
						$.each(templates, function(i, template) {
							if(jQuery.inArray(template.Id,matched) > -1) {
								templateMarkup += '<tr valign="center"><td width="30" align="center"><input type="radio" name="template-to-load" value="'+template.Id+'" /></td><td align="left">'+template.Name+'</td><td align="center">'+template.Type+'</td></tr>';
								}
							});
						_popup.find('.frame').css('padding','10px 10px 15px 10px').find('.text-holder').css('padding','0px 20px 20px 20px');
						_body.append('<p>Your current settings match more than one template. Please select a template to associate with this user, or create a new one.</p><div style="width: 100%; max-height: 250px;" class="raptor-scroll"><table cellpadding="3" cellspacing="0" width="100%" style="font-size: 14px;" id="load-template-container"><thead><tr><th colspan="2" align="left">Name</th><th align="center">Type</th></tr></thead><tbody>'+templateMarkup+'<tr valign="center"><td width="30" align="center"><input type="radio" name="template-to-load" value="new" /></td><td align="left" colspan="2"><input type="text" value="" name="new-template-name" value="" id="new-template-name" style="width: 275px;" /></td></tr><tr valign="center"><td width="30" align="center"><input type="radio" name="template-to-load" value="0" /></td><td align="left" colspan="2">Continue without Template</td></tr></tbody></table></div>');							
						_buttons.append('<a href="#" class="btn-gray effects cancel-load-templates">Cancel</a><a href="#" class="btn-blue effects load-resolve-templates">Use Selected Template</a>');
						$('#load-template-container').find('th').css('border-bottom','1px solid #ccc');
						$('#load-template-container').find('tr:odd td').css('background-color','#f6f6f6');
						UI.Common.Form.Cleanup();
						$('#load-template-container').find('div[class^="radioArea"]').css('margin','0px 0px 0px 5px');
						$('.cancel-load-templates').bind('click',function(){ UI.Admin.Popup.Hide(true); $('.cancel-load-templates,.load-resolve-templates').unbind(); return false; });											
						$('.load-resolve-templates').bind('click',function(){ 
							_body.find('.notification-bar').remove();
							if (!$('#load-template-container input:checked').length) {
								valid = false;
								_body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please select a template to load.</dd></dl></div>');														
								return false;
								}
							else if ($('#load-template-container input[value="new"]:checked').length && $('#new-template-name').val() == '') {
								valid = false;
								_body.prepend('<div class="notification-bar effects yellow"><dl><dt>Message:</dt><dd>Please enter a new template name.</dd></dl></div>');														
								return false;
								}
							else if ($('#load-template-container input[value="new"]:checked').length) {							
								UI.Admin.Permissions.Options.SaveTemplate($('#new-template-name').val());
								UI.Admin.Popup.Hide(true);
								}
							else {
								valid = true;					
								}
							if (valid) { UI.Admin.Permissions.Options.ApplyTemplate($('#load-template-container input:checked').val()); UI.Admin.Popup.Hide(true); } 							
							return false; 
							});																	
						UI.Common.jQuery.Scroll();						
						},
						
				},
				Init: function() {
					$('.box-rounded ul').hide();
					$('.user-type input.radio').live('change', function() { UI.Admin.Permissions.Options.ApplyTemplate($(this).val());  });
					$('.perms-details').live('click',function(){
						$('.box-rounded ul').show();									  
						UI.Admin.Permissions.Cleanup();
						return false;
						});
					$('.user-type li').live('click',function(){
						$(this).find('input:radio').attr('checked',true).change();
						});
					$('.perms-adv').live('click', function() { 
						var _this = $(this);
						if (!_this.hasClass('active')) { _this.prev('select').attr('disabled',false).find('option[value="3"]').attr('selected',true).change(); }
						else { _this.prev('select').attr('disabled',false).find('option:first').attr('selected',true).change(); }  
						return false;
						});
					$('.box-rounded select').live('change',function(){ UI.Admin.Permissions.Cleanup(); });
					$('.save-template').live('click',function(){ 
						var templateName,preload,templateId = 0;
						if ($('input[name="Permission_template"]:checked').val() > 0) { preload = $('input[name="Permission_template"]:checked').next('label').text(); }
						else { preload = ""; }
						templateName = prompt("Save current settings as template named:", preload);
						if (templateName) { 
							if (templateName != "") {
								UI.Admin.Permissions.Options.SaveTemplate(templateName);
								}
							else { templateName; }
							}
						return false; 
						});
					$('.load-template').live('click',function(){ UI.Admin.Permissions.Options.LoadTemplate(); return false; });
					UI.Admin.Permissions.Options.GetTemplates();
					UI.Admin.Permissions.Cleanup(); 
				},
				Cleanup: function() {
					$('select option[value="3"]').each(function(){
						var _this = $(this),_ul;
						if(!_this.parent('select').next('.perms-adv').length) { _this.parent('select').after(UI.Admin.Permissions.Options.Markup.AdvancedButton); }						
						if (_this.parents('.box-header').length) { _ul = _this.parents('.box-header').next('ul');}
						else { _ul = _this.parent('select').next('a').next('ul'); }
						if (_this.is(':selected')) { 							
							_ul.show();
							_this.parent('select').hide();
							_this.parent('select').next('.perms-adv').addClass('active');
							}	
						else { 							
							_ul.hide(); 						
							_this.parent('select').show();
							_this.parent('select').next('.perms-adv').removeClass('active');
							}																	
						if (_ul.is(':hidden')) { _ul.find('select').attr('disabled',true); }
						else { _ul.children('li').children('select').attr('disabled',false); }
						
						//UI.Common.ConsoleLog('Select '+_this.parent('select').attr('id')+': '+_ul.find('select:disabled').length);
						});										 					
					UI.Admin.Permissions.Options.SyncTemplates(UI.Admin.Permissions.Options.TemplateToApply);
				}
			},
			TinyMCE : {
				isFound : function(){ return $('textarea.tinymce').length; },
				Init : function(){
					$('textarea.tinymce').tinymce({
							// Location of TinyMCE script
							script_url : '/public/javascript/tiny_mce/tiny_mce.js',
							theme : "advanced",
							plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist",
							theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,bullist,numlist",
							theme_advanced_buttons2 : "",
							theme_advanced_buttons3 : "",
							theme_advanced_buttons4 : "",
							theme_advanced_toolbar_location : "top",
							theme_advanced_toolbar_align : "left",
							theme_advanced_statusbar_location : "bottom",
							theme_advanced_resizing : true,
							theme_advanced_resize_horizontal : false,
							content_css : "/public/css/tiny_mce.css",
						});				
					}
			}			
		},
	}
