/**
 * author:ares date:2011-07-25
 */
(function ($) {
    //查找当前元素的第一个匹配的form元素
	$.datepicker.regional['zh-CN'] = {
			closeText: '关闭',prevText: '上月',nextText: '下月',currentText: '今天',
			monthNames: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
			monthNamesShort: ['一','二','三','四','五','六','七','八','九','十','十一','十二'],
			dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
			dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
			dayNamesMin: ['日','一','二','三','四','五','六'],
			weekHeader: '周',dateFormat: 'yy-mm-dd',firstDay: 1,isRTL: false,
			showMonthAfterYear: true,yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
	//$.getScript("/script/jquery-tecul-logic.js", function(){});
    $.fn.findForm = function () {
        var par = $(this).parent();
        if (par.is('form') == true)return par;
        if (par.is('body') == false) return par.findForm();
        return $();
    };
    $.fn.jparent=function(expr){
    	if($(this).is(expr))return $(this);
    	if($(this).parent().is(expr))return $(this).parent();
    	if($(this).is('body')==true)return $();
    	return $(this).parent().jparent(expr);
    };
    $.fn.findParent = function (target) {
        var par = $(this).parent();
        if (par.is(target) == true)  return par;
        if (par.is('body') == false) return par.findParent(target);
        return $();
    };
    $.fn.finddiv=function(key,value){
    	var par=$(this).parent();
    	if(par==undefined||par==$())return false;
    	if(par.attr(key)!=undefined&&par.attr(key)==value){
			return true;
		}else if(par.is('body')==false){
			return par.finddiv(key,value);
		}
    	return false;
    };
    $.fn.jtmpl=function(model){
    	$(this).html('');//data-template="temp_calendar_list"
    	var temp=$(this).attr('data-template');
    	var template=$('div#'+temp);
    	$(template).tmpl(model).appendTo($(this));
    	return $(this);
    };    
   
    $.fn.jlookup=function (options) {
        var opts = $.extend({}, $.fn.jlookup.defaults, options); 
        var tmplookupid='jui-'+$.tecul.guid();
        if(opts.single==true){
        	if($('#tecul-ui-lookup-div').length<=0){
            	var tmpid=$.tecul.guid();
        		$('body').append('<div id="tecul-ui-lookup-div" style="background-color:white;" class="jui-lookup" ></div>');
        		$('#tecul-ui-lookup-div').attr('tecul-ui-lookup-div-id',tmpid);
        	}
            var ctrl=$('#tecul-ui-lookup-div');
            ctrl.html('');ctrl.data('status',0);
            if(opts.url!=null){
            	$.ajax({type: "Get", url: opts.url, cache:opts.cache}).done(function (data) {ctrl.html(data);});
            }else if(opts.content!=null){ctrl.html(opts.content);}
            tmplookupid='tecul-ui-lookup-div';
        }else{        	
            if($(this).data('tecul-ui-lookup-id')!=undefined){
            	tmplookupid=$(this).data('tecul-ui-lookup-id');
            }else{
            	$(this).data('tecul-ui-lookup-id',tmplookupid);
            	$('body').append('<div id="'+tmplookupid+'" style="background-color:white;" class="jui-lookup" ></div>');
            	$('div#'+tmplookupid).attr('tecul-ui-lookup-div-id',tmplookupid);
        		var tmpctrl=$('div#'+tmplookupid);
        		tmpctrl.data('status',0);
                if(opts.content!=null){tmpctrl.html(opts.content);}
            }
            if(opts.url!=null){
            	$.ajax({type: "Get", url: opts.url, cache:opts.cache}).done(function (data) {
            		$('div#'+tmplookupid).html(data);
                });
            }
        }
        var ctrl=$('div#'+tmplookupid);var target=$(this);
        if(opts.width!=undefined||opts.width!=null)ctrl.width(opts.width);
        if(opts.height!=undefined||opts.height!=null) ctrl.height(opts.height);        
    	ctrl.show();
    	ctrl.css({'z-index':$.fn.juidefaults.getzindex()});
		ctrl.position({my: "left top",at: "left bottom",collision:'flip',offset:opts.offset,of:$(this)});
		
		if(opts.autoclose==false){
			var closefunc=function(sender){
				if($(sender.target).jparent('[tecul-ui-lookup-div-id]').length==0){ctrl.hide();$('body').unbind('mousedown',closefunc);}
			};
			$('body').bind('mousedown',closefunc);
		}else{						
			target.one('mouseout',function(){
				var tmp=function(){
					 if(ctrl.data('status')==0){ctrl.hide();ctrl.data('status',1);}
				 };
				 setTimeout(tmp,500);
			});			
			ctrl.hover(function(){
				ctrl.data('status',2);
				if(ctrl.data('status')!=1)ctrl.show();
			},function(){ctrl.hide();ctrl.data('status',0);});
			var closefunc=function(sender){
				if($(sender.target).jparent('[tecul-ui-lookup-div-id]').length==0){
					ctrl.hide();ctrl.data('status',0);
					$('body').unbind('mousedown',closefunc);
				}				
			};
			$('body').unbind('mousedown',closefunc);
			$('body').bind('mousedown',closefunc);
		}       
    };
    $.fn.jlookup.hide=function(){
    	if($('#tecul-ui-lookup-div').length<=0)return;
        var ctrl=$('#tecul-ui-lookup-div');ctrl.hide();
        ctrl.html('');ctrl.data('status',0);
    };
    $.fn.jlookup.defaults = {url:null,autoclose:false,cache:true, width: null,single:true, height:null,content:null,offset:'0 0'};
    
    $.fn.jcombox=function(options,param){
    	if (typeof options == 'string') {
            return $.fn.jcombox.methods[options]($(this), param);
        }
    	if($(this).data('jcomboxid')!=undefined)return;
    	$(this).data('options',options);
    	var opts = $.extend({}, $.fn.jcombox.defaults, options);
    	$(this).data('options',opts);
    	var tmpid=$.tecul.guid();
    	$(this).data('jcomboxid',tmpid);
    	$('body').append('<div id="'+tmpid+'" class="jui-lookup" style=""  ></div>');
    	$('#'+tmpid).attr('tecul-ui-jcombox-div-id',tmpid);       
        if(opts.url!=null){
        	$.ajax({type: "Get", url: opts.url, cache: opts.cache}).done(function (data) {
            	$('#'+tmpid).html(data);                	
            });
        }else if(opts.content!=null){
        	$('#'+tmpid).html(opts.content);
        }
        $('#'+tmpid).hide();
        if(opts.isopen==true){
        	$(this).click(function(){$(this).jcombox('show');});
        }        
    };
    $.fn.jcombox.defaults={url:null,autoclose:true,clickclose:false,isopen:true,
    		cache:false,content:null,offset:'0 0',callback:function(){}};
    $.fn.jcombox.methods={
       	hide:function(jq,param){
       		$('#'+$(jq).data('jcomboxid')).hide();
       		var opts=$(jq).data('options');
       		var tempopts = $.extend({}, $.fn.jcombox.defaults, opts);
       		if(tempopts.callback!=undefined&&$.isFunction(tempopts.callback)){
					tempopts.callback();
			}
       	},
       	show:function(jq,param){
       		$('#'+$(jq).data('jcomboxid')).show();
       		$('#'+$(jq).data('jcomboxid')).css({'z-index':$.fn.juidefaults.getzindex()});
      		var opts=$(jq).data('options');
       		var tempopts = $.extend({}, $.fn.jcombox.defaults, opts);
       		$('#'+$(jq).data('jcomboxid')).position({my: "left top",at: "left bottom",
       			collision:'flip',offset:tempopts.offset,of:$(jq)
       		});
       		if(tempopts.autoclose==true){
       			var closefunc=function(sender){
       				if($(sender.target).attr('tecul-ui-jcombox-div-id')==undefined
       					&& $(sender.target).finddiv('tecul-ui-jcombox-div-id',$(jq).data('jcomboxid'))==false){
       					$('#'+$(jq).data('jcomboxid')).hide();
       					$('body').unbind('mousedown',closefunc);
       					if(tempopts.callback!=undefined&&$.isFunction(tempopts.callback)){
           					tempopts.callback();
           				}
       				}else if($(sender.target).attr('tecul-ui-jcombox-div-id')!=undefined
       					&&$(sender.target).attr('tecul-ui-jcombox-div-id')!=$(jq).data('jcomboxid')){
       					$('#'+$(jq).data('jcomboxid')).hide();
       					$('body').unbind('mousedown',closefunc); 
       					if(tempopts.callback!=undefined&&$.isFunction(tempopts.callback)){
           					tempopts.callback();
           				}
       				}       				
       			};
       			$('body').bind('mousedown',closefunc);        			
       		}
       		if(tempopts.clickclose==true){
       			$('#'+$(jq).data('jcomboxid')).click(function(){
       				$(this).hide();
       				if(tempopts.callback!=undefined&&$.isFunction(tempopts.callback)){
       					tempopts.callback();
       				}
       			});
       		}       		
       	},
       	options:function(jq,param){        		
       		var opts=$(jq).data('options');
       		var tmp=$.extend({},opts,param);
       		$(jq).data('options',tmp);
       	}
    };
    
    $.fn.jdialog=function(options,param){    	
    	if (typeof options == 'string') {return $.fn.jdialog.methods[options]($(this), param);}
    	$(this).data('options',options);    	
    	var opts = $.extend({}, $.fn.jdialog.defaults, options);
    	if(opts.width!=null&&opts.height!=null){
    		$(this).css({ visibility:'visible'});
    		$(this).dialog("destroy");
    		$(this).dialog({
        	    autoOpen: false,height: opts.height+20,width: opts.width+20,
        	    modal: true,resizable:opts.resizable,position:'center',
        	    resize:function(){$(this).dialog('option','position','center');},
        	    open:function(){$(this).dialog('option','position','center');}
        	});
    	
    	}else if(opts.width==null&&opts.height==null){
    		$(this).dialog("destroy");
    		$(this).dialog({
        	    autoOpen: false, modal: true,resizable:opts.resizable,position:'center',title:opts.title,
        	    resize:function(){
        	    	$(this).dialog('option','position','center');
        	    },open:function(){
        	    	$(this).dialog('option','position','center');
        	    }
        	});
    	}else if(opts.width!=null){
    		$(this).dialog( "destroy" );
    		$(this).dialog({
    			title:opts.title,autoOpen: false, modal: true,width: opts.width+20,resizable:opts.resizable,position:'center',
        	    resize:function(){
        	    	$(this).dialog('option','position','center');
        	    },open:function(){
        	    	$(this).dialog('option','position','center');
        	    }
        	});
    	}
    	else if(opts.heigh!=null){
    		$(this).dialog("destroy");
    		$(this).dialog({
    			title:opts.title,
        	    autoOpen: false, modal: true,height: opts.height+20,resizable:opts.resizable,position:'center',
        	    resize:function(){
        	    	$(this).dialog('option','position','center');
        	    },open:function(){
        	    	$(this).dialog('option','position','center');
        	    }
        	});
    	}
		//$(this).parent().addClass('ui-dialog ui-draggable ui-resizable jui-win-layout');
    	return $(this);    	
    };
    $.fn.jdialog.defaults={width:null,height:null,url:null,title:'',content:null,resizable:true,cache:false};
    $.fn.jdialog.methods={
    	hide:function(jq,param){
    		$(jq).dialog('close');
    	},
    	show:function(jq,param){
    		var temp={close:function(){}};
    		var opts = $.extend({}, temp, param);
    		jq.dialog({close:opts.close});     		
    		var opts=$(jq).data('options');
    		if(opts.height==undefined){
    			$(jq).removeClass('ui-dialog-content');
    			$(jq).removeClass('ui-widget-content');
    		}   
    		if(opts.url!=null){            	
            	$.ajax({type:'get',url:opts.url,cache:opts.cache}).done(function(data){
            		$(jq).html(data);
            		$(jq).dialog('open');
            		$(jq).parent().css({'z-index':$.fn.juidefaults.getzindex()});
            	});
        	}else if(opts.content!=null){
        		$(jq).dialog('open');   
        		$(jq).html(opts.content);
        		$(jq).parent().css({'z-index':$.fn.juidefaults.getzindex()});
        	}else{
        		$(jq).dialog('open');
        		$(jq).parent().css({'z-index':$.fn.juidefaults.getzindex()});
        	}
    	},
    	set:function(jq,param){
    		var temp={close:function(){}};
    		var opts = $.extend({}, temp, param);
    		jq.dialog({close:opts.close});    		
    	}
    	
    };    
    
    $.fn.juidefaults={zindex:100000,
    		getzindex:function(){//19999
    			var tmp=$.fn.juidefaults.zindex;
    			$.fn.juidefaults.zindex=$.fn.juidefaults.zindex+1;
    			return tmp;
    		}
    };
   $.extend({
    	jconfirmDefaults:{width:300,height:200,content:'',confirm:function(){},cancel:function(){},title:'',borderBar:true,resizable:true,cache:false},
    	jconfirm:function(options){
    		var opts = $.extend({}, $.jconfirmDefaults, options);
        	if($('#tecul-jui-confirm-win-form').length<=0){
        		var htm=new Array();
            	htm.push('<div id="tecul-jui-confirm-win-form" style="width:100px; height:150px;">');
        		htm.push('</div>');    		
        		$('body').append(htm.join(' '));
        		$('#tecul-jui-confirm-win-form').dialog({
            	    autoOpen: false,
            	    width: opts.width,
            	    modal: true,resizable:false
            	});
        		var htm=new Array();
        		htm.push('<span>'+opts.title+'</span>');
        		htm.push('<a href="#" juitag="close" ></a>');
        		$('#tecul-jui-confirm-win-form').prevUntil().removeClass();
        		$('#tecul-jui-confirm-win-form').prevUntil().addClass(' jui-win-layout-head');
        		$('#tecul-jui-confirm-win-form').parent().draggable({cancel:'div.ui-dialog-titlebar'});
        		$('#tecul-jui-confirm-win-form').parent().draggable({handle:'div.jui-win-layout-head'});
        		$('#tecul-jui-confirm-win-form').prevUntil().html(htm.join(' '));
        		var panel=$('#tecul-jui-confirm-win-form');
        		$('a[juitag=close]',$('#tecul-jui-confirm-win-form').parent()).click(function(){
        			$(panel).dialog('close');
        		});
        		$('#tecul-jui-confirm-win-form').parent().addClass('ui-dialog ui-draggable ui-resizable jui-win-layout');
        	}    	
        	var vcontent=new Array();
        	vcontent.push('<div style="height:100%;">');
        	vcontent.push('<div jui-confirm-content="true" style="width:100%;;" ></div>');
        	vcontent.push('<div jui-confirm-buttons="true" ><div style="float:right;" ><a href="javascript:void()" jui-confirm-close-yes="true">确定</a>&nbsp;&nbsp;<a href="javascript:void()" jui-confirm-close-no="true">取消</a></div><div style="clear:both;"></div></div>');
        	vcontent.push('</div>');
        	$('#tecul-jui-confirm-win-form').html(vcontent.join(' '));
        	$('#tecul-jui-confirm-win-form').dialog('open'); 
        	$('#tecul-jui-confirm-win-form').find('div[jui-confirm-content=true]').html(opts.content);
    		$('#tecul-jui-confirm-win-form').dialog('option','position','center');
    		$('#tecul-jui-confirm-win-form').css({'z-index':$.fn.juidefaults.getzindex()});
    		$('a[jui-confirm-close-yes]',$('#tecul-jui-confirm-win-form')).unbind('click').bind('click',function(){
    			if(options.confirm!=undefined&&$.isFunction(options.confirm)){
    				options.confirm();
    			}
    			$('#tecul-jui-confirm-win-form').dialog('close');
    		});
    		$('a[jui-confirm-close-no]',$('#tecul-jui-confirm-win-form')).unbind('click').bind('click',function(){
    			if(options.cancel!=undefined&&$.isFunction(options.cancel)){
    				options.cancel();
    			}
    			$('#tecul-jui-confirm-win-form').dialog('close');
    		});
    	},
    	jui:{
    		wrap:function(id){
    			id='jui-wrap-div-id-'+id;
    			if($('div[jui-wrap-div][id='+id+']').length<=0){
    				var htm=new Array();
                	htm.push('<div jui-wrap-div="true" id="'+id+'" >');
            		htm.push('</div>');    		
            		$('body').append(htm.join(' '));
    			}
    			return $('div[jui-wrap-div][id='+id+']');
    		},
    		jdialogdefault:{width:300,height:200,content:'',title:''
    			,borderBar:true,resizable:true,cache:false,confirm:function(){},cancel:function(){}},
    		jdialog:function(options){
    			if (typeof options == 'string') {
    				if(options=='close'){ 
    					$('#tecul-jui-uidialog-win-form').find('div[jui-uidialog-content=true]').html('');
    					$('#tecul-jui-uidialog-win-form').dialog('close');
    				}
    				return;
    	        }
        		var opts = $.extend({}, $.jui.jdialogdefault, options);
            	if($('#tecul-jui-uidialog-win-form').length<=0){
            		var htm=new Array();
                	htm.push('<div id="tecul-jui-uidialog-win-form" style="width:100px; height:150px;">');
            		htm.push('</div>');    		
            		$('body').append(htm.join(' '));
            		$('#tecul-jui-uidialog-win-form').dialog({
                	    autoOpen: false,title:opts.title,width: opts.width,
                	    modal: true,resizable:opts.resizable,close:function(){
                	    	$('#tecul-jui-uidialog-win-form').find('div[jui-uidialog-content=true]').html('');
                	    }
                	});
            		var htm=new Array();            		
            	}  
            	var tmpctrl=$('#tecul-jui-uidialog-win-form');    		
            	vcontent=new Array();
            	vcontent.push('<div style="height:100%;">');
            	vcontent.push('<div jui-uidialog-content="true" style="width:100%;;" ></div>');
            	vcontent.push('</div>');
            	tmpctrl.html(vcontent.join(' '));
            	tmpctrl.dialog('open'); 
            	tmpctrl.dialog('option',{width:opts.width});
            	tmpctrl.find('div[jui-uidialog-content=true]').html(opts.content);
        		tmpctrl.dialog('option','position','center');
        		tmpctrl.css({'z-index':$.fn.juidefaults.getzindex()});        		
        	}
    	},
        tecul: {
        	msg:function(){
        		alert('fdsf');
        	},
        	additem:function(ar,item){
        		var sign=true;
            	sign=$.each(ar,function(index,tmp){
            		if(tmp==item)return false;
            	});
            	if(sign==false)ar.push(item); 
        	},
        	removeitem:function(ar,item){
        		var sign=true;var data=[];
        		$.each(ar,function(index,tmp){
        			if(tmp!=item)data[index]=tmp;
        		});
        		return data;
        	},
        	guid: function () {
                return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + "-" +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + "-" +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + "-" +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) + "-" +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1) +
                        (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
            },
            bug:function(obj){
            	var str='';
            	for(var item in obj){str=str+' >> '+item;}
            	return str;
            },
        	addfavorite:function(url,name){
        		try{
        			window.external.addFavorite(url,name);
        		}catch(e){
        			try{
        				window.sidebar.addPanel(name,url,'');
        			}catch(e){
        				alert('请使用Ctrl+D添加收藏夹');
        			}
        		}
        	},
        	formattime:function(time){
        		if(typeof time=='number'){
        			time=new Date(time);
        		}
        		if(typeof time=='string'){
        			time=new Date(Date.parse(time.replace(/-/g,"/")));
        		}
        		if(typeof time=='object'){
        			var months=time.getMonth()+1;
        			if(months<10){
        				months='0'+months;
        			}	
        			var days=time.getDate();
        			if(days<10){
        				days='0'+days;
        			}
        			var hours=time.getHours();
        			if(hours<10){
        				hours='0'+hours;					
        			}
        			var minutes=time.getMinutes();
        			if(minutes<10){
        				minutes='0'+minutes;
        			}
        			var data=time.getFullYear()+"-"+months+"-"+days+" "+hours+":"+minutes;
        			return data;
        		}
        	}
    		
        },//tecul
    	tone:{
    		
    	} //tone
    });
   $.extend({
		logic : {			

		},
		lib:{
			test:function(){
				alert(222222);
			}
		}
   		
	});
})(jQuery)
