var win=null;
function NewWindow(mypage,myname,w,h,scroll,pos,resizing,location,status,menubar,toolbar){
	LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;
	settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=false,directories=no,status='+status+',menubar='+menubar+',toolbar='+toolbar+',resizable='+resizing;

	var url = "/photo.jsp?url="+mypage;

	win=window.open(url,myname,settings);
	win.focus();
}

function showMenuPage1() {
	document.getElementById('menuPage1').style.display='block';
	document.getElementById('menuPage2').style.display='none';
	
	var tabList = document.getElementById("tablist_menu");
	lst = tabList.getElementsByTagName("li");
	lst[0].setAttribute("id","current");
	lst[1].setAttribute("id","");
}

function showMenuPage2() {
	document.getElementById('menuPage2').style.display='block';
	document.getElementById('menuPage1').style.display='none';

	var tabList = document.getElementById("tablist_menu");
	lst = tabList.getElementsByTagName("li");
	lst[1].setAttribute("id","current");
	lst[0].setAttribute("id","");
}

/*
 *  Common functions for Immersifind.
 *  (C) 2010
 */
(function($) {
	var imf$ = window.IMF = function() {
		var vars = {
			'isMSIE6': false,
			'FB_APPS_ID': '',
			//'RECOMM_IMSSO_IDS': [],
			'IMSSO_USER_TYPE': 'IMSSO_USER_TYPE',		// 1: registered IMSSO user, 2: New registered IMSSO user, 3: Facebook login user
			'IMSSO_SESSION_COOKIE': 'IMSSO_SESSION_ID',
			'IMSSO_USER_ID_COOKIE': 'IMSSO_USER_ID',
			'IMSSO_USER_FNAME_COOKIE': 'IMSSO_USER_FNAME',
			'IMSSO_USER_LNAME_COOKIE': 'IMSSO_USER_LNAME',
			'IMSSO_USER_DISPLAY_NAME_COOKIE': 'IMSSO_USER_DISPLAY_NAME'						
		};
		
		var handleAuthDisplay = function(isSignIn) {
			// sign in
			if(isSignIn) {
 				$('#signin_welcome').show();
 				$('#signin_name').html(c$.readCookie(vars.IMSSO_USER_FNAME_COOKIE));
 				$('#signin_link').hide();
 				$('#signout_link').show();
			}
			// sign out
			else {
 				$('#signin_welcome').hide();
 				$('#signin_link').show();
 				$('#signout_link').hide();
			}
		};

 		var afterSignIn = function(u) {
			sso$.setSSOCookies(u);
 			handleAuthDisplay(true);
 		};

 		var afterSignOut = function(status) {
 			if(status >= 200 && status < 300) {
 				// change recommend box style for signed out
 				// if should be processed based on page types like homepage or listing or detail pages?
 	 			$('#afterRecommendFirst').hide();
 	 			$('#recommend-box, #recommend-box .init, #recommend-box input[type!="image"][type!="checkbox"][type!="password"], #AlreadyhaveAccount').show();
 			}
 			else if(status == 404)
 				alert('Session has been expired.');
 			
			handleAuthDisplay(false);
 			sso$.deleteSSOCookies();
 		};

		return {
			vars: vars,
			handleAuthDisplay: handleAuthDisplay,
			afterSignIn: afterSignIn,
			afterSignOut: afterSignOut			
		}
	}();

	var v$ = imf$.vars;

	// all things to start as DOM ready
	$(document).ready( function() {
		// check IE6 and show warning message
		if(v$.isMSIE6) {
			$('#ie6message_close').click(function() {
				$.unblockUI({fadeOut:10});
				return false;
			});
			$.blockUI({message: jQuery('#ie6message'), 
						   css: {padding:'10px 0',width:'600px', height:'220px', 'font-size':'12px',	
							  	 top: ($(window).height() - 200) /2 + 'px',
							  	 left: ($(window).width() - 600) /2 + 'px'}, 
					   overlayCSS:{backgroundColor:'#FFFFFF', opacity:'0.4'} 
					  });
		}

		//alert('FB SID : ' + c$.readCookie('fbs_151464734893718') + ":" + v$.IMSSO_SESSION_COOKIE +"-"+c$.readCookie(v$.IMSSO_USER_ID_COOKIE));

		// check sign in status so as to change the display of sign in/out
		if(sso$.isSignedIn())
			imf$.handleAuthDisplay(true);

 		$('#signin_link').click(function(){
 			return false;
 		});
		
 		$('#signout_link').click(function(){
 			sso$.signOut(imf$.afterSignOut);
 			return false;
 		});	
 	});
	/* *************************************************************************** */

	imf$.imsso = function() {
		var setSSOCookies = function(u) {
			if(typeof u.sessionId !== 'undefined')
				c$.writeCookie(v$.IMSSO_SESSION_COOKIE, u.sessionId, 0.04); // almost 30 min.

			if(u.isNewUser)
				c$.writeCookie(v$.IMSSO_USER_TYPE, 2);			
			else if(u.isFBUser)
				c$.writeCookie(v$.IMSSO_USER_TYPE, 3);			
			else	// IMSSO user and have been already registered 
				c$.writeCookie(v$.IMSSO_USER_TYPE, 1);
			
 			c$.writeCookie(v$.IMSSO_USER_ID_COOKIE, u.id);
 			c$.writeCookie(v$.IMSSO_USER_FNAME_COOKIE, u.fn);
 			c$.writeCookie(v$.IMSSO_USER_LNAME_COOKIE, u.ln);
		};
		
		var deleteSSOCookies = function() {
			c$.deleteCookie(v$.IMSSO_USER_TYPE);
			c$.deleteCookie(v$.IMSSO_SESSION_COOKIE);
 			c$.deleteCookie(v$.IMSSO_USER_ID_COOKIE);
 			c$.deleteCookie(v$.IMSSO_USER_FNAME_COOKIE);
 			c$.deleteCookie(v$.IMSSO_USER_LNAME_COOKIE);
		};
		
 		var signIn = function(u, callback) {
 			$.ajax({
 				type:"GET",
 				url: "/imsso.do",
 				data: "mt=si&em=" + u.em + "&pw=" + u.pw + "&t="+(new Date()).getTime(),
 				dataType: "xml",
 				success: function(xml) {
 					var status = $(xml).find('response_code').text();

 					if(status >= 200 && status < 300)
 						u['sessionId'] = $(xml).find('session_id').text();
 					
 					if(typeof callback !== 'undefined')
 						callback(status, u);
 				},
 				error: function() {
 					if(typeof callback !== 'undefined')
 						callback(-1, u);
 				}
 			});
 		};

		var signOut = function(callback) {
			var type = c$.readCookie(v$.IMSSO_USER_TYPE);

			if(type == 3) {	// Facebook user
				// it has been signed in through Facebook so don't need to call IMSSO API
				FB.logout(function(response) {
					if(response) {
		 				alert('Signed out from Facebook.');
			 			if(typeof callback !== 'undefined') {
			 				callback(200);
			 			}
		 			}
					else {
						if(typeof callback !== 'undefined')
							callback(406);
					}
	 			});
			}
			else if(type == 1) {
				var sid = c$.readCookie(v$.IMSSO_SESSION_COOKIE);
				
				$.ajax({
					type: "GET",
					url: "/imsso.do",
					data: "mt=so&ss=" + sid + "&t="+(new Date()).getTime(),
					dataType: "xml",
					success: function(xml) {
						var status = $(xml).find('response_code').text();

						if(typeof callback !== 'undefined')
							callback(status);
					},
					error: function() {
						if(typeof callback !== 'undefined')
							callback(-1);
					}
				});
			}
			else {
				if(typeof callback !== 'undefined')
					callback(405);				
			}
		};

		var isSignedIn = function(callback) {
			var sid = c$.readCookie(v$.IMSSO_SESSION_COOKIE);
			var fn = c$.readCookie(v$.IMSSO_USER_FNAME_COOKIE);
			//var aid = c$.readCookie('fbs_'+v$.FB_APPS_ID);

			if(sid != "" && sid !== undefined)
				return true;//isValidSession(sid, );
			else if(fn != "" && fn !== undefined)
				return true;
			else
				return false;
		};

		var isValidSession = function(sid, callback) {
			
		};

 		var getUserDetails = function(userInfo, callback) {	// userId is either email or imsso id 
			var id = userInfo.id||userInfo.em; 

 			$.ajax({
 				type:"GET",
 				url: "/imsso.do",
 				data: "mt=gu&id=" + id + "&t="+(new Date()).getTime(),
 				dataType: "xml",
 				success: function(xml) {
 					userInfo['id'] = -1;
 					var user = $(xml).find('userData');

 					if(user.length > 0) {
	 					user.each(function() {
	 						var userId = $(this).attr('user_id');
	 						var fname = $(this).find('first_name').text();
	 						var lname = $(this).find('last_name').text();

	 						// set user details
	 						userInfo['id'] = userId;
	 						userInfo['fn'] = fname;
	 						userInfo['ln'] = lname;
	 						
	 						//alert('getUserDetails: ' + userId + ":" + fname +":" + lname);
	 					});
	 					
	 					callback(200, userInfo);
 					}
 					else {
 						//alert('Not found user');
 						callback(404, userInfo);
 					}
 				},
 				error: function() {
 					userInfo['id'] = -1; // not found
 					callback(-1, userInfo);
 				}
 			});
 		};

 		var registerUser = function(u, callback) {
 			var data;

 			if(u.isFBUser)
 				data = "mt=su&fbid="+u.fbid+"&fn="+u.fn+"&ln="+u.ln+"&nm="+u.nm+"&em="+u.em+"&lnk="+u.lnk+"&loc="+u.loc+
 					   "&vfd="+u.vfd+"&sex="+u.sex+"&tz="+u.tz+"&upt="+u.upt+"&t="+(new Date()).getTime();
 			else
 				data = "mt=su&fn=" + u.fn + "&ln=" + u.ln + "&em=" + u.em + "&pw=" + u.pw + "&t="+(new Date()).getTime();

 			//alert('register user : ' + data);
 			$.ajax({
 				type:"GET",
 				url: "/imsso.do",
 				data: data,
 				dataType: "xml",
 				success: function(xml) {
 					u['id'] = -1;

 					var status = $(xml).find('response_code').text();

 					if(status == 201) {
	 					$(xml).find('user_id').each(function() {
	 						u['id'] = $(this).text();
	 						u['isNewUser'] = true;
	 					});
 					}

					callback(status, u);
 				},
 				error: function() {
 					u['id'] = -1;
 					callback(-1, u);
 				}
 			});
 		};

 		return {
 			setSSOCookies:setSSOCookies,
 			deleteSSOCookies:deleteSSOCookies,
			signIn: signIn,
			signOut: signOut,
			getUserDetails: getUserDetails,
			registerUser: registerUser,
			isSignedIn: isSignedIn
		}
	}();

	var sso$ = imf$.imsso;
	/* *********************************************************************************** */

	imf$.FB = function() {
		var login = function() {
 			var popUrl = '/jsp/facebookHandler.jsp?m=I';
 			window.open(popUrl,'facebook','toolbar=no,resizable=yes,directories=no,menubar=no,width=900,height=600,screenX=50,screenY=50,top=50,left=50'); 			
		};
		
		var handleStatus = function(response) {
			if(response.session) {
				alert('session');
			}
			else {
				alert('no session');
				FB.logout(handleStatus);
			}
		};

		return {
			login: login,
			handleStatus: handleStatus
		}
	}();

	/*
	 * Cookie object
	 */
	imf$.cookie = function() {
		var writeCookie = function(name, value, day) {
			if (value == null || name == null) 
				return;

			var expires;
			var expDays = day||120; // default: 3 months
			var date = new Date();

			date.setTime(date.getTime()+(expDays*24*60*60*1000));
			expires = "; expires="+date.toGMTString();

			document.cookie = name + "=" + escape(value) + expires +'; path=/';
		};

		// Reads a cookie from the browser
		var readCookie = function(name) {
		    var cookieValue = undefined;
		    var search = name + "=";

		    if(document.cookie.length > 0) { 
		        offset = document.cookie.indexOf(search);
		        if(offset != -1) { 
		            offset += search.length;
		            end = document.cookie.indexOf(";", offset);
		            if(end == -1) 
		            	end = document.cookie.length;

		            cookieValue = unescape(document.cookie.substring(offset, end));
		        }
		    }

		    return cookieValue;
		};

		var deleteCookie = function(cookieName) {
			document.cookie = cookieName + "=; expires=-1; path=/";
		};

		return {
			writeCookie: writeCookie,
			readCookie: readCookie,
			deleteCookie: deleteCookie
		};
	}();

	var c$ = imf$.cookie;
	/* ************************************* */	
	
 })(jQuery);
