
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 10;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// -----------------------------------------------------------------------------

var appName = "ptviewer280x390";
var swf_w = 280;
var swf_h = 390;


function getUrlQParam(name)
{
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp(regexS);
	var tmpURL = window.location.href;
	var results = regex.exec(tmpURL);
	
	if(results == null) return null;
	
	return results[1];
}


function getParamFromString(name, stringVal)
{
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(stringVal);
	
	if(results == null) return null;
	
	return results[1];
}


function getPassedParams() {
	var regexS = "\\?([^\\%]+)";
	var regex = new RegExp( regexS );
	var tmpURL = window.location.href;
	var results = regex.exec( tmpURL );
	
	if( results == null ) return "";
	
	return results[0].substring(1);
}


function openWebUrl(url) {
	if (url != null && url.indexOf("http://") == 0) {
		window.open(url);
	}
}


function gotoPaltalkExpress(gid, refc) {
	var url = "http://express.paltalk.com/index.html";
	
	if (isPaltalkInstalled()) {
		if (refc != null) {
			launchGroupWithRefc(gid, refc)
		}
		else {
			launchGroup(gid);
		}
	}
	else {
		if (gid != null && gid.length > 0) {
			url += "?gid=" + gid;
			
			if (refc != null && refc.length > 0) {
				url += "&refc=" + refc;
			}
		}
		else if (refc != null && refc.length > 0) {
			url += "?refc=" + refc;
		}
		
		openWebUrl(url);
	}
}


function createBookmark() {
	createBookmarkLink("http://www.paltalk.com/express/", "Paltalk Express");        
}


function createBookmarkLink(url, title) {
	try {
		if (window.sidebar) { // Mozilla Firefox Bookmark
			return window.sidebar.addPanel(title, url, "");
		} else if( window.external ) { // IE Favorite
			return window.external.AddFavorite( url, title);
		} else if(window.opera && window.print) { // Opera Hotlist
			return true; 
		}
	} catch(err) {
		// do nothing
	}
	
	alert('Could not create a bookmark on your client.\n\nTo return to '+title+' you must manually create a bookmark to: \n' + url + '.');
}


function writeBookmarkLink(url, title) {
	try {
		if (window.sidebar) { // Mozilla Firefox Bookmark
			return document.write('<a href="javascript:createBookmarkLink(\''+url+'\', \''+title+'\')");">Create a Bookmark to <em>'+title+'</em></a>');
		} else if (window.external) { // IE Favorite
			return document.write('<a href="javascript:createBookmarkLink(\''+url+'\', \''+title+'\')");">Add <em>'+title+'</em> to your Favorites</a>'); 
		} else if (window.opera && window.print) { // Opera Hotlist
			return document.write('<a rel="sidebar" href="'+url+'" title="'+title+'">Create a Bookmark to <em>'+title+'</em></a>');
		}
	} catch(err) {
		// do nothing
	}
	
	return document.write('To return to '+title+' create a bookmark to: <a style="color: white;" href="'+url+'">'+url+'</a>');
}


function writeCameo(id, params) {
	if (id != null && !isNaN(id)) {
		id = parseInt(id);
		
		if (id == 1) {
			appName = "ptviewer280x390";
			swf_w = 280;
			swf_h = 390;
		}
		else if (id == 2) {
			appName = "ptviewer300x250";
			swf_w = 300;
			swf_h = 250;
		}
		else if (id == 3) {
			appName = "ptviewer728x90";
			swf_w = 728;
			swf_h = 90;
		}
	}
	
	
	var hasProductInstall = DetectFlashVer(6, 0, 65);
	var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	
	if ( hasProductInstall && !hasRequestedVersion ) {
		var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
		var MMredirectURL = window.location;
		document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		var MMdoctitle = document.title;
		
		AC_FL_RunContent(
			"src", "playerProductInstall",
			"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
			"width", swf_w,
			"height", swf_h,
			"align", "middle",
			"id", "cameo",
			"quality", "high",
			"bgcolor", "#000000",
			"name", "cameo",
			"allowScriptAccess","always",
			"allowNetworking", "all",
			"wmode", "window",
			"type", "application/x-shockwave-flash",
			"pluginspage", "http://www.adobe.com/go/getflashplayer"
		);
	}
	else if (hasRequestedVersion) {
		
		AC_FL_RunContent(
			"src", "http://express.paltalk.com/"+appName+".swf",
			"FlashVars", params,
			"width", swf_w,
			"height", swf_h,
			"align", "middle",
			"id", "cameo",
			"quality", "high",
			"bgcolor", "#000000",
			"name", "cameo",
			"allowScriptAccess","always",
			"allowNetworking", "all",
			"wmode", "window",
			"type", "application/x-shockwave-flash",
			"pluginspage", "http://www.adobe.com/go/getflashplayer"
		);
	}
	else {
		var alternateContent = 'This content requires Flash Player 10. <a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
		document.write(alternateContent);
	}
}




/*************************
 *** ADOBE'S AC_OETags ***
 *************************/

// Flash Player Version Detection - Rev 1.6
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			} else if (versionRevision[0] == "b") {
				versionRevision = versionRevision.substring(1);
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  var qIndex = src.indexOf('?');
  if ( qIndex != -1)
  {
    // Add the extention (if needed) before the query params
    var path = src.substring(0, qIndex);
    if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length))
      return src;
    else
      return src.replace(/\?/, ext+'?'); 
  }
  else
  {
    // Add the extension (if needed) to the end of the URL
    if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length))
      return src;  // Already have extension
    else
      return src + ext;
  }
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
    var str = '';
    if (isIE && isWin && !isOpera)
    {
  		str += '<object ';
  		for (var i in objAttrs)
  			str += i + '="' + objAttrs[i] + '" ';
  		str += '>';
  		for (var i in params)
  			str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  		str += '</object>';
    } else {
  		str += '<embed ';
  		for (var i in embedAttrs)
  			str += i + '="' + embedAttrs[i] + '" ';
  		str += '> </embed>';
    }

    document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    


    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "id":
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}











/******************************
 *** Paltalk Client Checker ***
 ******************************/

var bHasActiveX = ((navigator.userAgent.indexOf('Win')  != -1) && (navigator.userAgent.indexOf('MSIE') != -1) && (parseInt(navigator.appVersion) >= 4 ));
var bUnsupportedBrowser = ((navigator.userAgent.indexOf('Safari')  != -1) || (navigator.userAgent.indexOf('Opera')  != -1));
var detected;

if(typeof(detected) == "undefined" && bHasActiveX) {
    document.write(
        ['<script language="VBscript">',
        'Function isPaltalkInstalledVB()',
        'on error resume next',
        'Set paltalkObj = CreateObject("pallauncher.command")',
        'isPaltalkInstalledVB = IsObject(paltalkObj)',
        'Set paltalkObj = nothing',
        'End Function',
        '</script>'].join("\n")
    );
}


function checkPaltalk() {
    if ( !isPaltalkInstalled() ) {
        return gotoDownloadPage()
    }
    return true;
}


function isPaltalkInstalled() {
    if(bUnsupportedBrowser) {
        return true;
    } else if(!bHasActiveX) {
        var paltalkMime = navigator.mimeTypes["application/x-paltalk"];
        detected = true;


        if(typeof(paltalkMime) == "object") {
            return true;
        } else {
            return false;
        }
    } else {
        if(isPaltalkInstalledVB()) {
            detected = true;
            return true;
        }
    }

    detected = true;
    return false;
}


function gotoDownloadPage(target_url) {
    var download_url = "http://www.paltalk.com/start_chatting.shtml";

    if ( target_url!=null && target_url!='' ){
        download_url=download_url+"?target="+target_url;
    }

    window.location.href = download_url;
	return false;
}


function gotoDownloadPageWithRefc(target_url,refc) {
    var download_url = "http://www.paltalk.com/en/client_download.shtml";

    if ( target_url!=null && target_url!='' ){
        download_url=download_url+"?target="+target_url;
		if(refc>0){
			download_url = download_url+"&refc="+refc;
		}
    }

    window.location.href = download_url;
	return false;
}


function executeCmd(target_url){

    if ( isPaltalkInstalled() ) {
        window.location.href = target_url;
    } else {
       gotoDownloadPage(target_url);
    	 alert("If Paltalk is installed on your computer and you are getting this message, then select Run ActiveX Control at the top of this window and try again. This will run Paltalk, and a SuperIM session will be initiated.");
    }
}


function launchGroup(group_id){
    executeCmd("paltalk://groups/"+group_id);
}
function launchPaltalk(){
    executeCmd("paltalk://");
}
function launchGroupWithRefc(group_id,refc){
    executeCmd("paltalk://groups/"+group_id);
}
function addBuddy(uid){
    executeCmd("paltalk://addbuddy/"+uid);
}
function removeBuddy(uid){
    executeCmd("paltalk://removebuddy/"+uid);
}
function launchRecorder(){
    executeCmd("paltalk://launchrecorder/");
}
function launchRecorder(){
    executeCmd("paltalk://launchrecorder/");
}
function updateN2PBalanceCmd(){
    executeCmd("paltalk://n2pbal/");
}
function updateMydispPicCmd(){
    executeCmd("paltalk://updatemydisppic/");
}
function showaskofferCmd(){
    executeCmd("paltalk://showaskoffer/");
}
function showdialerCmd(){
    executeCmd("paltalk://showdialer/");
}
function takeATourCmd(){
    executeCmd("paltalk://takeatour/");
}
function preferencesCmd(){
    executeCmd("paltalk://preferences/");
}
function guidesRequestCmd(){
    executeCmd("paltalk://guidesrequest/");
}
function guidesVolunteerCmd(){
    executeCmd("paltalk://guidesvolunteer/");
}
function addPalCmd(){
    executeCmd("paltalk://addpal/");
}
function myFavoritesCmd(){
    executeCmd("paltalk://myfavorites/");
}
function onNowCmd(){
    executeCmd("paltalk://onnow/");
}
function liveGuideCmd(){
    executeCmd("paltalk://liveguide/");
}
function helpRoomCmd(){
    executeCmd("paltalk://helproom/");
}
function inviteAFriendCmd(){
    executeCmd("paltalk://inviteafriend/");
}
function startWebSuperIMCmd(){
    executeCmd("paltalk://startwebsuperim/");
}
function chatAIMCmd(){
    executeCmd("paltalk://chataim/");
}
function chatYHCmd(){
    executeCmd("paltalk://chatyh/");
}
function chatICQCmd(){
    executeCmd("paltalk://chaticq/");
}
function browseRoomsCmd(){
    executeCmd("paltalk://browserooms/");
}
function autoPlaceCmd(){
    executeCmd("paltalk://autoplace/");
}
function topRatedRoomsCmd(){
    executeCmd("paltalk://topratedrooms/");
}
function createOwnRoomCmd(){
    executeCmd("paltalk://createownroom/");
}
function makePhoneCallCmd(){
    executeCmd("paltalk://makephonecall/");
}
function ssonCommand(mptUrl){
    executeCmd("paltalk://sson/"+mptUrl);
}
function getOutlookAddresses(){
    executeCmd("paltalk://getOutlookEmails");
}




function launchImWindow(uid){
    launchImWindowWithRefc(uid, 0);
}


function launchImWindowWithRefc(uid,refc){
    if ( isPaltalkInstalled() ) {
        executeCmd("paltalk://pm/"+uid);
    } else {
        if ( refc>0 ) {
            window.location.href = "http://express.paltalk.com/index.html?pid="+uid+"&refc="+refc;                
        } else {
            window.location.href = "http://express.paltalk.com/index.html?pid="+uid;
        }
    }    
}




function openGroup(encoded_ug_id, encoded_group_id,refc){
    if ( refc>0 ) {
        window.location.href = "http://chat.paltalk.com/g2/group/"+encoded_group_id+"/WebLoader.wmt?refc="+refc;
    } else {
        window.location.href = "http://chat.paltalk.com/g2/group/"+encoded_group_id+"/WebLoader.wmt";
    }
}




function openGroupByEncodedUG(encoded_ug_id, bRoomOpened, refc){
    if ( !bRoomOpened ) {
        if ( refc>0 ) {
            window.location.href = "http://chat.paltalk.com/g2/paltalk/"+encoded_ug_id+"/index.wmt?refc="+refc;
        } else {
            window.location.href = "http://chat.paltalk.com/g2/paltalk/"+encoded_ug_id+"/index.wmt";
        }
        
    } else {
        if ( isPaltalkInstalled() ) {
            launchGroup(encoded_ug_id);
        } else {
            if ( refc>0 ) {
                window.location.href = "http://express.paltalk.com/index.html?gid="+encoded_ug_id+"&refc="+refc;                
            } else {
                window.location.href = "http://express.paltalk.com/index.html?gid="+encoded_ug_id;
            }
        }
    }
}
