﻿var NS = (function(){
	
	function $(element){
		return typeof element != 'string' ? element : document.getElementById(element);
	}
	
	function getParam(params, name){
		var reg = new RegExp("(\\?|\\&)" + name + "=([^\\&]*)(\\&?)", "i").exec(params);
		return RegExp.$2;
	}

	//页面加载addEvent(window, 'load', fp.init);
	var addEvent = function( obj, type, fn ) {
			if (obj.addEventListener)
					obj.addEventListener(type, fn, false);
			else if (obj.attachEvent) 
					obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
	}
	var getElementsByAttribute = function(element, attr, value){
		var ret = [];
		for(var i = 0; i < element.length; i++){
			if (element[i].getAttribute(attr) == value) {
				ret.push(element[i]);
			}
		}
		return ret;
	}
	var createElement = function(element){
		return document.createElement(element);
	}
	if (!String.trim) {
		String.prototype.trim = function() {
			return this.replace(/^\s+|\s+$/g,'');
		}
	}

	/*** Ajax ***/
	//implements AjaxHandler
	var AjaxHandler = function() {}; 
	AjaxHandler.prototype = {
		request: function(method, url, callback, postVars) {
			var xhr = this.createXhrObject();
			xhr.onreadystatechange = function() {
				if (xhr.readyState !== 4) {
					return;
				}
				(xhr.status === 200) ? callback.success(xhr.responseText, xhr.responseXML) : callback.failure(xhr.status);
			};
			var method = (postVars) ? "POST" : "GET";
			if (method !== 'POST') {
				postVars = null;
			}
			xhr.open(method, url, true);		
			xhr.send(postVars);
		},
		createXhrObject: function() { //Factory method.
			var methods = [
				function () {return new XMLHttpRequest()},
				function () {return new ActiveXObject("Msxml2.XMLHTTP")},
				function () {return new ActiveXObject("Msxml3.XMLHTTP")},
				function () {return new ActiveXObject("Microsoft.XMLHTTP")}
			];	
			var len = methods.length;
			for(var i = 0; i < len; i++){
				try{
					methods[i]();
				}catch(e){
					continue;
				}
				// If we reach this point, method[i] worked.
				this.createXhrObject = methods[i]; // Memoize the method.
				return methods[i]();			
				
			}
			throw new Error('AjaxHandler: Could not create an XHR object.');
		}
	};

	return {
		$:$,
		url:'/NOKIA_CHINA_72/Find_a_store/NBR/xml/citylist.xml',
		getParam: getParam,
		AjaxHandler: AjaxHandler,
		addEvent: addEvent,
		getElementsByAttribute: getElementsByAttribute,
		createElement:createElement
	}
})();

var handleProvince = function(provincePY){
	var ajax = new NS.AjaxHandler();
	var url = NS.url;
	var callback = {
		success: function(text, xml){
			var root = xml.documentElement;
			var province = root.getElementsByTagName('province');
			province = NS.getElementsByAttribute(province, 'py', provincePY);
			var city = province[0].getElementsByTagName('city');
			var str ='<dl>' +
						'<dt>' + province[0].getAttribute('name') + '</dt>'+
						'<dd><ul>'
			for(var i = 0; i < city.length; i++){
				var cityName = city[i].getAttribute('name');
				var provinceP = province[0].getAttribute('py');
				var cityP = city[i].getAttribute('py');
				if (cityName.length > 4){
					str += '<li class="w102"><a href="/A41668774?province=' + provinceP + '&city=' + cityP + '">' + cityName + '</a></li>';
				} else {
					str += '<li><a href="/A41668774?province=' + provinceP + '&city=' + cityP + '">' + cityName + '</a></li>';
				}

				
			}
			NS.$('province').style.display = 'none';
			NS.$('city-list').innerHTML = str + '</ul></dd></dl>';
			NS.$('city').style.display = 'block';
		},
		failure: function(){
			alert('failure');
		}
	}
	ajax.request('post', url + '?' + Math.random(), callback);
}

var getShopList = function(provincePY, cityPY){
	var url = NS.url;
	var callback = {
		success: function(text, xml){
			var root = xml.documentElement;

			var province = root.getElementsByTagName('province');
			province = NS.getElementsByAttribute(province, 'py', provincePY);

			var city = province[0].getElementsByTagName('city');
			city = NS.getElementsByAttribute(city, 'py', cityPY);

			NS.$('provinceAndcity').innerHTML = province[0].getAttribute('name') + city[0].getAttribute('name');

			var shop = city[0].getElementsByTagName('shop');
			//专卖店
			var regieTbody = NS.$('regie-store').getElementsByTagName('tbody')[0];
			//旗舰店
			var flagshipTbody = NS.$('flagship-store').getElementsByTagName('tbody')[0];
			//体验店
			var experienceTbody = NS.$('experience-store').getElementsByTagName('tbody')[0];
			
		    for(var i = 0; i < shop.length; i++){
                            var store = shop[i];
                            var tr = NS.createElement('tr');
							if (i % 2 == 0)
							  tr.style.backgroundColor="#c3faaf";
                              tr.style.height="30";
							 
                            var tdName = NS.createElement('td');
                            tdName.innerHTML = shop[i].getElementsByTagName('name')[0].firstChild.nodeValue;
                            var tdAddress = NS.createElement('td');
                            tdAddress.innerHTML = shop[i].getElementsByTagName('address')[0].firstChild.nodeValue.trim();            
                            tr.appendChild(tdName);
                            tr.appendChild(tdAddress);

				
/*				var tr = NS.createElement('tr');
				
				tr.style.height="30";
				
				var tdName = NS.createElement('td');
				tdName.innerHTML = shop[i].getElementsByTagName('name')[0].firstChild.nodeValue;
				var tdAddress = NS.createElement('td');
				tdAddress.innerHTML = shop[i].getElementsByTagName('address')[0].firstChild.nodeValue.trim();            
				tr.appendChild(tdName);
				tr.appendChild(tdAddress);*/

				
				if (store.getAttribute('experience') || store.getAttribute('flagship') ){
					if (store.getAttribute('experience')){
						experienceTbody.appendChild(tr.cloneNode(true));
						NS.$('experience-store').style.display = 'block';
					}
					if (store.getAttribute('flagship')){
						flagshipTbody.appendChild(tr.cloneNode(true));
						NS.$('flagship-store').style.display = 'block';
					}
				} else {
					regieTbody.appendChild(tr);
					NS.$('regie-store').style.display = 'block';
				}
			}                

		},
		failure: function(){
			alert('failure');
		}
	}
	var ajax = new NS.AjaxHandler();
	ajax.request('post', url + '?' + Math.random(), callback);
}
NS.addEvent(window, 'load', function(){        
	var url = location.search;
	var province = NS.getParam(url, 'province');
	var city = NS.getParam(url, 'city');
	if (province && city){
		getShopList(province, city);
	}	
});


