function setCookie(c_name,value,expiredays)
{		
	var exdate=new Date();
	var temestamp = exdate.getTime();
	exdate.setTime( temestamp + expiredays*24*60*60*1000 );
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : "; expires="+exdate.toUTCString( )+";");	
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{ 
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{ 
			c_start=c_start + c_name.length+1 ;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		} 
	}
	
	return null;
}

function CreateHttpRequestObject() {
    var varRequestObject;

    varRequestObject = null;
    if (window.XMLHttpRequest)
        varRequestObject = new XMLHttpRequest();
    else if (window.ActiveXObject) {
        try {
            varRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                varRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
            }
        }
    }

    if (varRequestObject == null) {
        alert("Cannot create an XMLHTTP instance");
    }

    return varRequestObject;
}

function loadXMLString(txt) {
    try //Internet Explorer
	  {
        xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
        xmlDoc.async = "false";
        xmlDoc.loadXML(txt);
        return (xmlDoc);
    }
    catch (e) {
		try
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = "false";
			xmlDoc.loadXML(txt);
			return (xmlDoc);
		}
        catch(e) //Firefox, Mozilla, Opera, etc.
	    {
            try
			{
				parser = new DOMParser();
				xmlDoc = parser.parseFromString(txt, "text/xml");
				return (xmlDoc);
			}
			catch (e) { alert(e.message) }
        }

    }
    return (null);
}


////////////////////////////////////////////////////////////////////////////////////
//              timer
////////////////////////////////////////////////////////////////////////////////////
//if varFunc return 1 means continue.
function TimerStart(varFunc, varDelay) {
    var TimerID = window.setInterval(
    function() {
        if (!varFunc()) {            
            window.clearInterval(TimerID);
        };
    },
    varDelay   //0.001(s)
    );
    return TimerID;
}

function TimerStop(varTimerId) {
    if (varTimerId != 0) {
        window.clearInterval(varTimerId);
    }
}



////////////////////////////////////////////////////////////////////////////////////
//              date extend
////////////////////////////////////////////////////////////////////////////////////
var gsMonthNames = new Array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);
var gsDayNames = new Array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);

Date.prototype.format = function(f) {
    if (!this.valueOf())
        return ' ';

    var d = this;

    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
        function($1) {
            switch ($1.toLowerCase()) {
                case 'yyyy': return d.getFullYear();
                case 'mmmm': return gsMonthNames[d.getMonth()];
                case 'mmm': return gsMonthNames[d.getMonth()].substr(0, 3);
                case 'mm': return padLeft((d.getMonth() + 1), 2);
                case 'dddd': return gsDayNames[d.getDay()];
                case 'ddd': return gsDayNames[d.getDay()].substr(0, 3);
                case 'dd': return padLeft(d.getDate().toString(), 2);
                case 'hh': return padLeft(d.getHours().toString(), 2);
                case 'nn': return padLeft(d.getMinutes().toString(), 2);
                case 'ss': return padLeft(d.getSeconds().toString(), 2);
                case 'a/p': return d.getHours() < 12 ? 'a' : 'p';
            }
        }
    );
}

function padLeft(str, lenght, appends) {
    if (appends == null) appends = "0";
    if (typeof (str) != 'String') str = String(str);
    if (str.length >= lenght)
        return str;
    else {
        for (var i = lenght - str.length; i > 0; --i) {
            str = String(appends) + String(str);
        }
        return str;
    }
}
function padRight(str, lenght, appends) {
    if (appends == null) appends = "0";
    if (typeof (str) != 'String') str = String(str);
    if (str.length >= lenght)
        return str;
    else {
        for (var i = lenght - str.length; i > 0; --i) {
            str =  String(str) + String(appends) ;
        }
        return str;
    }
}

////////////////////////////////////////////////////////////////////////////////////
//             show different time type
////////////////////////////////////////////////////////////////////////////////////
function second_to_time_string(varSecond) {
    if (varSecond < 60) return padLeft(varSecond,2);
    var s = varSecond % 60;
    var m = (varSecond - s) / 60 ;
    if (varSecond < 3600) return padLeft(m, 2) + " : " + padLeft(s, 2);
    var mx = m % 60;
    var h = (m - mx) / 60;
    return h + " : " + padLeft(mx, 2) + " : " + padLeft(s, 2);
}

////////////////////////////////////////////////////////////////////////////////////
//            Is number?
////////////////////////////////////////////////////////////////////////////////////

function is_numeric(varInput) {
    
	return !isNaN(varInput);

	if (!varInput) return false;
    var sText = varInput.toString();
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;
    
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}

////////////////////////////////////////////////////////////////////////////////////
//           window size;
////////////////////////////////////////////////////////////////////////////////////
function window_minimize() {
    this.moveTo(screen.availWidth, screen.availHeight);
    this.resizeTo(100, 100);
}

function window_maximize() {
    this.moveTo(0, 0);
    this.resizeTo(screen.availWidth, screen.availHeight);
}

////////////////////////////////////////////////////////////////////////////////////
//           get time
////////////////////////////////////////////////////////////////////////////////////
function fnGetHmsString() {
    var myDate = new Date();
    var strHMS = myDate.getHours() + "_" + myDate.getMinutes() + "_" + myDate.getSeconds();
    return strHMS;
}

////////////////////////////////////////////////////////////////////////////////////
//           meet "-",  break line
////////////////////////////////////////////////////////////////////////////////////
function change_minuse_breakline( screen_name, source_name , nat_type )
{
	if( nat_type != 0 )
	{
		var r = " -<span style='color:red' title='Relay' > R</span>";
		var max_word_len = 20;
	}
	else
	{
		var r = "";
		var max_word_len = 24;
	}
	
	if( strLen( screen_name ) > max_word_len )
	{
		var cut_screen_name = strCut( screen_name , ( max_word_len-4 ) , "..." );
		return '<span title="'+ screen_name +'" >'+cut_screen_name+'</span>' + r +  '<br />' + source_name;
	}
	else
	{
		return '<span>' + screen_name+ '</span>' + r +  '<br />' + source_name;
	}
}

function strCut( str , size , lastStr )
{
    var v=0;
	var temp ="";

    for(var i=0;i<str.length;i++)
	{
		v += charLen( str.charCodeAt( i ) );
		temp += str.charAt(i);
		if( v >= size )break;
    }
    return temp + lastStr;
}

function strLen( str )
{
    var v=0;
    for( var i=0;i<str.length;i++)
	{
		v += charLen( str.charCodeAt( i ) );
    }
    return v;
}

function charLen( c )
{
	// c is charCode;
	var v= 0;
	if      ( c == 109 ) v=1.8  //m
	else if ( c == 119 ) v=1.8  //w
	else if ( c == 73 )  v=1;   //I
	else if ( c == 74 )  v=1;   //J
	else if ( c == 77 )  v=1.7; //M
	else if ( c == 87 )  v=2.2; //W
	else if ( ( c >= 65 && c <= 90 ) )  v=1.3; //A~Z
	else if ( ( c >= 32 && c <= 126 ) ) v=1;
	else v = 2;

	return v;
}




////////////////////////////////////////////////////////////////////////////////////
//           navigator language 
////////////////////////////////////////////////////////////////////////////////////
function get_gavigator_lang() {
    if (navigator.userLanguage) // Explorer
        return navigator.userLanguage;
    else if (navigator.language) // FF
        return navigator.language;
    else
        return "en";
}
//zh-tw 

////////////////////////////////////////////////////////////////////////////////////
//           create  player
////////////////////////////////////////////////////////////////////////////////////

function createrPlayer( path )
{
	document.write( '<div  id="player_wrapper"  style="position:absolute;top:0px;left:0px;width:auto;height:auto;width:'+resolution().w+'px;height:'+resolution().h+'px;"  >' );	
	
	if( false && navigator.userAgent.indexOf('Intel Mac') !== -1 )
	{
		document.write(CreateSilverlightPlayer());
	}
	else
	{
		if ( navigator.appName == 'Netscape' || navigator.appName == 'Opera')
		{
			G_NAVIGATOR_APPNAME = "Firefox";
			navigator.plugins.refresh(false);
			
			var hasWindowsMediaPlayerPlugin = false
			
			for (var pi = 0; pi != navigator.plugins.length; pi++) 
			{
				if( hasWindowsMediaPlayerPlugin )break;
				hasWindowsMediaPlayerPlugin = 'np-mswmp.dll' === navigator.plugins[pi].filename;
			}

			if( hasWindowsMediaPlayerPlugin )
			{
				document.write('<object id="MediaPlayer" width="'+resolution().w+'" height="'+resolution().h+'" type="application/x-ms-wmp" >'+
					'<param name="SendPlayStateChangeEvents" value="True" />'+
					'<param name="SendMouseClickEvents" value="True" />'+
					'<param name="enableErrorDialogs" value="False" />'+
					'<param name="AutoStart" value="True" />'+
					'<param name="uiMode" value="none" />'+
					'<param name="PlayCount" value="9999" />'+
					'<param name="EnableContextMenu" value="'+(auth_full_screen()?'true':'false')+'" />'+
					'<param name="stretchToFit" value="true" />'+
					'<a></a>'+
					'</object>');
			}
			else
			{
				document.write('<a href="http://port25.technet.com/videos/downloads/wmpfirefoxplugin.exe" ><img src="'+path+'wmp_plugin_not_installed.png" alt="" style="border:none;" /></a>');
			}
		}
		else
		{
			G_NAVIGATOR_APPNAME = "IE";
			document.write('<object id="MediaPlayer" width="'+resolution().w+'" height="'+resolution().h+'" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" >'+
				'<param name="SendPlayStateChangeEvents" value="True" />'+
				'<param name="SendMouseClickEvents" value="True" />'+
				'<param name="enableErrorDialogs" value="False" />'+
				'<param name="AutoStart" value="True" />'+
				'<param name="uiMode" value="none" />'+
				'<param name="PlayCount" value="9999" />'+
				'<param name="EnableContextMenu" value="'+(auth_full_screen()?'true':'false')+'" />'+
				'<param name="stretchToFit" value="true" />'+
				'</object>');
		}
	}
	document.write('</div>');

}



function IsVideoIn( source_id )
{		
	return $.inArray( parseInt(source_id,10) , [6,9,45,48] ) > -1 
}
