﻿function isIe() {

    var nu = navigator.userAgent.toLowerCase();
    if (nu.indexOf('msie') > -1) {//ie
        return true;
    }
    else {//other(firefox)
        return false;
    }
}

var Class = {
    create: function () {
        return function () {
            this.initialize.apply(this, arguments);
        }
    }
}

Function.prototype.bind = function (object) {
    var __method = this;
    return function (event) {
        __method.apply(object, arguments);
    }
}
var fosoftAjax = Class.create();

fosoftAjax.prototype = {

    initialize: function () {
        this.requestHandler = null;
        this.xmlHttpRequest = this.createXMLHttpRequest();
    },
    createXMLHttpRequest: function () {

        var request = false;
        ////Mozilla 浏览器
        if (window.XMLHttpRequest) {
            request = new XMLHttpRequest();
            if (request.overrideMimeType) {
                request.overrideMimeType = 'text/xml';
            }
        }
        else if (window.ActiveXObject) {//IE

            var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
            for (var i = 0; i < versions.length; i++) {
                try {
                    request = new ActiveXObject(versions[i]);
                    if (request) {
                        return request;
                    }
                }
                catch (e) { }
            }
        }

        return request;
    },
    success: function () {
        try {
            //请求成功
            if (this.xmlHttpRequest.readyState == 4) {
                if (this.xmlHttpRequest.status == 200) {

                    return true;
                }
                else {
                    return false;
                }
            }
            else {

                return false;
            }
        }
        catch (e) {

            return false;
        }
    },
    post: function (url, handler) {//post方式请求:url:请求地址 parms:请求参数,字符串格式,handler:onreadystatechange外部绑定事件

        this.requestHandler = handler;
        this.xmlHttpRequest.open('POST', url, true);
        this.xmlHttpRequest.onreadystatechange = this.requestHandler.bind(this);
        this.xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        this.xmlHttpRequest.send(null);
    },
    get: function (url, handler) {//get方式请求:url:请求地址 parms:请求参数,字符串格式,handler:onreadystatechange外部绑定事件
        this.requestHandler = handler;
        if (window.XMLHttpRequest) {
            this.xmlHttpRequest.open('GET', url);
            this.xmlHttpRequest.onreadystatechange = this.requestHandler.bind(this);
            this.xmlHttpRequest.send(null);
        }
        else {
            this.xmlHttpRequest.open('GET', url, true);
            this.xmlHttpRequest.onreadystatechange = this.requestHandler.bind(this);
            this.xmlHttpRequest.send(null);
        }
    }
}


var Page = Class.create();
Page.prototype = {

    initialize: function (type) {
        this.type = type;
        this.index = 1;
    },
    types: {
        jobs: 'jobs',
        news: 'news'
    },
    createpage: function () {

        var pageHtml = '';
        var count = 0;
        if (this.type == this.types.jobs) {
            count = jobPageCount;

        }
        else if (this.type == this.types.news) {
            count = newPageCount;
        }
        else { count = 0; }

        if (this.index < 1) {
            this.index = 1;
        }
        if (this.index > count) {
            this.index = count;
        }
        if (this.type == this.types.jobs) {
            pageHtml += '<a href="javascript:showjob(1)"><span>首页</span></a>';
            pageHtml += '<a href="javascript:showjob(' + (this.index - 1) + ')"><span>上一页</span></a>';
            pageHtml += '<a href="javascript:showjob(' + (this.index + 1) + ')"><span>下一页</span></a>';
            pageHtml += '<a href="javascript:showjob(' + count + ')"><span>尾页</span></a>';
        }
        else if (this.type == this.types.news) {
            pageHtml += '<a href="javascript:shownews(1)"><span>首页</span></a>';
            pageHtml += '<a href="javascript:shownews(' + (this.index - 1) + ')"><span>上一页</span></a>';
            pageHtml += '<a href="javascript:shownews(' + (this.index + 1) + ')"><span>下一页</span></a>';
            pageHtml += '<a href="javascript:shownews(' + count + ')"><span>尾页</span></a>';
        }
        pageHtml += '<span>页次：<font color="red">' + this.index + '</font>/' + count + '</span>';

        document.getElementById('pages').innerHTML = pageHtml;
    },
    gopage: function (index) {
        this.index = parseInt(index);
        this.createpage();
    }
}

var fajax = new fosoftAjax();

/*
* 方法:getjob()
* 描述:请求jobs数据
*/
var jobList = [];
var jobListLen = 0;//job信息总数
var jobPageCount = 0; //job以每页jobPagePer分页后的分页总数
var jobPageIndex = 0; //当前显示job的分页索引,范围是0 ~ jobPageCount - 1（jobPageCount > 0）
var jobPagePer = 5;   //每页显示的job信息条数
var jobPage = null;
var jobXml = null;
var jobType = 'society';//默认社会招聘,campus：校园招聘

function getjob(type) {
    jobType = type;
    var url = 'mgr/xml/jobs.xml';//相对路径用get方法请求,完整的http路径用get\post请求
    fajax.get(url,getjobHandler);
}
function getjobHandler() {
    if (fajax.success()) {
        jobXml = fajax.xmlHttpRequest.responseXML;
        var jobs = jobXml.getElementsByTagName('job');
        var len = jobs.length;
        if (len < 1) return;
        for (var i = 0; i < len; i++) {
            var job = jobs[i];
            if (job.getAttribute('types') == jobType) {
                jobList.push(job);
            }
        }
        jobListLen = jobList.length;
        if (jobListLen < 1)
            return;
        if (jobListLen % jobPagePer == 0) {

            jobPageCount = parseInt(jobListLen / jobPagePer);
        }
        else {

            jobPageCount = parseInt(jobListLen / jobPagePer) + 1;
        }
        //如果有数据，则初始化jobPageIndex = 1
        if (jobPageCount > 0) {
            jobPageIndex = 1;
            jobPage = new Page('jobs');
            showjob(jobPageIndex);
        }
    }
}

function showjob(index) {
    jobPageIndex = parseInt(index);
    if (jobPageIndex < 1) {
        jobPageIndex = 1;
    }
    if (jobPageIndex > jobPageCount) {

        jobPageIndex = jobPageCount;
    }
    var startIndex = (jobPageIndex - 1) * jobPagePer;
    var endIndex = jobPageIndex * jobPagePer;

    if (endIndex > jobListLen)
        endIndex = jobListLen;
    var jobHtml = '';
    for (var i = endIndex -1;i >= startIndex; i--) {
        var list = jobList[i];
        var job = list.childNodes;
        if (!job) continue;
        var len = job.length;
        if (len < 1) continue;
        for (var j = 0; j < len; j++) {
            var items = job[j].childNodes;
            if (!items) continue;
            var ilen = items.length;
            if (ilen < 1) continue;
            var addedDes = false;//是否已添加过des mark
            var addedContent = false; //是否已添加过content mark
            for (var k = 0; k < ilen; k++) {
                var item = items[k];
                if (!item || !item.nodeName) continue;
                if (item.nodeName != 'item') continue;
                var str = '';
                if (!isIe()) {
                    str = item.textContent;
                }
                else {
                    str = item.text;
                }
                str = '<p>' + str + '</p>';
                if (job[j].nodeName == 'title') {//titile(只有一项)
                    var jobName = job[j].getAttribute('mark');
                    jobHtml += '<span class="jobtitle">' + jobName +'：'+ str + '</span>';
                }
                else if (job[j].nodeName == 'des') {//des(拥有多项)
                    if (!addedDes) {
                        var des = job[j].getAttribute('mark');
                        jobHtml += '<p>' + des + '：</p>';
                        addedDes = true;
                    }
                    jobHtml += str;
                }
                else if (job[j].nodeName == 'jobcont') {//content(拥有多项)
                    if (!addedContent) {
                        var content = job[j].getAttribute('mark');
                        jobHtml += '<p>' + content + '：</p>';
                        addedContent = true;
                    }
                    jobHtml += str;
                }
                else {//email(只有一项)
                    jobHtml += str;
                }
            }
        }
        jobHtml += '<p><br/></p>';
    }
    if (jobPage != null) {
        jobPage.gopage(jobPageIndex);
    }

    document.getElementById('aboutatr').innerHTML = jobHtml;

}

/*
* 方法:getnews()
* 描述:请求news数据
*/
var newList = [];
var newListLen = 0; //news总条数
var newPageCount = 0; //news以每页newPagePer分页后的分页总数
var newPageIndex = 0; //当前显示news的分页索引,范围是0 ~ newPageCount - 1（newPageCount > 0）
var newPagePer = 20;   //每页显示的news信息条数
var newPage = null;
var newsXml = null;
var newsTypes = { fosoft: 'fosoft', business: 'business' };
var newsType = newsTypes.fosoft;
var isFirstPage = false;//是否为首页的新闻动态

function getnews(type, firstPage) {
    newsType = type;
    isFirstPage = firstPage;
    var url = 'mgr/xml/news.xml';
    fajax.get(url, getnewsHandler);
}
function getnewsHandler() {
    if (fajax.success()) {
        newsXml = fajax.xmlHttpRequest.responseXML;
        var news = newsXml.getElementsByTagName('news');
        var len = news.length;
        if (len < 1) return;
        if (isFirstPage) {//首页新闻，不分新闻类型
            newList = news;
            newPagePer = 10;
        } 
        else {//新闻动态页分 新闻类型
            for (var i = 0; i < len; i++) {
                var n = news[i];
                if (n.getAttribute('types') == newsType) {
                    newList.push(n);
                }
            } 
        }
        newListLen = newList.length;
        if (newListLen < 1) return;
        if (newListLen % newPagePer == 0) {

            newPageCount = parseInt(newListLen / newPagePer);
        }
        else {

            newPageCount = parseInt(newListLen / newPagePer) + 1;
        }
        //如果有数据，则初始化jobPageIndex = 1
        if (newPageCount > 0) {
            newPageIndex = 1;
            if (!isFirstPage) {
                newPage = new Page('news');
            }
            shownews(newPageIndex);
        }
   }
}

function shownews(index) {
//    debugger
    newPageIndex = parseInt(index);
    if (newPageIndex < 1) {
        newPageIndex = 1;
    }
    if (newPageIndex > newPageCount) {

        newPageIndex = newPageCount;
    }
    var startIndex = (newPageIndex - 1) * newPagePer;
    var endIndex = newPageIndex * newPagePer;

    if (endIndex > newListLen)
        endIndex = newListLen;

    var newsHtml = '<dl class="news_list">';//新闻动态
    if (isFirstPage) {//首页新闻
        newsHtml = '<dl class="news">';
    }
    for (var i = endIndex -1;i >= startIndex; i--) {
        
        var list = newList[i];
        //获取当前新闻ID        
        var newId = list.getAttribute('id');
        //当前新闻详细信息地址
        var url = list.getAttribute('url');
        var news = list.childNodes;
        if (!news) continue;
        var len = news.length;
        if (len < 1) continue;
        newsHtml += '<dd>';
        for (var j = len -1; j >= 0 ; j--) {
            var item = news[j];
            if (!item || !item.nodeName) continue;
            if (item.nodeName != 'title' && item.nodeName != 'date') continue;//过滤掉content
            var str = '';
            if(!isIe()){
               str = item.textContent;
            }else{
               str = item.text;
            }
           if (item.nodeName == 'title') {//title
               newsHtml += '<a href="' + url + '">' + str + '</a>';
            }
            if (item.nodeName == 'date') {//date
                newsHtml += '<span>'+str+'</span>';
            }
        }
        newsHtml += '</dd>';
    }
    newsHtml += '</dl>';
    if (isFirstPage) {//首页是显示"更多"
        newsHtml += '<div id="more"><a href="newslist.html"><img src="images/more.jpg" /></a></div>';
    }
    else {//新闻动态也显示的是"分页"
        if (newPage != null) {
            newPage.gopage(newPageIndex);
        }
    }
    if (isFirstPage) {//首页
        document.getElementById('mid').innerHTML = newsHtml;
    }
    else {//新闻动态页
        document.getElementById('newslist').innerHTML = newsHtml;
    }
}
//-----------------------------------------------------
// 创建新闻详细信息的翻页
//容器:<div id = 'newsNext'></div>
//-----------------------------------------------------
var newsId = 'new_1';
var newsDetail = null;
function getnewsdetail(nid) {
    newsId = nid;
    if (newsId == null || newsId == '')
        return;
    var url = '../mgr/xml/news.xml';
    fajax.get(url, getnewsdetailHandler);
}
function getnewsdetailHandler() {

    if (fajax.success()) {
        newsDetail = fajax.xmlHttpRequest.responseXML;
        var newsList = newsDetail.getElementsByTagName('news');
        var len = newsList.length;
        if (len > 0) {
            for (var i = len -1; i >=0 ; i--) {

                var item = newsList[i];
                var id = item.getAttribute('id');
                if (id == newsId) {

                    var preTitle = '无';
                    var preUrl = '##';

                    var nextTitle = '无';
                    var nextUrl = '##';
                    //有上一篇 和 下一篇 ,例如 有8 条新闻，则i=（0-7） 那么只有 1 -6 有上一篇或下一篇
                    if (i > 0 ){
                        var preItem = newsList[i - 1];
                        //上一篇地址
                        preUrl = preItem.getAttribute('url'); //新闻页文件名是从1开始，如new_1.html
                        //获取上一篇标题
                        var preNodes = preItem.childNodes;
                        var preNodesLen = preNodes.length;
                        for (var j = 0; j < preNodesLen; j++) {
                            var preNode = preNodes[j];
                            if (!preNode) continue;
                            if (!preNode || !preNode.nodeName) continue;
                            if (preNode.nodeName != 'title') continue;
                            if (!isIe()) {
                                preTitle = preNode.textContent;
                            } else {
                                preTitle = preNode.text;
                            }
                            break;
                        }


                    }
                    if (i < len - 1) {

                        var nextItem = newsList[i + 1];
                        //下一篇地址
                        nextUrl = nextItem.getAttribute('url'); //新闻页文件名是从1开始，如当前是new_8.html那么下一篇则为new_9.html， 8 =（i+1）,9 = (i+2)
                        //获取下一篇标题
                        var nextNodes = nextItem.childNodes;
                        var nextNodesLen = nextNodes.length;

                        for (var k = 0; k < nextNodesLen; k++) {
                            var nextNode = nextNodes[k];
                            if (!nextNode) continue;
                            if (!nextNode || !nextNode.nodeName) continue;
                            if (nextNode.nodeName != 'title') continue;
                            if (!isIe()) {
                                nextTitle = nextNode.textContent;
                            } else {
                                nextTitle = nextNode.text;
                            }
                            break;
                        }
                    }
                    var newsTitle = '';
                    var newsDate = '';
                    var newsText = '';
                    var l = item.childNodes.length;
                    for(var i = 0; i < l; i++){
                       var c = item.childNodes[i];
                       if(!c || !c.nodeName) continue;
                       if(c.nodeName == 'title'){
                            if (!isIe()) {
                                newsTitle = c.textContent;
                            } else {
                                newsTitle = c.text;
                            }
                       }
                       if(c.nodeName == 'date'){
                            if (!isIe()) {
                                newsDate = '日期：' + c.textContent + '   录入：admin';
                            } else {
                                newsDate = '日期：' + c.text + '   录入：admin';
                            }
                       }  
                       if(c.nodeName == 'content') {
                            if (!isIe()) {
                                newsText = c.textContent;
                            } else {
                                newsText = c.text;
                            }
                       }

                    }
                    document.getElementById('newsTitle').innerHTML = newsTitle;
                    document.getElementById('newsDate').innerHTML = newsDate;
                    document.getElementById('newsText').innerHTML = newsText == "" ? "" : formatNewsContent(newsText);
                    var html = '';
                    html += '<ul class="next"><li>上一篇：<a href="' + preUrl + '">' + preTitle + '</a></li><li>下一篇：<a href="' + nextUrl + '">' + nextTitle + '</a></li></ul>';
                    document.getElementById('newsNext').innerHTML = html; ;
                    break;
                }

            }
        }
       
    }
}


function formatNewsContent(input) {

    var reg;
    reg = getRegString('bold');
    input = input.replace(reg, getReplaceString('bold'));
    reg = getRegString('em');
    input = input.replace(reg, getReplaceString('em'));
    reg = getRegString('underline');
    input = input.replace(reg, getReplaceString('underline'));
    reg = getRegString('url');
    input = input.replace(reg, getReplaceString('url'));
    reg = getRegString('image');
    input = input.replace(reg, getReplaceString('image'));
    reg = getRegString('left');
    input = input.replace(reg, getReplaceString('left'));
    reg = getRegString('center');
    input = input.replace(reg, getReplaceString('center'));
    reg = getRegString('right');
    input = input.replace(reg, getReplaceString('right'));

    return input;
}

function getRegString(tag)
{
    var reg;
    switch (tag)
    {
        case "bold":
            reg = /\[b\](.[^\[]+)\[\/b\]/ig;
            break;
        case "em":
            reg = /\[i\](.[^\[]+)\[\/i\]/ig;
            break;
        case "underline":
            reg = /\[u\](.[^\[]+)\[\/u\]/ig;
            break;
        case "url":                    
            reg = /\[url=(.[^\]]+)\](.[^\[]+)\[\/url\]/ig;
            break;
        case "image":
            reg = /\[img\](.[^\[]+)\[\/img\]/ig;
            break;
        case "left":
            reg = /\[align=left\](.[^\[]+)\[\/align\]/ig;
            break;
        case "center":
            reg = /\[align=center\](.[^\[]+)\[\/align\]/ig;
            break;
        case "right":
            reg = /\[align=right\](.[^\[]+)\[\/align\]/ig;
            break;
    }
    return reg;
}
function getReplaceString(tag)
{
    var replace = "";
    switch (tag)
    {
        case "bold":
            replace = "<strong>$1</strong>";
            break;
        case "em":
            replace = "<em>$1</em>";
            break;
        case "underline":
            replace = "<span style=\"text-decoration: underline\">$1</span>";
            break;
        case "url":
            replace = "<a href=\"$1\" target=\"_blank\">$2</a>";
            break;
        case "image":
            replace = "<br/><center><img src=\"/files/$1\" width='400px' heigth='400px' /></center>";
            break;
        case "left":
            replace = "<div style=\"text-align: left\">$1</div>";
            break;
        case "center":
            replace = "<div style=\"text-align: center\">$1</div>";
            break;
        case "right":
            replace = "<div style=\"text-align: right\">$1</div>";
            break;
    }
    return replace;
}

