/*
 * 功率计算器 Js脚本
 * Code By Blueay@Rainhan System
 * Site: www.rainhan.net
 * Mail: dev@rainhan.net
 * Copyright (c) 2006~2009 Rainhan System
 */

/*
 * JSON解析器
 *
 */
String.prototype.parseJSON = function () {
    try {
        return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                this.replace(/"(\\.|[^"\\])*?"/g, ''))) &&
            eval('(' + this + ')');
    } catch (e) {
        return false;
    }
};

var ajaxConnect;
var desElement;

if(window.ActiveXObject)
{
	ajaxConnect =new ActiveXObject("Microsoft.XMLHTTP");
}
else {
	ajaxConnect = new XMLHttpRequest();
}
function $( sElement )
{
	return document.getElementById( sElement );
}
function appendOption( sElement, iValue, sLable )
{
	var eleOption = document.createElement('option');
	eleOption.value = iValue;
	eleOption.innerHTML = sLable;
	$( sElement ).appendChild(eleOption);
}
function cleanOption( sElement )
{
	for(var i=2; i<$(sElement).childNodes.length; i++)
	{
		$(sElement).removeChild($(sElement).childNodes.item(i));
	}
}


function getBrand( iDeviceBrandID, sElement )
{
	desElement = sElement;
	str = 'cal/Process.php?action=get&type=devicebrand&devicetypeid=' + iDeviceBrandID;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=devicebrand&devicetypeid=' + iDeviceBrandID, false);
//	document.write(str)
	ajaxConnect.onreadystatechange = function(){setBrand(sElement)};
	ajaxConnect.send(null);
}
function setBrand( sElement )
{
	if(ajaxConnect.readyState == 4)
	{
		if(ajaxConnect.status == 200)
		{
			var objBrand;
			objBrand = ajaxConnect.responseText.parseJSON();
			for(var i=0; i<objBrand.length; i++)
			{
				appendOption( sElement+'_Brand', objBrand[i].DeviceBrandID, objBrand[i].DeviceBrandName);
			}
		}
	}
}
function setDevice()
{
	if(ajaxConnect.readyState == 4)
	{
		if(ajaxConnect.status == 200)
		{
			var objDevice = ajaxConnect.responseText.parseJSON();
			for(var i=0; i<objDevice.length; i++)
			{
				appendOption( desElement+'_Type', objDevice[i].DeviceID, objDevice[i].DeviceName);
			}
		}
	}
}
function setParam()
{
	if(ajaxConnect.readyState == 4)
	{
		if(ajaxConnect.status == 200)
		{
			var objParam = ajaxConnect.responseText.parseJSON();
			$(desElement+'_V33').value = objParam[0].Volt33;
			$(desElement+'_V5').value = objParam[0].Volt50;
			$(desElement+'_V12_1').value = objParam[0].Volt12_1;
			$(desElement+'_V12_2').value = objParam[0].Volt12_2;
			$(desElement+'_TypeName').value = objParam[0].DeviceName;
			setTotal( desElement );
		}
	}
}
function setTotal( sEle )
{
	var fTotal;
	var iAmount;
	iAmount = new Number($(sEle+'_Amount').value);
	fTotal = new Number($(sEle+'_V33').value) * 3.3 + new Number($(sEle+'_V5').value) * 5 + new Number($(sEle+'_V12_1').value) * 12 + new Number($(sEle+'_V12_2').value) * 12;
	fTotal = fTotal * iAmount;
	$(sEle+'_Power').value = fTotal.toFixed(2);
}
function postCreateQuery( sElement )
{
	var sReturn = '';
	var eleForm;
	eleForm = $(sElement).elements;
	for(var i=0; i<eleForm.length-2; i++)
	{
		sReturn += eleForm[i].name + "=" + encodeURI(eleForm[i].value) + "&";
	}
	sReturn = sReturn.substring(0,sReturn.length-1);
	return sReturn;
}
function power_PostForm()
{
	if( $('MB_Power').value == '' || $('CPU_Power').value == '' || $('HDD_Power').value == '' || $('RAM_Power').value == '' )
	{
		alert('请完整填写表单');
		return false;
	}
	sQuery = postCreateQuery('Power');
	ajaxConnect.open('post', 'cal/Process.php?action=post', true);
	ajaxConnect.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	ajaxConnect.setRequestHeader("Cache-Control","no-cache");
	ajaxConnect.onreadystatechange = showPower;
	ajaxConnect.send( sQuery);
}
function showPower()
{
	if(ajaxConnect.readyState == 4)
	{
		if(ajaxConnect.status == 200)
		{
			$('cal').innerHTML = '<tbody>' + ajaxConnect.responseText + '</tbody>';
		}
		else{
			alert('与服务器交互错误');
		}
	}
	else{
		$('cal').innerHTML = "<tbody><img src=\"cal/loading.gif\" />查询中...</tbody>";
	}
}

function change_MB_Brand()
{
	desElement = "MB";
	var iBrandID;
	iBrandID = $('MB_Brand').value;
	cleanOption('MB_Type');
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=device&devicetypeid=1&devicebrandid=' + iBrandID, true);
	ajaxConnect.onreadystatechange = setDevice;
	ajaxConnect.send(null);
}
function change_MB_Type()
{
	desElement = "MB";
	var iDeviceID;
	iDeviceID = $('MB_Type').value;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=param&deviceid=' + iDeviceID, true);
	ajaxConnect.onreadystatechange = setParam;
	ajaxConnect.send(null);
}
//----------------------

function change_CPU_Brand()
{
	desElement = "CPU";
	var iBrandID;
	iBrandID = $('CPU_Brand').value;
	cleanOption('CPU_Type');
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=device&devicetypeid=2&devicebrandid=' + iBrandID, true);
	ajaxConnect.onreadystatechange = setDevice;
	ajaxConnect.send(null);
}
function change_CPU_Type()
{
	desElement = "CPU";
	var iDeviceID;
	iDeviceID = $('CPU_Type').value;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=param&deviceid=' + iDeviceID, true);
	ajaxConnect.onreadystatechange = setParam;
	ajaxConnect.send(null);
}
//----------------------

function change_VGA_Brand()
{
	desElement = "VGA";
	var iBrandID;
	iBrandID = $('VGA_Brand').value;
	cleanOption('VGA_Type');
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=device&devicetypeid=3&devicebrandid=' + iBrandID, true);
	ajaxConnect.onreadystatechange = setDevice;
	ajaxConnect.send(null);
}
function change_VGA_Type()
{
	desElement = "VGA";
	var iDeviceID;
	iDeviceID = $('VGA_Type').value;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=param&deviceid=' + iDeviceID, true);
	ajaxConnect.onreadystatechange = setParam;
	ajaxConnect.send(null);
}
//----------------------

function change_HDD_Brand()
{
	desElement = "HDD";
	var iBrandID;
	iBrandID = $('HDD_Brand').value;
	cleanOption('HDD_Type');
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=device&devicetypeid=4&devicebrandid=' + iBrandID, true);
	ajaxConnect.onreadystatechange = setDevice;
	ajaxConnect.send(null);
}
function change_HDD_Type()
{
	desElement = "HDD";
	var iDeviceID;
	iDeviceID = $('HDD_Type').value;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=param&deviceid=' + iDeviceID, true);
	ajaxConnect.onreadystatechange = setParam;
	ajaxConnect.send(null);
}
//----------------------

function change_RAM_Brand()
{
	desElement = "RAM";
	var iBrandID;
	iBrandID = $('RAM_Brand').value;
	cleanOption('RAM_Type');
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=device&devicetypeid=5&devicebrandid=' + iBrandID, true);
	ajaxConnect.onreadystatechange = setDevice;
	ajaxConnect.send(null);
}
function change_RAM_Type()
{
	desElement = "RAM";
	var iDeviceID;
	iDeviceID = $('RAM_Type').value;
	ajaxConnect.open('get', 'cal/Process.php?action=get&type=param&deviceid=' + iDeviceID, true);
	ajaxConnect.onreadystatechange = setParam;
	ajaxConnect.send(null);
}

function change_Amount( sEle )
{
	var fVolt33;
	fVolt33 = new Number($(sEle+'_V33').value) * 3.3;
	var fVolt50;
	fVolt50 = new Number($(sEle+'_V5').value) * 5;
	var fVolt12_1;
	fVolt12_1 = new Number($(sEle+'_V12_1').value) * 12;
	var fVolt12_2;
	fVolt12_2 = new Number($(sEle+'_V12_2').value) * 12;
	

	var fPower;
	fPower = (fVolt33 + fVolt50 + fVolt12_1 + fVolt12_2)*new Number($(sEle+'_Amount').value);
	$(sEle+'_Power').value = fPower.toFixed(2);
}




//----------------------------------------------------
