HeaderV3("uniform_headerv3_mod")
function HeaderV3(asWrapperId){
    var U = iUtil();
    
    var leWrapper = document.getElementById(asWrapperId);
    if(!leWrapper){
        return false;
    }
    var leSearchMod = document.getElementById("headerv3_search_mod");
    var dom = {
        searchMod:leSearchMod,        
        searchKeyWord:leSearchMod.getElementsByTagName("input")[0],
        searchType:leSearchMod.getElementsByTagName("label")[0],
        searchTypeList:leSearchMod.getElementsByTagName("ul")[0],
        searchSubmit:leSearchMod.getElementsByTagName("a")[0],
        mask:document.getElementById("uniform_headerv3_mask")
    };
    var ctrl = {
        cssOver:"overApp",
        cssLast:"last",        
        colCount:12,
        searchType:"searchall.php"
    };
    var view={
        "app":'<li title="{K:AppName}"><a href="{K:OfficialUrl}" style="background-image:url({K:ImageUrl})">{K:AppName}</a></li>'
    };
    var leAppWrapper = document.getElementById("uniform_headerv3_me_links");
    //登录状态
    if(leAppWrapper){        
        dom.myLinks=leAppWrapper;
        dom.appMod=document.getElementById("uniform_headerv3_app_mod");
        dom.appWrapper=document.getElementById("uniform_headerv3_app_list");
        dom.myApp=document.getElementById("uniform_headerv3_me_links").getElementsByTagName("li")[3];
        
        getApps();
        userIndicatior();        
    }else{
		var leLoginMod = document.getElementById("uniform_headerv3_login");
		if(leLoginMod){
			dom.userName = leLoginMod.getElementsByTagName("input")[0];
			dom.userPsw = leLoginMod.getElementsByTagName("input")[1];
			dom.userSubmit = leLoginMod.getElementsByTagName("input")[2];
			U.domReady(function(){
				dom.loginForm = document.createElement("form");
				dom.loginForm.setAttribute("method","post");
				dom.loginForm.setAttribute("action","http://loginv2.myspace.cn/modules/cnlogin/pages/login.ashx");
				document.body.appendChild(dom.loginForm);
				
				U.addEvent(dom.userName,"keyup",onEnterLogin);
				U.addEvent(dom.userPsw,"keyup",onEnterLogin);
				dom.userSubmit.onclick = doLogin;
				
			});			
		}
    }
    listen();
    
    function listen(){
        U.addEvent(dom.myApp,"mouseover",onOverApp);
        U.addEvent(dom.myApp,"mouseout",onOutApp);
        U.addEvent(dom.appMod,"mouseover",onOverApp);
        U.addEvent(dom.appMod,"mouseout",onOutApp);

        U.addEvent(dom.searchType,"mouseover",onOverSearchType);
        U.addEvent(dom.searchType,"mouseout",onOutSearchType);
        U.addEvent(dom.searchTypeList,"mouseover",onOverSearchType);
        U.addEvent(dom.searchTypeList,"mouseout",onOutSearchType);
        
        U.addEvent(dom.searchTypeList,"click",onClickSearchItem);
        
        U.addEvent(dom.searchKeyWord,"keyup",onKeyUpSearchKeyWord);
        U.addEvent(dom.searchSubmit,"click",doSearch);        
    }
    
	function userIndicatior(){
	    var dom = {
	        inbox:document.getElementById("uniform_headerv3_inbox_link")
	    };
	    var ctrl = {
	        getUrl:"http://ajaxv2.myspace.cn/_Common/AjaxService/IndicatorService.svc/json/GetUserIndicator",
	        inboxText:"收件箱",
	        title:document.title,
	        intervalGetData:120000,
	        intervalUpdateView:1000,
	        cssInboxLinkFlip:"flip"        
	    };
	    if(dom.inbox){
	    	getData();	
	    }	    
	    
	    function getData(){
	        var lsUrl = ctrl.getUrl+"?r="+Math.random();
	        U.loadJsonP(lsUrl,updateUI);
	       //updateUI({"result":1,"msg":"你有新的好友请求","cnt":4});
	    }
	    function updateUI(asMsg){
	        var lsMsg = asMsg;
	        var lsHref = "http://messaging.myspace.cn/index.cfm?fuseaction=mail.inbox";
	        switch(lsMsg){
	        	case "新好友":
	        		lsHref = "http://messaging.myspace.cn/index.cfm?fuseaction=mail.friendRequests";
	        		break;
	        	case "新通知":
	        		lsHref = "http://notify.myspace.cn/";
	        		break;	        		
	        }
	        
	        if(lsMsg==""){
	            if(ctrl.viewTimer){
	                clearTimeout(ctrl.viewTimer);                
	            }
	            document.title = ctrl.title;
	            dom.inbox.title = ctrl.inboxText;
	            ctrl.intervalGetData = 120000;
	        }else{
	            dom.inbox.title = lsMsg;
	            flip(lsMsg);
	            
	            ctrl.intervalGetData = 5000;
	        }
	        dom.inbox.href=lsHref;
	        
	        setTimeout(getData,ctrl.intervalGetData);
	    }
	    function getNewMsg(axData){
	    	for(var i=0;i<axData.length;i++){
	    		if(axData[i].EventID==3){
	    			return axData[i];
	    		}
	    	}
	    	for(var i=0;i<axData.length;i++){
	    		if(axData[i].EventID==1){
	    			return axData[i];
	    		}
	    	}
	    	for(var i=0;i<axData.length;i++){
	    		if(axData[i].EventID==12){
	    			return axData[i];
	    		}
	    	}
	    	return axData[0];
	    }
	    function flip(asMsg,abShow){
	        var lsMsg=asMsg;
	        dom.inbox.className = ctrl.cssInboxLinkFlip;
	        if (abShow){
	            var lxStr = [];
	            for(var i=0;i<asMsg.length; i++){
	                lxStr.push("　");
	            }
	            lsMsg = lxStr.join("");
	            dom.inbox.className = "";
	        }
	        document.title = "【"+lsMsg+"】" + " - "+ ctrl.title;
	        if(ctrl.viewTimer){
	        	clearTimeout(ctrl.viewTimer);
	        }
	        ctrl.viewTimer = setTimeout(function(){
	            flip(asMsg,!abShow);
	        },ctrl.intervalUpdateView);
	    }
	
	}
    
	function onEnterLogin(event){
		event = event || window.event;
		if(event.keyCode==13){
			doLogin();
		}
	}       
    function doLogin(){
		var leUserName = document.createElement("input");
		insertInput("emailAddr",dom.userName.value);
		insertInput("registPW",dom.userPsw.value);
		var lsUrl = location.href;
		
		if(location.href.indexOf("http://loginv2.myspace.cn")!=-1){
			lsUrl = document.referrer;
		}
		insertInput("ru",lsUrl);
		dom.loginForm.submit();
    }
	function insertInput(asName,asValue){
		var leInput = document.createElement("input");
		leInput.type="hidden";
		leInput.name = asName;
		leInput.value = asValue;
		dom.loginForm.appendChild(leInput);			
	}
	function onKeyUpSearchKeyWord(event){
		event = event || window.event;
		if(event.keyCode==13){
			doSearch();
		}
	}   
    function doSearch(){
    	setTimeout(function(){
	        location.href="http://cso.myspace.cn/search/"+ctrl.searchType+"?kw="+encodeURIComponent(dom.searchKeyWord.value);    		
    	},0);
    }
    function onClickSearchItem(event){
        event = event || window.event;
        var leTarget = event.srcElement || event.target;
        if(leTarget.tagName.toLowerCase()=="a"){
            var lsText = leTarget.innerHTML;
            if(lsText.length==2){
                lsText="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+lsText;
            }
            dom.searchType.innerHTML = lsText;
            ctrl.searchType=leTarget.getAttribute("itype");
            onOutSearchType();
        }
    }
    function sizeMask(){
    	if(!dom.mask){
    		return;
    	}
    	var leParent = dom.mask.parentNode;
    	dom.mask.style.width=leParent.offsetWidth-1+"px";
    	dom.mask.style.height=leParent.offsetHeight-1+"px";
    }
    
    function onOverApp(){    	
        U.addClass(dom.myLinks,ctrl.cssOver);
        dom.appMod.style.display="block";
        sizeMask();
    }
    function onOutApp(){
        U.removeClass(dom.myLinks,ctrl.cssOver);
        dom.appMod.style.display="none";
    }
    function onOverSearchType(){
        dom.searchTypeList.style.display="block";
    }
    function onOutSearchType(){
        dom.searchTypeList.style.display="none";    
    }    
    function getApps(){
    	//for school channel without MySpace.Applications.DLL
    	if(typeof(JS_HEADERV3_TYPE)!="undefined" && JS_HEADERV3_TYPE=="OLD"){
	    	U.domReady(function(){
	    		U.loadJsonP("http://ajaxv2.myspace.cn/_common/ajaxservice/core.svc/json/userinfo",updateAppUI);    		
	    	});	       
    	}else{
 			var lxUl = dom.appWrapper.getElementsByTagName("ul");
			U.addClass(lxUl[lxUl.length-1],ctrl.cssLast);  		
    	}
    }
    function updateAppUI(aoData){
        var lxData = aoData.Apps;
        if(!lxData){
            return;
        }
        var lxHTML = ["<ul>"];
        for(var i=0;i<lxData.length;i++){            
            if(i>0&&i%ctrl.colCount==0){
                lxHTML.push("</ul>");
                lxHTML.push("<ul>");
            }
            lxHTML.push(U.smartView(view.app,lxData[i]));
        }
        lxHTML.push("</ul>");
        dom.appWrapper.innerHTML = lxHTML.join("");
        
        var lxUl = dom.appWrapper.getElementsByTagName("ul");
        U.addClass(lxUl[lxUl.length-1],ctrl.cssLast);
    }
    
    function iUtil(){
        return {        
            loadJsonP: function(asUrl, afCallback){
                if (!asUrl) {
                    return false;
                }
                var lsUrl = asUrl;
                if (lsUrl.indexOf("callback=") == -1) {
                    var lsGUID="_autoCallBack"+Math.floor(Math.random()*16000).toString(16);
                    lsUrl = lsUrl + (lsUrl.indexOf("?") != -1 ? "&" : "?") + "callback=" + lsGUID;
                }
                window[lsGUID] = afCallback;
                
                var leTag = document.createElement('script');
                leTag.setAttribute('type', 'text/javascript');
                leTag.setAttribute('src', lsUrl);
                document.getElementsByTagName('head')[0].appendChild(leTag);				
            },  
			domReady: function(afCallback){
				if (!afCallback){
					return;
				}
				if (document.addEventListener) {
					document.addEventListener("DOMContentLoaded", function(){
						afCallback()
					}, false);
				}else{
					(function(){
						try {
							document.documentElement.doScroll("left");
						} catch(error) {
							setTimeout( arguments.callee,0);
							return;
						}
						afCallback();
					})();
				}
			},                 	
            addEvent:function(aeTag, asEvt, afHandler){
                if (!aeTag) {
                    return false;
                }
                if (navigator.userAgent.indexOf("IE") != -1) {
                    aeTag.attachEvent("on" + asEvt, afHandler);
                } else {
                    aeTag.addEventListener(asEvt, afHandler, false);
                }
            }, 
            byClass:function(asClass, aeP, asTag){
                var lxNew = [];
                asClass = asClass == null ? "" : asClass;
                aeP = aeP == null ? document : aeP;
                asTag = asTag == null ? "*" : asTag;
                
                var lxTag = aeP.getElementsByTagName(asTag);
                var pattern = new RegExp("(^|\s)" + asClass + "(\s|$)");
                for (var i = 0; i < lxTag.length; i++) {
                    if ((" " + lxTag[i].className + " ").indexOf(" " + asClass + " ") != -1) {
                        lxNew.push(lxTag[i]);
                    }
                }
                return lxNew;
            },            
            hasClass:function(aeTag,asClass){
                if (!aeTag || !aeTag.className) {
                    return false;
                }
                if ((" " + aeTag.className + " ").indexOf(" " + asClass + " ") == -1) {
                    return false;
                }
                return true;		
            },
            addClass:function(aeTag, asClass){
                if (!aeTag) {
                    return false;
                }		
                asClass = asClass == null ? 'cnViOver' : asClass;
                if ((" " + aeTag.className + " ").indexOf(" " + asClass + " ") == -1) {
                    aeTag.className = (aeTag.className + ' ' + asClass).replace(/(^\s*)|(\s*$)/g, "");
                }
                return aeTag;
            },
            removeClass:function(aeTag, asClass){
                if (!aeTag) {
                    return false;
                }		
                asClass = asClass == null ? 'cnViOver' : asClass;
                aeTag.className = aeTag.className.replace(new RegExp('(^|\\s)' + asClass + '(?:\\s|$)'), '$1').replace(/(^\s*)|(\s*$)/g, "");
            },
            trim:function(asStr){
                asStr = asStr == null ? "" : asStr;
                return asStr.replace(/(^\s*)|(\s*$)/g, "");
            },        
            smartView:function(asHTML, axData){
                var lxLeft = asHTML.split("{K:");
                var lxHTML = [];
                if(!axData){
                    return false;
                }
                if(axData.constructor != Array){
                    if(axData.constructor == Number){
                        var liIndex = axData;
                        axData = [];				
                        axData[liIndex - 1] = {};
                    }else{
                        axData = [axData];	
                    }
                }
                for (var i = 0; axData && i < axData.length; i++) {
                    for (var j = 0; j < lxLeft.length; j++) {
                        var lsProp = lxLeft[j].substring(0, lxLeft[j].indexOf("}"));
                        if (lsProp != "") {
                            if(lsProp == "k"){            		
                                lxHTML[lxHTML.length] = i;
                                lxHTML[lxHTML.length] = lxLeft[j].substring(lxLeft[j].indexOf("}") + 1);
                            }else{
                                lxHTML[lxHTML.length] = axData[i][lsProp];
                                lxHTML[lxHTML.length] = lxLeft[j].substring(lxLeft[j].indexOf("}") + 1);
                            }
                           
                        }
                        else {
                            lxHTML[lxHTML.length] = lxLeft[j];
                        }
                    }
                }
                return lxHTML.join("");
            }
        }
    }
    // end of util
}