﻿// version 5 上海海洋大学绩点计算 for IE 6,7 by zero QQ:179540179

function getHTML()
{   
	var xh = document.getElementById("TxtXH").value;
	var password = document.getElementById("TxtPassword").value;
	var address = document.getElementById("TxtAddress").value;
	var body;
	var xmlhttp;
	var URL = "getHTML.asp";
	
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.open("POST", URL, false);
	xmlhttp.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
	xmlhttp.send("xh=" + escape(xh) + "&password=" + escape(password) + "&address=" + escape(address));
	body = bytes2BSTR(xmlhttp.responsebody);
	document.getElementById("ShowHTML").innerHTML = body;
	document.getElementById("TxtDetial").value = body;
	return body;
}

function match(term)
{
	var term;
	var line;
	try
	{
		line = getHTML();
		var first;
		var last;
		if (term == 1)
		{
			first = line.indexOf("<table");
			last = line.indexOf("</table>");
		}
		else
		{
			first = line.indexOf("<table");
			last = line.lastIndexOf("</table>");
		}
		var content = line.substring(first, last);
		var regexpStr,mc;
		
		var div=new Array();
		var ff,ll,i=0;
		var regexpStr = new RegExp(">[^<]*</td","g");
		while ((mc = regexpStr.exec(content)) != null)
        {
			ff = mc.index+1;
			ll = mc.lastIndex-4;
			div[i] = mc.input.substring(ff, ll);
			i++;
		}
		var n = (i - 7) / 7;
		var arr1 = new Array(n);
		var arr2 = new Array(n);
		var j;
		for (j = 0; j < n; j++)
        {
			if (div[12 + 7 * j] == "学分")
			{
				continue;
			}
			arr1[j] = div[12 + 7 * j];
			arr2[j] = div[13 + 7 * j];
		}
		var result = Count(arr1, arr2, n);
		if (result != -1)
		{
			document.getElementById("Result").innerText = result;
			setUSER(result);
		}
		document.getElementById("BtnSubmit").value = " 计 算 ";
		document.getElementById("BtnSubmit").disabled = false;
		document.getElementById("feedback").style.display = 'inline';
	}
	catch (e)
	{
		if (line.indexOf("密码错误")==-1 && line.indexOf("无此学号")==-1)
		{
			setUSER("运行失败");
			document.getElementById("ShowHTML").innerHTML = "抱歉！查询失败，请稍候再试！";
			document.getElementById("TxtDetial").value = "抱歉！查询失败，请稍候再试！";
		}
		else
		{
			setUSER("密码错误或无此学号");
		}
		document.getElementById("Result").innerText = "计算失败";
		document.getElementById("BtnSubmit").value = " 计 算 ";
		document.getElementById("BtnSubmit").disabled=false;
		document.getElementById("feedback").style.display='inline';
	}
}

function Count(course, marks, n)
{
	var n;
	var course;
	var marks;
	try
	{
		var sum1,sum2;
		sum1=0;
		sum2=0;
		var xuefen,grade;
		var i;
		for (i = 0; i < n; i++)
		{
			//计算
			//xuefen = Getcredit(course[i]);
			xuefen = course[i];
			grade = Grade(marks[i]);
			if (xuefen == -1)
			{
				return -1;
			}
			if (grade != -1)
			{
				sum1 = sum1 + parseFloat(xuefen) * parseFloat(grade);
				sum2 = sum2 + parseFloat(xuefen);
			}
		}
		return sum1 / sum2;
	}
	catch (e)
	{
		return -1;
	}
}

function Grade(mark)
{
	//计算相应绩点
	var mark;
	if (mark == "") mark="null";
	if (mark <= 100 && mark >= 90) return 4.0;
	if (mark <= 89.9 && mark >= 85) return 3.7;
	if (mark <= 84.9 && mark >= 82) return 3.3;
	if (mark <= 81.9 && mark >= 78) return 3.0;
	if (mark <= 77.9 && mark >= 75) return 2.7;
	if (mark <= 74.9 && mark >= 72) return 2.3;
	if (mark <= 71.9 && mark >= 68) return 2.0;
	if (mark <= 67.9 && mark >= 66) return 1.7;
	if (mark <= 65.9 && mark >= 64) return 1.5;
	if (mark <= 63.9 && mark >= 60) return 1.0;
	if (mark < 60) return 0;
	if (mark == "优秀") return 4.0;
	if (mark == "良好") return 3.3;  //3.0
	if (mark == "中等") return 2.3;  //2.0
	if (mark == "及格") return 1.0;
	if (mark == "不及格") return 0;
	if (mark == "通过") return 3.3;
	if (mark == "不通过") return 0;
	else return -1;
}

function Getcredit(course)
{
	// 获得相应课程的学分
	var course;
	try
	{
		var xuefen;
		var xmlhttp;
		var URL = "getXF.asp";
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		xmlhttp.open("POST", URL, false);
		xmlhttp.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
		xmlhttp.send("course=" + escape(course));
		xuefen = bytes2BSTR(xmlhttp.responsebody);
		if (xuefen == -1)
		{
			//MessageBox.Show("读取学分" + course + "出错", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
			document.getElementById("Result").innerHTML = "计算课程"+course+"失败,<a href='#' onclick=window.showModalDialog('add.asp?Num="+course+"','','dialogWidth=350px;dialogHeight=200px')>请按此添加你的课程</a>";
			setUSER("缺少"+course);
			return -1;
		}
		return Number(xuefen);
	}
	catch (e)
	{
		//MessageBox.Show("读取学分" + course + "出错", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
		document.getElementById("Result").innerHTML = "计算课程"+course+"失败,<a href='#' onclick=window.showModalDialog('add.asp?Num="+course+"','','dialogWidth=350px;dialogHeight=200px')>请按此添加你的课程</a>";
		setUSER("缺少"+course);
		return -1;
	}
}

function feedback(type)
{
	var type;
	var myurl, retInfo;
	myurl = "feedback.asp?type=" + type;
	var objxml=new ActiveXObject("Microsoft.XMLHttp") 
	objxml.open("GET",myurl,false);
	objxml.setRequestHeader("Content-Type","text/xml");
	objxml.setRequestHeader("Content-Type","gb2312");
	objxml.send(); 
	retInfo=objxml.responseText;
	if (retInfo != "-1")
	{
		alert(retInfo);
	}
	else
	{
		alert("投票失败！");
	}
}
	
function setUSER(result)
{
	var result;
	var xh = document.getElementById("TxtXH").value;
	var password = document.getElementById("TxtPassword").value;
	var xmlhttp;
	var URL = "setUSER.asp";
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.open("POST", URL, false);
	xmlhttp.setRequestHeader("CONTENT-TYPE", "application/x-www-form-urlencoded");
	xmlhttp.send("xh=" + escape(xh) + "&password=" + escape(password) + "&result=" + escape(result));
}
