﻿/**
 * @author cuong.tran
 * @email cuong.tran@enclaveit.com, cuongtranquoc@gmail.com
 * @function Common
 * @version 2.0
 * @create date: 10/27/2009 
 * @last update: 08 Nov 2010 
**/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
function XBrowserAddHandler(target, eventName, fnHandler){
    try{
        var originalHandler = target["on" + eventName];    
        if (originalHandler) {
            target["on" + eventName] = function(e){
                XBrowserApplyHandler(this, originalHandler, e);
                XBrowserApplyHandler(this, fnHandler, e);
            };
        }
        else {
            target["on" + eventName] = function(e){
                XBrowserApplyHandler(this, fnHandler, e)
            };        
        }
    } catch(e){}
};
function leadingzero(number, length) {   
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }
    return str;
};
function XBrowserApplyHandler(target, fn, e){    
    if (!e) 
        e = window.event;
    if (Function.prototype.call) {
        fn.call(target, e);
    }
    else {
        target.__XBrowserElementApply = fn;
        target.__XBrowserElementApply(e)
    }
};
function removeURLPara(para, url){
    if (url == undefined){        
        url = window.location.href;        
    }
    para = para.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + para + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(url);
    if (results != null) {
        return url.replace('?' + para + '=' + results[1], '').replace('&' + para + '=' + results[1], '');
    }
    else {
        return url;
    }
};
function replaceURLPara(thisUrl, para, value){
    para = para.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + para + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(thisUrl);
    if (results != null) {   
        if (results[1]==''){
            thisUrl = thisUrl.replace(results[0],results[0]+value);        
        }else{            
            thisUrl = thisUrl.replace(results[0],results[0].substring(0,1)+ para+ '='+value);
        }
    }
    else {    
        if (thisUrl.indexOf('?') == -1) {
            thisUrl += '?' + para + '=' + value;
        }
        else {
            thisUrl += '&' + para + '=' + value;
        }
    }
    return thisUrl;
};
function AddURLPara(thisUrl, para, value){
    para = para.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + para + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(thisUrl);        
    if (results != null) {  
        thisUrl=replaceURLPara(thisUrl, para, value);         
    }
    else {        
        if (thisUrl.indexOf('?') == -1) {
            thisUrl += '?' + para + '=' + value;
        }
        else {
            thisUrl += '&' + para + '=' + value;
        }
    }
    return thisUrl;
};
function getRequestValue(para){
    if ((para!=NaN) && (para!=undefined)){
        para = para.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]" + para + "=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
        if( results == null )
            return '';
        else
            return results[1];
    };
    return '';    
};
function replaceWindowLocationURLPara(para, value){
    var thisUrl = window.location.href;
    para = para.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + para + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(thisUrl);
    if (results != null) {
        if (results[1]==''){
            thisUrl = thisUrl.replace(results[0],results[0]+value);        
        }else{            
            thisUrl = thisUrl.replace(results[0],results[0].substring(0,1)+ para+ '='+value);
        }
    }
    else {
        if (thisUrl.indexOf('?') == -1) {
            thisUrl += '?' + para + '=' + value;
        }
        else {
            thisUrl += '&' + para + '=' + value;
        }
    }
    return thisUrl;
};
function trim(input){
    try{
        return input.replace(/^\s+|\s+$/, '');
    }catch(e){
        return '';
    }
};
function stringformat(str)
{  
  if (str){
      var tmp;  
      for(var i = 1; i < arguments.length; i++)
      {
        tmp = (i - 1);
        str = str.replace('{' + tmp  + '}', arguments[i]);
      }
      return str;
    }else{return ''}
};
function focusField(fieldID){
    var thisField = document.getElementById(fieldID);
    try {
        thisField.select();
        thisField.focus();
    } 
    catch (e) {
    }
};
function clearField(fieldname){
    var thisField = document.getElementById(fieldname);
    if (thisField) {
        thisField.value = '';
    }
};
function IncludeJavaScript(jsFile){
    document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>');
};
function IncludeCss(cssFile){
    document.write('<link  rel="stylesheet" type="text/css" href="' + cssFile + '" />');
};
function addLoadEvent(func){
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function(){
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
};
function getForm(name){
    var arrFrom = document.getElementsByTagName("form");
    for (var i = 0; i < arrFrom.length; i++) {
        if (arrFrom[i].name == name) {
            return arrFrom[i];
        }
    };
    return NaN
};
function getElementHeight(Elem){
    var elem;
    if (document.getElementById) {
        elem = document.getElementById(Elem);
    }
    else 
        if (document.all) {
            elem = document.all[Elem];
        }
    return elem.offsetHeight;
};
function getElementWidth(Elem){
    var elem;
    if (document.getElementById) {
        elem = document.getElementById(Elem);
    }
    else 
        if (document.all) {
            elem = document.all[Elem];
        }
    return elem.offsetWidth;
};
function getElementTop(elm){
    var x = 0;   
    while (elm != null) {
        x += elm.offsetTop;
        elm = elm.offsetParent;
    }
    return parseInt(x);
};
function getElementLeft(elm){
    var x = 0;    
    while (elm != null) {
        x += elm.offsetLeft;
        elm = elm.offsetParent;
    }
    return parseInt(x);
};
function setBroserTitle(titleSt){
    document.title = titleSt;
};        
function hideAllMask() {
    if (document.getElementById("product_category")) {
        var i, divTagCount;
        var allDivTag = document.getElementById("product_category").getElementsByTagName("div");
        divTagCount = allDivTag.length;
        for (i = 0; i < divTagCount; i++) {
            if (allDivTag[i].id.match(/\Mask_/ig)) {
                allDivTag[i].style.display = "none";
            }
        }
    }
};
function textboxHint(field, isShow){
    var hintField = document.getElementById(field.id + '_hint');            
    if (hintField){         
        if (isShow){
            if (field.value==''){
                hintField.style.display = '';                    
            }
        }else{
            hintField.style.display = 'none';
        }        
    }
};
function initTextboxHint(parentField){
    var ind_body = document.getElementById(parentField);
    if (ind_body){                
        var parentNd;
        var hintLabel;
        var hintFieldHTML;        
        var allInput = ind_body.getElementsByTagName('input');  

        for (i = 0; i < allInput.length ; i++) {
            if ((allInput[i].getAttribute('placeholder')!= null) && (allInput[i].getAttribute('placeholder')!= '')){                                                        
                if ((BrowserDetect.browser!='Chrome') && (BrowserDetect.browser!='Safari') && (!((BrowserDetect.browser=='Firefox') && (BrowserDetect.version.toString().substring(0,1)>=4)))){
                    parentNd = allInput[i].parentNode;
                    if (parentNd){                                    
                        parentNd.style.position = 'relative';
                        hintLabel = document.createElement('label');                                        
                        with(hintLabel){
                            setAttribute('id', allInput[i].id  + '_hint');                        
                            if (trim(allInput[i].value)!= ''){
                                style.display = 'none';
                            }
                            setAttribute('title' ,(allInput[i].title == '')? allInput[i].getAttribute('placeholder') : allInput[i].title);
                            innerHTML = allInput[i].getAttribute('placeholder');                    
                        }
                        hintLabel.className = 'cssTextBoxHint';   
                        hintLabel.htmlFor = allInput[i].id;
                        parentNd.appendChild(hintLabel);                    
                        XBrowserAddHandler(allInput[i], "focus", function() {                                     
                            textboxHint(this, false);                                                        
                        });
                        XBrowserAddHandler(allInput[i], "blur", function() {                            
                            textboxHint(this, true);
                        });
                    }
                }
            }  
        }        
    }
};
function EmbededDataAndExcuseScript(fieldID,data){
    contentDiv = document.getElementById(fieldID);
    contentDiv.innerHTML = data;      
    
    var scripts = contentDiv.getElementsByTagName("script");            
    for(var i=0; i < scripts.length; i++){
        if (scripts[i].src!=''){                    
            var newscript = document.createElement('script'); 
            newscript.setAttribute("src",scripts[i].src);
            newscript.setAttribute("type", "text/javascript");                        
            document.body.appendChild(newscript);                                                
        }else{
            try{        
                eval(scripts[i].innerHTML || scripts[i].text);
                var newscript = document.createElement('script');                     
                newscript.innerHTML=scripts[i].innerHTML || scripts[i].text;                    
                newscript.setAttribute("type", "text/javascript");                        
                document.body.appendChild(newscript);                    
            }catch(e){                
				if (window.execScript){
					window.execScript(scripts[i].innerHTML || scripts[i].text);
				} else {
					var head = document.getElementsByTagName('head')[0];
					var scriptElement = document.createElement('script');
					scriptElement.setAttribute('type', 'text/javascript');
					scriptElement.innerText = (scripts[i].innerHTML || scripts[i].text);
					head.appendChild(scriptElement);
					head.removeChild(scriptElement);
				}   				
            }
        }                
    }            
};
function loadObject(objName, ParamSt, fieldID, FailureMessage, SuccessMessage){
    var returnData = GetData(0, 'http://' + fnGetDomain(window.location.href) + '/Handler/LoadObject.aspx?obj_src=' + objName + ParamSt);    
    if (returnData != '') {
        EmbededDataAndExcuseScript(fieldID, returnData);
        if (SuccessMessage){
            if (SuccessMessage!=''){
                alert(SuccessMessage);
            }
        }
    } else {
        if (FailureMessage){
            if (FailureMessage!=''){
                alert(FailureMessage);
            }
        }
    }             
};
function fnGetDomain(url){return url.match(/:\/\/(.[^/]+)/)[1];};
