 /*
                 Initialize and render the Menu when its elements are ready 
                 to be scripted.
            */

            YAHOO.util.Event.onContentReady("meramenubar", function () {

                /*
                     Instantiate a Menu:  The first argument passed to the 
                     constructor is the id of the element in the page 
                     representing the Menu; the second is an object literal 
                     of configuration properties.
                */

                var oMenu = new YAHOO.widget.Menu("meramenubar", { 
                                                        position: "static", 
                                                        hidedelay:  750, 
                                                        lazyload: true });
                /*
                     Define an array of object literals, each containing 
                     the data necessary to create a submenu.
                */
                var aSubmenuData = [
                    {
                        id: "_photo", 
                        itemdata: [
                            { text: "Nature", 
								submenu:{id:"_nature", 
									itemdata:[
									{
										text:"Landscapes", 
										submenu:{id : "_landscapes", 
											itemdata:[
											{text:"Canyons", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Canyon"]}},
											{text:"Caves", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Cave"]}},
											{text:"Hoodoos", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Hoodoo"]}},
											{text:"Lakes", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Lake"]}},
											{text:"Mountains", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Mountain"]}},
											{text:"Snow", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Snow"]}},
											{text:"Sunset", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Sunset"]}},
											{text:"River/Creek", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|River/Creek"]}},
											{text:"Waterfalls", onclick: { fn: onMenuItemClick, obj:["album", "landscapes|Waterfall"]}}											
											]
										}
									},{
										text: "Flora",
										submenu : { id: "_flora",
											itemdata : [
											{text:"Fall", onclick: { fn: onMenuItemClick, obj:["album", "flora|Fall"]}},
											{text:"Flowers", onclick: { fn: onMenuItemClick, obj:["album", "flora|Flower"]}},
											{text:"Fruits", onclick: { fn: onMenuItemClick, obj:["album", "flora|Fruit"]}},
											{text:"Ice Storm", onclick: { fn: onMenuItemClick, obj:["album", "flora|Ice Storm"]}},
											{text:"Gardens", onclick: { fn: onMenuItemClick, obj:["album", "flora|Garden"]}},
											{text:"Wilderness", onclick: { fn: onMenuItemClick, obj:["album", "flora|Wilderness"]}}
											]
										}										
									}, {
										text : "Fauna",
										submenu : { id: "_fauna",
											itemdata :[
												{text:"Animals", onclick: { fn: onMenuItemClick, obj:["album", "fauna|Animal"]}},
												{text:"Birds", onclick: { fn: onMenuItemClick, obj:["album", "fauna|Bird"]}},
												{text:"Butterflies", onclick: { fn: onMenuItemClick, obj:["album", "fauna|Butterfly"]}},
												{text:"Insects", onclick: { fn: onMenuItemClick, obj:["album", "fauna|Insect"]}},												
												{text:"Zoo", onclick: { fn: onMenuItemClick, obj:["album", "fauna|Zoo"]}}
											]
										}
									}, {
										text : "Dinosaurs" ,
										submenu : {id : "_dino",
											itemdata : [
												{text : "Cave City", onclick: { fn: onMenuItemClick, obj:["album", "dinosaur|Cave City"]}},
												{text : "Drumheller", onclick: { fn: onMenuItemClick, obj:["album", "dinosaur|Drumheller"]}}
											]
										}
									}
									]
								} 
							},
                            { text: "Cityscapes", 
								submenu : {id: "_city", 
									itemdata : [
										{text : "Chicago", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|Chicago"]}},
										{text : "Lacombe", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|Lacombe"]}},
										{text : "Kansas City", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|Kansas City"]}},
										{text : "New York", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|New York"]}},
										{text : "St Louis", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|St Louis"]}},
										{text : "Toronto", onclick: { fn: onMenuItemClick, obj:["album", "cityscapes|Toronto"]}}
									]}
							},
                            { text: "People", onclick: { fn: onMenuItemClick, obj:["album", "people|People"]} },
                            { text: "Black & White", onclick: { fn: onMenuItemClick, obj:["album", "bnw|bnw"]} },
                            { text: "India", 
								submenu : {id: "_india",
									itemdata : [
										{text : "Agra", onclick: { fn: onMenuItemClick, obj:["album", "india|Agra"]}},
										{text : "Delhi", onclick: { fn: onMenuItemClick, obj:["album", "india|Delhi"]}},
										{text : "Kerala", onclick: { fn: onMenuItemClick, obj:["album", "india|Kerala"]}},
										{text : "Maharashtra", onclick: { fn: onMenuItemClick, obj:["album", "india|Maharashtra"]}},
										{text : "Punjab", onclick: { fn: onMenuItemClick, obj:["album", "india|Punjab"]}},
										{text : "Tamilnadu", onclick: { fn: onMenuItemClick, obj:["album", "india|Tamilnadu"]}}
									]}
							},
                            { text: "World Heritage Sites", 
								submenu : { id : "_heritage",
									itemdata : [
										{text : "Canada", 
											submenu : { id: "_canada",
												itemdata :[
													{text : "Banff National Park", onclick: { fn: onMenuItemClick, obj:["album", "heritage|ca.Banff"]}},
													{text : "Jasper National Park", onclick: { fn: onMenuItemClick, obj:["album", "heritage|ca.Jasper"]}}
												]
											}
										}, {
											text : "India", 
												submenu : { id: "_ind_heritage",
													itemdata: [
														{text : "Elephanta Caves", onclick: { fn: onMenuItemClick, obj:["album", "heritage|in.Elephanta"]}},
														{text : "Taj Mahal", onclick: { fn: onMenuItemClick, obj:["album", "heritage|in.Taj"]}}
													]
												}
										}, {
											text : "US", 
												submenu : { id: "_us",
													itemdata: [
														{text : "Cahokia Mounds", onclick: { fn: onMenuItemClick, obj:["album", "heritage|us.Cahokia"]}}
													]
												}
										}
									]
								}
							}                 
                        ]    
                    },{
					id: "_keyboards", 
                        itemdata: [
                            { text: "Gurmukhi", onclick: { fn: onMenuItemClick, obj:["kb", "gkb"]}},
							{ text: "Devnagri", onclick: { fn: onMenuItemClick, obj:["kb", "dkb" ]}}
						]
					}                    
                ];
                // Subscribe to the Menu instance's "beforeRender" event

                oMenu.subscribe("beforeRender", function () {

                    if (this.getRoot() == this) {

                        this.getItem(1).cfg.setProperty("submenu", aSubmenuData[0]);
                        this.getItem(4).cfg.setProperty("submenu", aSubmenuData[1]);
                    }
                });
                oMenu.render();
            });

function onMenuItemClick(evt, obj, val){
//alert(val[0] + " " + val[1]);
	if(val[0] == 'album') {
		ImgMarkup.create();
		
		var albumTitle = document.getElementById("albumTitle");
		//Replace bnw with Black and White
		if(val[1].match(/bnw/)){
			val[1] = "Black and White";
		}
		
		var cc = {
			'us': 'United States', 'ca':'Canada', 'in':'India'
		};
		
		var dropCap = val[1].substr(0,1);
		var fixedTitle = dropCap.toUpperCase()	+ val[1].substr(1,val[1].length);
		
		if(val[1].match(/heritage/)){
			var htg = val[1].split("|");
			var ctrSite = htg[1].split(".");
			var dropCap = ctrSite[1].substr(0,1);			
			var fixedTitle = "World Heritage Sites|" + dropCap.toUpperCase() +  ctrSite[1].substr(1,ctrSite[1].length) 
				+ " " + eval("cc." + ctrSite[0]);		
		}
		
		albumTitle.innerHTML = "Album : " + fixedTitle;
		
		var spanTnHlpTxt = document.getElementById("tnHlpTxt");
		
		spanTnHlpTxt.innerHTML = "Please click on thumbnail to view full size image.";
		spanTnHlpTxt.style.display = "inline";
		
		postData = val[0] + "=" + val[1];
		LoadAlbum.init(postData);
	} else if(val[0].match(/kb/)){
		load(val[1]);
	}
}

var GlobalData = {
	resetMain:function (){
		var mainDiv = document.getElementById("main");
		mainDiv.innerHTML = "";
		return mainDiv;
	},'gkbHtml':'','dkbHtml':'','contactHtml':'','salt':'','tns':'', 'albumDataRx':false
};

function resetMain(){
	var mainDiv = document.getElementById("main");
	mainDiv.innerHTML = "";
	return mainDiv;
}

var ImgMarkup = {
	create:function(){
		var main = GlobalData.resetMain();
		main.innerHTML = "<div id='tns'></div>" +
		"<div id='picHolder'><h3 id='albumTitle'></h3>" +
		"<div id='pic'><span id='tnHlpTxt'></span></div></div>";
		
	}
}

function init (initParams){
	GlobalData.gkbHtml = document.getElementById('main').innerHTML;
	
	var numMap = new Array('\u0A66','\u0A67','\u0A68','\u0A69','\u0A6A','\u0A6B','\u0A6C','\u0A6D','\u0A6E', '\u0A6F');
	var year = new Date().getFullYear();
	document.getElementById("year").innerHTML = year;
		
	var gmYear = '';
		
	year = year.toString();
	
	var splitYear = year.split('');
	
	for(var i =0; i < splitYear.length; i++){
		eval("gmYear +=  numMap[" + splitYear[i] + "]");
	}
		
	document.getElementById("gmYear").innerHTML = gmYear;
	
	if(initParams != null){
		GlobalData.salt = initParams.salt;
	}
}

var FormData = {
	validate:function(formField){
		if(formField.name == "frmName"){
			formFieldName =  "Name";
			FormData.frmName = formField.value;
		} else if(formField.name == "frmEmail"){
			formFieldName =  "Email";
			FormData.frmEmail = formField.value;
		} else if(formField.name == "frmSubject"){
			formFieldName =  "Subject";
			FormData.frmSubject = formField.value;
		} else if(formField.name == "frmComments"){
			formFieldName =  "Message";
			FormData.frmComments = formField.value;
		} else if(formField.name == "captcha_text"){
			formFieldName =  "CAPTCHA";
			FormData.captcha = formField.value;
		} else if(formField.name == "frmPass"){
			formFieldName =  "Password";
			FormData.frmPass = formField.value;
		} else if(formField.name == "pixTaken"){
			formFieldName =  "Date";
			FormData.pixTaken = formField.value;
		} else if(formField.name == "pixTitle"){
			formFieldName =  "Title";
			FormData.pixTitle = formField.value;
		} else if(formField.name == "pixDesc"){
			formFieldName =  "Description";
			FormData.pixDesc = formField.value;
		} else if(formField.name == "pixLoc"){
			formFieldName =  "Location";
			FormData.pixLoc = formField.value;
		} else if(formField.name == "pixGeotag"){
			formFieldName =  "Geotag";
			FormData.pixGeotag = formField.value;
		} else if(formField.name == "pixfile"){
			formFieldName =  "File";
			FormData.pixFile = formField.value;
		} 
		
		if(formField.value == ''){
			alert("Please enter a value for \"" + formFieldName + "\"");
			formField.focus();
		}
	}
};

var Validate = {
	upload: function(){
		if(FormData.pixTaken == '' || FormData.pixTitle == '' || FormData.pixDesc == '' || FormData.pixLoc == '' || FormData.pixFile == ''){
			alert('??? ????? ???? ??');
			return false;
		} else {
			return true;
		}	
	}
}

function load(item){
	var mainDiv; 
	
	if(!item.match(/sendMsg/)){
		mainDiv = resetMain();
	}
	if(item.match(/gkb/)){
		mainDiv.innerHTML = GlobalData.gkbHtml;
	} else if (item.match(/dkb/)){
		if(GlobalData.dkbHtml == null || GlobalData.dkbHtml == ''){
			Ajax.connect(true, null, "/static/devnagrikb.xml", "devnagari", mainDiv);
		} else {
			mainDiv.innerHTML = GlobalData.dkbHtml;
		}
	} else if(item.match(/contact/)){		
		if(GlobalData.contactHtml == null || GlobalData.contactHtml == ''){
			Ajax.connect(true, null, "/static/contact.xml", "contact", mainDiv);
		} else {
			mainDiv.innerHTML = GlobalData.contactHtml;
		}
	} else if(item.match(/sendMsg/)){
		var postData = '';
		
		postData += 'frmName=' + FormData.frmName + "&";
		postData += 'frmEmail=' + FormData.frmEmail + "&";
		postData += 'frmSubject=' + FormData.frmSubject + "&";
		postData += 'frmComments=' + FormData.frmComments + "&";
		postData += 'captcha_text=' + FormData.captcha;

		Ajax.connect(false, postData, "/captcha/send_msg.php", "sendMsg", document.getElementById("main"));
	} else if(item.match(/uploadLogin/i)){		
		postData = "frmPass=" + hex_md5(FormData.frmPass + GlobalData.salt);
		
		Ajax.connect(false, postData, "/upload/authupload.php", "uploadLogin", document.getElementById("main"));
	}
}

var  Ajax = {
	'action':null,'mainDiv':null,'tns':null,
	connect: function (isGet, postData, url, action, mainDiv){
		var method = "post";
		this.action = action;
		this.mainDiv = mainDiv;
		
		if(isGet != null && isGet){
			method = "get";
		}
		var request = YAHOO.util.Connect.asyncRequest(method, encodeURI(url), this.callback, postData); 
	}, callback:{
		success:function(o){
			if(Ajax.action.match(/devnagari/i)){							
				Ajax.mainDiv.innerHTML =  o.responseText;
				GlobalData.dkbHtml = o.responseText;
			} else if(Ajax.action.match(/album/i)){
				///////////////////////////////////////////////////
				tnData = eval('('+o.responseText +')');
				
				var contentDiv = document.getElementById("main"); 

				var tnsDiv = document.createElement("div");
				
				tnsDiv.setAttribute("id", "tns");
				
				contentDiv.appendChild(tnsDiv);
				
				var errMsg = new String(tnData.tns);
				
				if (errMsg.match(/no data for this album/)){
					document.getElementById("tnHlpTxt").innerHTML = "This album does not have any photos yet.";
				}  else if(errMsg.match(/^.*Database.*$/)){
					document.getElementById("tnHlpTxt").innerHTML = "ERROR : Server error occurred while generating album.";
				} else {
					document.getElementById("tnHlpTxt").innerHTML = "Please click on thumbnail to see full size image.";
					var tnHolder = null;
					
					for(var i = 0; i < tnData.tns.length; i++){
						if(i%3 == 0){
							tnHolder = document.createElement("p");
							tnHolder.setAttribute("class", "row");
						}
						
						var tnSpan = document.createElement("span");
						tnSpan.setAttribute("id", tnData.tns[i].id);
						
						tnSpan.innerHTML = "<a href='javascript:void(0)' onclick='LoadAlbum.getData(\"" 
							+ tnData.tns[i].path + "\", [\"" 
							+ tnData.tns[i].path + "\",\"" 
							+ tnData.tns[i].desc + "\",\"" 
							+ tnData.tns[i].loc + "\",\"" 
							+ tnData.tns[i].geo + "\",\""
							+ tnData.tns[i].date + "\",\""
							+ tnData.tns[i].title + "\"])'><img src='/getimage.php?getData=" 
							+ tnData.tns[i].tnPath + "' height='50' width='50' /></a>";
						
						tnHolder.appendChild(tnSpan);
						tnsDiv.appendChild(tnHolder);
					}
				}
				///////////////////////////////////////////////////
			} else if(Ajax.action.match(/contact/i)){
				Ajax.mainDiv.innerHTML =  o.responseText;
				GlobalData.contactHtml = o.responseText;
			} else if(Ajax.action.match(/sendMsg/i)){
				var doc = o.responseXML.documentElement;
				var msg = doc.getElementsByTagName('msg')[0];
				
				if(msg != null){						
					Ajax.mainDiv.innerHTML = "<div style='text-align:left'><p>Dear " 
					+ msg.firstChild.nodeValue +",<br/>Thanks for sending me message. I shall contact you as soon as possible.<br/><br/>Regards<br/>Tanveer</p></div>";
				} else {
					var fieldsMsg = "\n";
					var errMsg = doc.getElementsByTagName('error')[0];					
					var email = doc.getElementsByTagName('email')[0];
					var missingFields = doc.getElementsByTagName('missing-fields')[0];
					var incorrectValues = doc.getElementsByTagName('incorrect-values')[0];
					
					if(email != null){
						eval("document.forms['gbForm']." + email.firstChild.nodeValue + ".style.backgroundColor = 'pink';" +
						"document.forms['gbForm']." + email.firstChild.nodeValue + ".style.border = '1px dashed brown';" +
						"document.forms['gbForm']." + email.firstChild.nodeValue + ".select();document.forms['gbForm']." + 
						email.firstChild.nodeValue + ".focus();");
					}
					
					if(missingFields != null){
						fieldsMsg = Ajax.highlightFields(missingFields.firstChild.nodeValue, "missing");
					} else if(incorrectValues){
						fieldsMsg = Ajax.highlightFields(incorrectValues.firstChild.nodeValue, "incorrect");
					}
					
					alert(errMsg.firstChild.nodeValue + fieldsMsg);
				}
			} else if(Ajax.action.match(/uploadLogin/i)){
				var uploadData = ''
				
				try{
					uploadData = eval('('+o.responseText +')');
				} catch(e){//Ignore error
				}
				
				if(uploadData.error != null){
					alert(uploadData.error);
				} else {
					Ajax.mainDiv.innerHTML = uploadData.html;
					GlobalData.uploadHtml = uploadData.html;
				}
			}
		}, 
		failure: function(o){
			alert("Server communication error");
		}, 
		argument: ['foo','bar'] 
	}, highlightFields: function(_fields, type){
	
		if(type.match(/missing/i)){
			type = " filled.";
		} else {
			type = " at least two characters long.";
		}
		var _fields = new String(_fields);
		var fields = _fields.split(",");
		
		for(var i = 0; i < fields.length; i++){
			eval("document.forms['gbForm']." + fields[i] + ".style.backgroundColor = 'pink';" +
			"document.forms['gbForm']." + fields[i] + ".style.border = '1px dashed brown';" +
			"document.forms['gbForm']." + fields[i] + ".style.color = 'brown';");
			
			var msg = "\n";
			
			if(fields[i].match(/frmName/i)){
				msg += "Name "
			} else if(fields[i].match(/frmEmail/i)){
				msg += "Email "
			} else if(fields[i].match(/frmSubject/i)){
				msg += "Subject "
			} else if(fields[i].match(/frmComments/i)){
				msg += "Message "
			}						
		}
		return msg += " field(s) must be " + type;
	}
}

var LoadAlbum = {
 init: function(postData){ 
	Ajax.connect(false, postData, "/album.php", "album", document.getElementById("main"));
},getData:function (path, descData){
	var imageDisplay = document.getElementById("pic");
	
	var mainImg = document.createElement("img");
 	mainImg.setAttribute("id","zoomImg");
 	mainImg.setAttribute("src", "/getimage.php?getData=" + path);
	mainImg.setAttribute("lowsrc", "/static/spinner.gif");
	mainImg.setAttribute("onload", "this.lowsrc='/static/spinner.gif'");
	mainImg.setAttribute("border","0");
 	mainImg.setAttribute("alt", descData[5]);
	mainImg.setAttribute("title",descData[5]);
	
	var tnHlpTxt = document.getElementById("tnHlpTxt");
	tnHlpTxt.style.display = "none";
	
	var zoomImg = document.getElementById("zoomImg");
	
	if(zoomImg != null){
		imageDisplay.removeChild(zoomImg);
	}
	
	var descTable = document.getElementById("descTable");
	
	if(descTable != null){
		imageDisplay.removeChild(descTable);
	}
	
	imageDisplay.appendChild(mainImg);
	this.createDescTable(descData);
}, createDescTable:function (data){
		var descTableHtml = '<p class="rowFSImage"><span class="picLeftCell">Title :</span><span class="picRightCell">' + data[5] + '</span></p>' 
		+ '<p class="rowFSImage"><span class="picLeftCell">Description :</span><span class="picRightCell">' + data[1] + '</span></p>' +
		'<p class="rowFSImage"><span class="picLeftCell">Location :</span><span class="picRightCell">' + data[2] + '</span></p>' +
		'<p class="rowFSImage"><span class="picLeftCell">Date :</span><span class="picRightCell">' + data[4] + '</span></p>'
		//Append only if geotag is available
		//if(data[3] != null){
		//	descTableHtml += '<p class="rowFSImage"><span class="picLeftCell">Geotag :</span><span class="picRightCell">' + data[3] + '</span></p>';
		//}
		var descTable = document.createElement("div");
		descTable.setAttribute("id","descTable");
		descTable.innerHTML = descTableHtml;
		
		document.getElementById('pic').appendChild(descTable);
		return descTable;
	}
}
