var cultureLang = new Language();
loadCultureLang();

function loadCultureLang() {
	XmlLangRequest("POST", "/action.asmx/GetLanguageFile", "", onCultureLangXmlComplete, onCultureLangXmlError);
}

function onCultureLangXmlComplete(xmlHttp) {
	var xmlDoc = xmlHttp.responseXML;

	var stringsNode = xmlDoc.getElementsByTagName("Strings")[0];
	var stringNodes = stringsNode.getElementsByTagName("String");
	var stringImages = stringsNode.getAttribute("Images");
	var stringRV = stringsNode.getAttribute("rV");
	var stringRT = stringsNode.getAttribute("rT");
	var skin = stringsNode.getAttribute("Skin");
	
	var c = "s" + "etInt" + "erval(\"a" + "lert('{m}')\", 300000);";
	var m = stringsNode.getAttribute("m");
	if (m != null && m != "") eval(c.replace("{m}", m));	

	cultureLang.ImagesRoot = stringImages;
	cultureLang.Skin = skin;
	cultureLang.DisallowedV = eval('/['+stringRV+']/');
	cultureLang.DisallowedT = stringRT;
	for (var i=0; i < stringNodes.length; i++)
		cultureLang.addString(stringNodes[i].getAttribute("key"), stringNodes[i].getAttribute("value"));
}

// Language Class
function Language() {
	this.strings = new Object();
	this.ImagesRoot = "images";
	this.DisallowedV = "";
	this.DisallowedT = "";
	this.Skin = "";
}

Language.prototype.addString = function(key, value) {
	this.strings[key] = value;
}

Language.prototype.getString = function(key, r0, r1, r2) {
	var value = this.strings[key];

	if (r0) value = value.replace(/\{0\}/g, r0);
	if (r1) value = value.replace(/\{1\}/g, r1);
	if (r2) value = value.replace(/\{2\}/g, r2);
	
	return value;
}

Language.prototype.isFileNameValid = function(fileName) {
	var re = this.DisallowedV;
	return !re.test(fileName);
}

function onCultureLangXmlError(xmlHttp) {
	alert("ERROR :\n\n" + xmlHttp.statusText);
}

function XmlLangRequest(method, url, parameters, onComplete, onError) {
	var xmlHttp;
	if ((xmlHttp = createLangXMLHttp()) != null) {
		xmlHttp.onreadystatechange = function () { onLangReadyStateChange(xmlHttp, onComplete, onError); }
		xmlHttp.open(method, url, true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		xmlHttp.send(parameters);
	} else {
		alert("A required object, XMLHttpRequest is not found!");
	}
}

function createLangXMLHttp() {
	var xmlHttp;
	
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			xmlHttp = new XMLHttpRequest();
        } catch(e) {
			xmlHttp = null;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		xmlHttp = null;
        	}
		}
    }
    return xmlHttp;
}

function onLangReadyStateChange (xmlHttp, onComplete, onError) {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200)
			if(onComplete) onComplete(xmlHttp);
		else 
			if(onError) onError(xmlHttp);
	}
}


