// GLOBAL VARS


function getCurrentURL(){

	var strs = String(window.location);
	var str_page = strs.split("page=")[1];
	str_page = str_page.split("&")[0];
	str_page = str_page.split("#")[0]; 
	
	str_url = String( "default.asp?page=" + str_page + "&" + hashStringToQueryString(objectToHashString(current_obj)) )
	
	
	str_url = str_url.split("?").join("-q-")
	str_url = str_url.split("&").join("-a-")
	str_url = str_url.split("=").join("-e-")
	
	return str_url;
	
	
	
	
}


var hash_str =String(window.location.hash);
if (hash_str.length > 0){
	// This page is being redirected.
	var new_location = base_page_url +"&" +hashStringToQueryString(hash_str); 

	window.location  = new_location;
}

function objectToHashString(obj) {
	var str = ""
	for (var p in  obj ) {
		if (p.charAt(0) != "_"  && p != "uid"){
			var key = hash_lookup[p];
			
			if (key.length > 0 ){
				str = str + "_" +  key + "_" + obj[p]
			}
		}
	}			
	return str ;
}

function hashStringToQueryString(str){
	arr = str.split("_");
	var ret_str = "";
	for (var j = 1 ; j < arr.length ; j+=2){
		if (j>1){
			ret_str+="&"
		}
		ret_str+=arr[j] +"=" + arr[j+1]
	
//		if (arr[j] != "uid" ) {
//			for (var p in hash_lookup ) {
//				if (hash_lookup[p] == arr[j]){
//					ret_obj[p] = arr[j+1]
//				}		
//			}
//		}
		
	}
	return ret_str;
}

 
function hashStringToObject(str){
	arr = str.split("_");
	var ret_obj = new Object(); 
	for (var j = 1 ; j < arr.length ; j+=2){
		if (arr[j] != "uid" ) {
			for (var p in hash_lookup ) {
				if (hash_lookup[p] == arr[j]){
					ret_obj[p] = arr[j+1]
				}		
			}
		}
	}
	return ret_obj;
}


var hash_watch_id = 0;
function init_dojo(){  
	dojo.require("dojo.io.*");
	hash_watch_id = setInterval("checkHash();" , 100);
}



var last_hash = "";
var last_event = "";
function checkHash(){
	var current_hash = String(window.location.hash);
	if (current_hash != last_hash ){
		if (last_event == "hash" ){
			//debug("BACK / FORWARD");
			var $hash_str = String(window.location.hash);
			if ($hash_str.length < 1 ){
				$hash_str = objectToHashString(initial_content_obj );
			}
			loadTemplate(hashStringToObject($hash_str), true);
		}
		last_hash = current_hash;	
		last_event = "hash";
	} 
}
 



var current_content = "";
function registerCurrentContent(content_obj, dont_refresh_flash){
	current_content = content_obj;
	if (window.customOnIdChange){
		customOnIdChange(content_obj);
	}
	if (!dont_refresh_flash){
		sendToFlash(content_obj);  
	}
}




function getInitFlashVar(){
	var $str =  String(window.location.hash);
	if ($str.length > 0 ){
		return $str;
	} else {
		//alert(objectToHashString(initial_content_obj))
		return objectToHashString(initial_content_obj);
	}

}

function loadTemplateByHashString(str){
	loadTemplate(hashStringToObject(str)); 
}	


function loadTemplate(content, dont_change_url ) {

	//var tmp = "";
	//for (var g in content){
	//	tmp = tmp + g + ":" + content[g] + "\n";	
	//}
	//alert(tmp);

	var total_old = 0
	var found_mismatch = false;
	for (var p in current_content ){
		if (p.charAt(0) != "_" && p !="uid" ){
			total_old++ 
			if (content[p] != current_content[p]){
				found_mismatch = true;
			}
		}
	}
	
	if (!found_mismatch){
		var total_new = 0;
		for (var p in content ){
			if (p.charAt(0) != "_" && p !="uid" ){
				total_new++ 
			}
		}
		if (total_new != total_old){
			found_mismatch = true;
		}
	}
	
	if (!found_mismatch){
		// return;
	}
	
	if (dont_change_url){
		var changeURL = false;
	} else {
		var changeURL = objectToHashString(content) + "_uid_" + String(Math.round(Math.random()* 9999));
	}
	
	last_event = "load";
	//?ck=" + String(Math.random() * 9999999), 
	
	var template_url = "gateway.asp?gateway_action=" + gateway_action;
	
	dojo.io.bind({ 
	    url: template_url,
	    content: content,
	    handler: function(type, data, evt , content){
		  if (type == "load"){
				outputString(data , "output-cell" );
				registerCurrentContent(content); 				
	      } else if(type == "error"){
				//outputString("ERROR :("); 
	      } else { 
				//outputString("???" + type);
		  }
   		},
		mimetype: "text/plain",		
		changeURL: changeURL,
		transport: "XMLHTTPTransport"
	});
	
}
 
function e(id){
	return document.getElementById(id)?document.getElementById(id):false;
} 

function outputString(str, node_id){
	if (e(node_id)){
		e(node_id).innerHTML = str
	}
} 

function debug(str){
	e("debug-cell").innerHTML += str + "<br>"; 
}



/////////////////////////////////////////////////////////////////
init_dojo();

