var HOME={};
var POST={};
function AngelModel(){
	//the action take by angel self
	this.action=['applyID','checkID','remove','tabNav','checkAll'];
	this.memory={temp:''};
	this.scene=jQuery('body');
	//get the words from server side angel
    this.build=function(){
        $('html').unbind('click').click(function(e){
			//take lost note's msg
			var msg=$(e.target).attr('msg');
			if(msg){
				Angel.get(msg);
			}
		});
    }
	this.guide=function(msg){

	}
	//get msg from angel backside
	this.listen=function(msg){
	    eval(msg.model+'.'+msg.action+'('+msg.info+')');
	}
	//get lostnote's msg
	this.get=function(msg){
		msg=msg.split('.');
		POST['action']=msg[1]||'action';
		msg=msg[0].split('/');
		POST['model']='Angel';
		if(msg[0]&&this.action.in_array(msg[0])){
		    POST['action']=msg[0];
			delete msg[0];
		}else if(msg[0]){
		    POST['model']=msg[0];
			delete msg[0];
		}
		//info start
		var infoStart=1;
	    if(msg[1]&&(msg.length-1)%2!=0){
		    POST['entity']=msg[1];
			delete msg[1];
			infoStart=2;
		}//alert(POST['model']+'/'+POST['action']+'/'+POST['entity']);
		POST['info']={};
		var flag=true;
		$.each(msg,function(k,v){
			if(k<infoStart){return true;}
			if((k-infoStart)%2==0){
			    POST['info'][v]=msg[k+1];
			}
			delete msg[k];
		});
		if(typeof(eval(POST['model']+'.'+POST['action']))=='function'){
			eval(POST['model']+'.'+POST['action']+'(POST.info)');
		}else{
			//send lostnote's msg
			this.POST(POST);
		}
		//console.dir(msg);
	}
	//apply ID
	this.applyID=function(msg){
		if(msg.step=='check'){//console.dir(msg);
			msg.info=this.getInput();
			msg.done=function(data){
			    if(!data.data){
				    alert('error password or user name');
				}else{
				    HOME.lostnote=data.data;
				}
			}
			this.POST(msg);
			return;
		}
	    this.ask({'title':'用户注册',
			       'for':'people',
				   'height':'110',
				   'width':'200',
				   'yes':'@/step/check.applyID'
				 });
	}
	//check lostnote's ID
	this.checkID=function(msg){
		if(msg.step=='check'){//console.dir(msg);
			msg.data=this.getInput();
			msg.done=function(data){
			    if(!data.data){
				    alert('error password or user name');
				}else{
				    HOME.lostnote=data.data;
				}
			}
			this.POST(msg);
			return;
		}
	    this.ask({'title':'用户登陆',
			      'question':{'name':{'label':'用&nbsp;&nbsp;户'},
			                  'password':{'label':'密&nbsp;&nbsp;码','type':'password'}
		                     },
				   'height':'110',
				   'width':'200',
				   'yes':'@/step/check.checkID'
				 });
	}

	this.getInput=function(id){
	    id=id||'dialog';
		var data={};
		$('#'+id+' input,'+'#'+id+' textarea').each(function(){
		    data[$(this).attr('name')]=$(this).val();
			if($(this).attr('link_id')){
			    data[$(this).attr('name')+'_id']=$(this).attr('link_id');
			}
		});
		return data;
	}
	this.getFormData=function(name){
		var FormData={};
		$('form[name='+name+'] input').each(function(){
			if(!$(this).attr('type')||$(this).attr('type')=='text'){
				if($(this).val()!=''){
					FormData[$(this).attr('name')]=$(this).val();
				}
			}else if($(this).attr('type')=='checkbox'&&!FormData[$(this).attr('name')]){
				FormData[$(this).attr('name')]={};
				$('input[name='+$(this).attr('name')+'][type=checkbox][checked=checked]').each(function(i){
				    FormData[$(this).attr('name')][i]=$(this).val();
				});
			}
		});
        return FormData;
	}
	this.list=function(msg){
		if(msg&&!msg.from){
			msg.page=msg.page||1;
			msg.action='getData';
			msg.done=Angel.list;
			this.POST(msg);
		}else{
			var listHtml='';
			$.each(msg.data,function(k,v){
				listHtml+='<tr>';
				$.each(v,function(i,j){
					listHtml+='<td>'+j+'</td>';
				});
				listHtml+='</tr>';
			});
			$('.content .scroll').html(listHtml);
		}
	}
	this.send=function(){//console.dir(msg);
		var done=POST.done;delete POST.done;
		//console.dir(msg);
		POST['model']=POST['model']=='Angel'?'angel':POST['model'];
		$.post(HOME.angel+'/index.php',POST,done,'json');
	}
	this.getData=function(msg){//console.dir(msg);
	    var src=msg.src.split(',');
		var info={};
		info['entity']=src[0];
		if(src[1]){
		    info['field']=src[1];
		}
		if(src[2]){
			info['filter']={};
		    info['filter'][src[2]]=src[3];
		}
		if(src[4]){
		    info['filter'][src[4]]=src[5];
		}
	    $.post(HOME.angel,{model:'angel',action:'getData',info:info},
			function(data){
			    if(!data){return false;}
			    if(!HOME.data){HOME.data={};}
		        HOME['data'][msg['src']]=data;
				msg['done'](data);
			},'json');
	}
	//this.get=function(args){
	//	eval("this."+args['action']+"(args)");
	//}
	this.date=function(args){
    	if(typeof(args)=='string'){
    		var newDate=new Date();
    		return eval("newDate."+args+"();");
    	}
    }
	this.lock=function(){
		if($('#lock:visible').size()>0){
			$('#lock').hide();return;
		}
		$('#lock').fadeIn().unbind('click').click(function(){
			Angel.say(Angel.memory.words[Angel.memory.language]['please_act_follow_me']+'<br />');
		});
	}
	this.adjust=function(args){
		$.extend(Angel.memory,args.msg);
	}
	this.ask=function(msg){
		if(msg.type){
		    if(msg.type=='table'){
				//*****update
				if(msg['entity']!='all'){
					//if step two
					if(msg['step']=='save'){
						msg['info']={};
						$('#ask_for_table input').each(function(){
							msg['info'][$(this).attr('name')]=$(this).val();
						});
						msg['done']=function(data){
                            if(data.result=='success'){
							    Angel.say('更新成功!');
								$('#ask_for_table input').each(function(){
									var index=$(this).index('input');
									$('#'+msg['entity']+' td:eq('+index+')').html($(this).val());
								});
								$(this).html('<a msg="'+msg['model']+'/'+msg['entity']+'.setData">修改</a>');
							}
						    $('#ask_for_table').remove();
						}
						this.post(msg);
						//console.dir(msg);
						return;
					}
				   
						if(this.checkVisible('ask_for_table')){
							$('#ask_for_table').remove();
							return;
						}
						$('<div id="ask_for_table"><div class="BG" style="background:#fff;filter:alpha(opacity=80);opacity:0.8;border:5px solid #333;"></div><div id="ask_for_table_content"></div>').appendTo('#main');
						$('#'+msg['model']+' .title td').each(function(){
							var name=$(this).attr('name');
							var index=$(this).index();
							if(name=='action'){
								$('#ask_for_table_content').append('<a class="btn" msg="'+msg['model']+'/'+msg['entity']+'/step/save.setData">确定</a><a class="btn" msg="@name/ask_for_table.remove">取消</a>');
								return true;
							}
							$('#ask_for_table_content').append($(this).html()+':<input value="'+$('#'+msg['entity']+' td:eq('+index+')').html()+'" name="'+name+'"/><br />');
						//select
							if($(this).attr('select')){
								var data={};
								Angel.getData({src:$(this).attr('select'),done:function(data){
									 Angel.initSelect({data:data,target:'#ask_for_table input[name='+name+']'});
								}});
							}
							if($(this).attr('setDateTime')){
								if($(this).attr('setDateTime')=='date'){
									Angel.setDate({target:'#ask_for_table input[name='+name+']'});
								}
							}
							if($(this).attr('int')){
								Angel.initInt({length:$(this).attr('int'),target:'#ask_for_table input[name='+name+']'});
							}
						});

					return;
				}
				//*****new 
				//if step save
				if(msg['step']=='save'){
				    msg['info']={};
					$('#ask_for_table input').each(function(){
						if($(this).attr('name')=='action'){return true;}
						msg['info'][$(this).attr('name')]=$(this).val();
					});
					msg['done']=function(data){
						if(data.result=='success'){
							Angel.say('增加成功!');
                            $('#'+msg['model']).append('<tr id="'+data.data+'"></tr>');
							$('#ask_for_table input').each(function(){
								$('#'+data.data).append('<td>'+$(this).val()+'</td>');
							});
		                    $('#'+data.data).append('<td><a msg="'+msg['model']+'/'+msg['entity']+'.setData">修改</a></td>');
						}
						$('#ask_for_table').remove();
					}
					this.post(msg);
					//console.dir(msg);
					return;
				}
				//build ask table
				if(this.checkVisible('ask_for_table')){
				    $('#ask_for_table').remove();
					return;
				}
				$('<div id="ask_for_table"><div class="BG" style="background:#fff;filter:alpha(opacity=80);opacity:0.8;border:5px solid #333;"></div><div id="ask_for_table_content"></div>').appendTo('#main');
				$('#'+msg['model']+' .title td').each(function(){
					var name=$(this).attr('name');
					if(name=='action'){
					    $('#ask_for_table_content').append('<a class="btn" msg="'+msg['model']+'/'+msg['entity']+'/step/save.setData">确定</a><a class="btn" msg="@name/ask_for_table.remove">取消</a>');
						return;
					}
				    $('#ask_for_table_content').append($(this).html()+':<input name="'+name+'"/><br />');
				//select
					if($(this).attr('select')){
						var data={};
						Angel.getData({src:$(this).attr('select'),done:function(data){
							 Angel.initSelect({data:data,target:'#ask_for_table input[name='+name+']'});
						}});
					}
					if($(this).attr('setDateTime')){
						if($(this).attr('setDateTime')=='date'){
							Angel.setDate({target:'#ask_for_table input[name='+name+']'});
						}
					}
					if($(this).attr('int')){
						Angel.initInt({length:$(this).attr('int'),target:'#ask_for_table input[name='+name+']'});
					}
				});
			}
			return;
		}
		msg.content='';
		if(!msg['question']){
		    msg['question']=HOME.models[msg['for']];
		}
		$.each(msg['question'],function(k,v){
			//hide some field if needed
			if(v.display&&v.display=='none'){return true;}
			var length='';
			var type={};
			if(v.type){
			    type=v.type.split('|');
				v.type=type[0];
				//get length,if length>20,change the type to textarea
				if(v.type=='link'){
					var link='link="'+type[1]+',name"';
					//get info from link model
					var linkType=HOME.models[type[1]]['name']['type'].split('|');
					length='size="'+linkType[1]/2+'" maxsize="'+linkType[1]+'"';
				}else{
					if(type[1]){
						if(type[1]>100){
							v.type='textarea';
						}
						length='size="'+type[1]/2+'" maxsize="'+type[1]+'"';
					}
				}

			}
			v.br=v.br||'<br />';
			v.value=v.value||'';
			//console.dir(v);
			v.type=v.type||'text';

			switch(v.type){
				case 'text':
					msg.content+=v.label+'&nbsp;:&nbsp;<input id="input_'+k+'" value="'+v.value+'" name="'+k+'"'+length+'/>'+v.br;
					return true;
				case 'link':
					msg.content+=v.label+'&nbsp;:&nbsp;<input '+link+' '+length+' id="input_'+k+'" value="'+v.value+'" name="'+k+'"/>'+v.br;
					return true;
				case 'textarea':
                    msg.content+='<br /><textarea id="input_'+k+'" style="width:420px;height:250px;" name="'+k+'"'+length+'>请在此输入<'+v.label+'></textarea>'+v.br;
					return true;
				case 'password':
                    msg.content+=v.label+'&nbsp;:&nbsp;<input id="input_'+k+'" type="password" name="'+k+'"/>'+br;
				break;
			}
		});
		if(msg['tips']){
		    msg.content+=msg.tips;
		}
		msg['title']=msg['title']||msg['for'];
		delete msg.question;
		this.say(msg);
	}
	//say something to lostnote,there are several types
	this.say=function(msg){
		//tell lostnote via a dialog
		msg.type=msg.type||'dialog';
        if(msg.type=='dialog'){
			if(msg.yes){
				msg.content+='<a msg="'+msg.yes+'" class="A12" style="bottom:14px;left:50%;margin-left:-80px;">确认</a>';
				msg.content+='<a msg="remove/id/dialog" class="A13" style="bottom:14px;left:50%;margin-left:30px;">取消</a>';
			}
			$('body').append('<div id="dialog" class="dialog">\
								 <div id="dialog_lt" class="bg"></div><div id="dialog_rt" class="bg"></div>\
								 <div id="dialog_lb" class="bg"></div><div id="dialog_rb" class="bg"></div>\
								 <div id="dialog_t" class="Bg">'+msg.title+'</div><div id="dialog_r" class="bG"></div>\
								 <div id="dialog_b" class="Bg"></div><div id="dialog_l" class="bG"></div>\
								 <a class="A14" msg="remove/id/dialog" style="cursor:pointer;rigth:5px;top:-23px;"></a>\
								'+msg.content+'<div>');
		}else if(msg.type=='frame'){
		    $('body').append('<div id="frame" class="frame">'+msg.msg+'</div>').fadeIn();
		}else if(msg.type=='tips'){
			$('body').append('<div id="tips" style="position:absolute;z-index:1000">'+msg.msg+'</div>');
			$('#tips').fadeIn().delay(2000).fadeOut();
		}
		//adjust
		if(msg.height){
				$('#'+msg.type).css({height:msg.height});
		}
		if(msg.width){
			$('#'+msg.type).css({width:msg.width});
		}
		this.center(msg.type);
		$('#'+msg.type).show();
		if(msg.base){
			this.move({id:msg.type,base:msg.base});
		}
		this.initInput();
	}
	//initiation of input
	this.initInput=function(id){
		var input=$('#dialog');
	    if(id){
            input=$('#'+id);
		}
		this.initLink();
		input.find('textarea').each(function(){
			//when focus,show editor options(such as upload file)
		    $(this).focus(function(){
			    Angel.say({msg:'<a msg="editor.upload">文件</a>',height:'20',width:'50',base:$(this).attr('id'),type:'frame'});
			});
			return false;
		});
	}
	this.initInt=function(msg){
	    $(msg.target).attr({'maxlength':msg.length}).keyup(function(){
		    $(this).val($(this).val().replace(/[^0-9,.]/g,''));
		});
	}
	this.setDate=function(msg){
	    $(msg.target).focus(function(){
			$('#setDate').remove();
			$('#main').append("<div id='setDate'><input name='year' size='4'/>年<input size='2' name='month'/>月<input size='2' name='day'/>日<a class='btn'>确定</a></div>");
			$(msg.target).attr({id:'settingDate'});
			if($(msg.target).val()==''){
			    var nowDate=new Date();
				$('#setDate input[name=year]').val(nowDate.getFullYear());
                $('#setDate input[name=month]').val(nowDate.getMonth()+1);
				$('#setDate input[name=day]').val(nowDate.getDate());
			}else{
			    var setDate=$(msg.target).val().split('-');
                $('#setDate input[name=year]').val(setDate[0]);
                $('#setDate input[name=month]').val(setDate[1]);
				$('#setDate input[name=day]').val(setDate[2]);
			}
            Angel.move({id:'setDate',base:'settingDate',left:0,top:19,speed:1});
			$('#setDate .btn').click(function(){
				$('#settingDate').val($('#setDate input[name=year]').val()+'-'+$('#setDate input[name=month]').val()+'-'+$('#setDate input[name=day]').val());
				$('#setDate').remove();
			});
		});
	}
	//get foreign key as option
	this.initLink=function(parent){//console.dir(msg);
	    if(!parent){
			parent='#dialog';
		}
        $(parent).find('input[link]').each(function(){
			var id=$(this).attr('id');
			if($('#'+id).attr('inited')){return true;}
		    Angel.getData({src:$(this).attr('link'),done:function(data){
				$('#'+id).focus(function(){
					$('#select').remove();
					$('body').append("<ul id='select' class='select'></ul>");
					$('#select').width($('#'+id).width()).html('');
					$.each(data,function(k,v){
						$('#select').append('<li link_id="'+k+'">'+v+'</li>');
					});
					$('#select li').each(function(){
						$(this).click(function(){
							$('#'+id).val($(this).html()).attr({'link_id':$(this).attr('link_id')});
							$('#select').fadeOut();
						});
					});
					Angel.move({id:'select',base:id,left:0,top:19,speed:1});
				
					$('#select').fadeIn();
					$('#'+id).keyup(function(){
						$('#select li').show();
						if($(this).val()==''||$(this).val().length==1){return true;}
						$('#select li:contains('+$(this).val()+')').siblings().hide();
					});
				});
			}});
			$('#'+id).attr({inited:'true'});
		});
	}
	this.remove=function(msg){
		if(typeof(msg)=='string'){
			this.remove({id:msg});return;
		}
		$('#'+msg.id).remove();
		if(msg.lock){
			$('#lock').fadeOut();
		}
	}
	this.center=function(args){
		Angel.memory=$('#'+args);
		Angel.memory.css({top:'50%',left:'50%','margin-left':-(Angel.memory.width())/2,'margin-top':-(Angel.memory.height())/2});
	}
	this.move=function(args){
			args.speed=args.speed||'slow';
			if(!args.id){args.id='angel'};
		var obj=jQuery('#'+args.id);
		var baseObj=jQuery('#'+args.base);
		    if(args.left!=0){
			    args.left=args.left||baseObj.width();
			}
			if(args.top!=0){
			    args.top=args.top||-50;
			}
		var parent=obj.parent();
		
		var baseOffset=baseObj.offset();
		var parentOffset=parent.offset();
			args.left=baseOffset.left-parentOffset.left+args.left;
			args.top=baseOffset.top-parentOffset.top+args.top;
			args.width=obj.width();
			args.height=obj.height();
			if(args.get){
				return args;
			}
			obj.animate({'left':args.left,'top':args.top},args.speed);
			if(args.move){
				jQuery(document).mousemove(function(e){
					args.left=args.left+e.pageX-baseOffset.left;
					args.top=args.top+e.pageY-baseOffset.top;
					obj.css({left:args.left,top:args.top});
				});
			}
	}
	//initialization
	this.init=function(args){
		if(!args){
			$(document).unbind('click').click(function(e){
				if(!Angel.E['time']){
					Angel.E['time']=Angel.date('getTime');
				}else{
					if((Angel.date('getTime')-Angel.E['time'])<1000){
						Angel.move({base:'body',left:e.pageX,top:e.pageY});
					}else{
						//Angel.E[e.target.id]();
						Angel.E['time']=Angel.date('getTime');
					}
				}
			});
			return;
		}
		if(args.type=='anchor'){
			jQuery(args.parent).find('a').each(function(){
				if(jQuery(this).css('background-position')||jQuery(this).css('background-position-x')!='undefined'&&jQuery(this).attr('status')!='disabled'){
					jQuery(this).unbind('hover').hover(function(){
						if(jQuery(this).attr('status')!='active'){
							jQuery(this).data('origin_bg',jQuery(this).bgPosition());
							jQuery(this).data('hover_bg',jQuery(this).bgPosition('',0,1,1,'true'));
							jQuery(this).css({'background-position':jQuery(this).data('hover_bg')});
							jQuery(this).data('click_bg',jQuery(this).bgPosition('',0,1,1,'true'));
						}else{
							jQuery(this).data('hover_bg',jQuery(this).bgPosition());
							jQuery(this).data('origin_bg',jQuery(this).bgPosition('',0,-1,1,'true'));
							jQuery(this).data('click_bg',jQuery(this).bgPosition('',0,1,1,'true'));
						}	//alert(jQuery(this).css('background-position'));
						jQuery(this).unbind('mousedown').mousedown(function(){
							if(jQuery(this).data('click_time')!='undefined'){
								if(Angel.date('getTime')-jQuery(this).data('click_time')<500){
									ShowAlert2('请不要点击太快!');
									return false;
								}else{
									jQuery(this).data('click_time',Angel.date('getTime'));
									if(jQuery(this).attr('status')!='active'){
										jQuery(this).css({'background-position':jQuery(this).data('click_bg')});
										jQuery(this).attr({'status':'active'});
										var siblings=jQuery(this).siblings('a[status=active]');
										siblings.bgPosition('',0,-1);
										siblings.removeAttr('status');
										jQuery(this).unbind('mouseup').mouseup(function(){
											jQuery(this).css({'background-position':jQuery(this).data('hover_bg')});
										});
									}
									
								}
							}
						});
					},function(){//alert(jQuery(this).data('origin_bg'));
						if(jQuery(this).attr('status')=='active'){return false;}
						jQuery(this).css({'background-position':jQuery(this).data('origin_bg')});
					});
				}
			});
		}
		if(args.type=='tab'){
			jQuery(args.target).each(function(){
				jQuery(this).click(function(){
					angel.data.temp='#'+jQuery(this).attr('id')+'_detail';
					jQuery(angel.data.temp).show();
					jQuery(this).siblings().each(function(){jQuery('#'+jQuery(this).attr('id')+'_detail').hide();});
				});
			});
			if(args.active){
				jQuery(args.active).bgPosition('',0,1);
				jQuery(args.active).attr({'status':'active'});
			}
		}
	}
	this.checkVisible=function(id){
	    if($('#'+id+':visible').size()>0){
		    return true;
		}
		return false;
	}
	this.initPages=function(){
		var path=window.location.pathname.split(MSG.guide)[1]||'';
		var entity=path.split('/');
		if(!entity[2]){
		    entity[2]='all';
		}
		var href=window.location.protocol+'//'+window.location.host+MSG.guide+'/'+entity[1]+'/'+entity[2];
		var pages=$('#pages');
	    var total_pages=pages.attr('pages');
	    if(Number(total_pages)>0){
		    var page=0;
			for(page;page<$('#pages').attr('pages');page++){
			    $('#pages').append('<a class="page" href="'+href+'/page/'+(page+1)+'">'+(page+1)+'</a>');
			}
		}
	}
	this.setHome=function(msg){
	    HOME=msg;
		$('#nav a[location]').removeClass('active');
		$('#nav a[location='+HOME.location+']').addClass('active');
		$('#nav1 a[location]').removeClass('active').parent('li').removeClass('active');;
		$('#nav1 a[location='+HOME.location1+']').addClass('active').parent('li').addClass('active');
		$('#nav1 span').click(function(){
		    if($(this).parent().is('a')){
			    $(this).parent('a').click();
			}
		});
		$('#subnav ul').html($('#nav a:eq(0)').attr('tips')).show();
		$('#nav a').hover(function(){
		    var index=$(this).index();
		    $('#subnav ul').html($(this).attr('tips')).show();
			var left=$(this).position().left+($(this).width()/2)-($('#subnav ul').width()/2);
			if(left<0){left=0;}
			if((left+$('#subnav ul').width()>$('#subnav').width())){
			    left=$('#subnav').width()-$('#subnav ul').width();
			}
			$('#subnav ul').css({'left':left});

		});
		$('#areas').change(function(){
			document.location.href=$(this).val();
		});
	}
	this.getJS=function(url){
	    $(document).append('<script src="'+url+'"></script>');
	}
	this.getModel=function(model){return;
		var url='';
	    if(typeof(model)!='object'){
			if(HOME.jsModels[model]){
			    url=HOME.god;
			}else if(HOME.jsModels['angel_'+model]){
			    url=HOME.angel;
			}
			if(url!=''){
				url+='/js/model/'+model+'.js';
		        this.getJS(url);
			}
		}
		//get relatived model
		switch(model){
		    case 'article':
				this.getModel('editor');
			    break;
			default:
				break;
		}
	}
	this.tabNav=function(info){//console.dir(info);
	    $('#nav1 a[location='+info.target+']').addClass('active').parent('li').addClass('active').siblings('li').removeClass('active').find('a').removeClass('active');
        var height=$('#'+info.group+'_'+info.target).next('.box').css('height');
		$('#'+info.group+'_'+info.target).next('.box').slideDown('fast').siblings('.box').slideUp('fast');;
		$('#'+info.group+'_'+info.target+'_details').show().siblings('*[id$=_details]').hide();
		$('#'+info.group+'_'+info.target).addClass('active').siblings('*[id^='+info.group+']').removeClass('active');
	}
	this.checkAll=function(info){//console.dir(info);
	    if($('#'+info.group).attr('status')!='checked'){
            $('#'+info.group).attr('status','checked');
		    $('#'+info.group).find('input[name="'+info.target+'[]"]').attr('checked','checked');
		}else{
			$('#'+info.group).removeAttr('status');
		    $('#'+info.group).find('input[name="'+info.target+'[]"]').removeAttr('checked');
		}
	}
}
var Angel=new AngelModel();
Angel.build();
//other functions for angel
jQuery.fn.bgPosition = function(x,y,multiple,add,get){
	var position=[];
	if(typeof(jQuery(this).css("background-position"))!='undefined'){
		position=jQuery(this).css("background-position").split(" ");
	}else if(typeof(jQuery(this).css("background-position-x"))!='undefined'){
		position[0]=jQuery(this).css("background-position-x");
		position[1]=jQuery(this).css("background-position-y");
	}else{
            return true;
	}
        position[0]=parseInt(position[0]);
        position[1]=parseInt(position[1]);
        if(typeof(x)=='undefined'){return position[0]+"px "+position[1]+'px';}
	if(!add){add=0}
	if(!multiple){multiple=0;}else{if(add==0){add=1;}}
        if(typeof(x)!='string'&&typeof(x)!='undefined'){position[0]=x-multiple*jQuery(this).width()+add*position[0];}
        if(typeof(y)!='string'&&typeof(y)!='undefined'){position[1]=y-multiple*jQuery(this).height()+add*position[1];}
        if(get=='true'){
        	return position[0]+"px "+position[1]+'px';
        }
        jQuery(this).css("background-position",position[0]+"px "+position[1]+'px');
}
Array.prototype.in_array = function (value){
	var i;
	for (i=0; i < this.length; i++) {
		// Matches identical (===), not just similar (==).
		if (this[i] === value) {
			return true;
		}
	}
	return false;
}

