/* Method :: Sexylight Box */
function lightbox_open(color, dir) {
	SexyLightbox.initialize({
		color: color,
		dir: dir
	});
}

function lightbox_close(){
	SexyLightbox.close();
}
/* Method :: Sexylight Box */

/* Method :: IFrame 
function resize_iframe(iframe_name, add_height) {
	alt = document.body;
	frm = parent.document.getElementById(iframe_name);

	frm.height = alt.offsetHeight + add_height;	
}

function reset_size_iframe(iframe_name) {
	parent.document.getElementById(iframe_name).height = "0px";
}
/* Method :: IFrame */

/* Method :: Check Message */ 
function check_message(id_string, id_length, id_lang, code_fix, op_language, op_color) {
	msg = document.getElementById(id_string);
	show = document.getElementById(id_length);
	language = document.getElementById(id_lang);

	var double_byte_chars = ',12,91,92,93,94,123,124,125,126,';

	char_num = msg.value.length;
	
	if(code_fix != 0 && (msg.value.indexOf("#code#") >= 0)) {
		char_num = char_num + (code_fix - 6);
	}
	var count_double = 0;
	var count_char = 0;
	var flag_unicode = false;
	var char_runner = 0;

	for (i = 0; i < char_num; i++) {

		var ch_code = msg.value.charCodeAt(i);
		
        if ((!(isNaN(ch_code))) && (ch_code != 13)) {
        	count_char++;
				
			if (ch_code > 127) {
				flag_unicode = true;
			}

			if ((double_byte_chars.indexOf(',' + ch_code + ',') > 0) && (!flag_unicode)) {
				count_double++;
				char_runner++;
			}
        }
	}
	
	if (flag_unicode) {
		max_lenght = 70;
		char_less = 3;
		lang = 'Thai';
		if(op_language == "th") {
			lang = "ไทย";
		}
		real_max = 201;
	} else {
		max_lenght = 160;
		char_less = 7;
		count_char += count_double;
		lang = 'Eng';
		if(op_language == "th") {
			lang = "อังกฤษ";
		}
		real_max = 459;
	}

    if (count_char > max_lenght) {
    	SMSs = Math.floor(((count_char - 1) / (max_lenght - char_less)) + 1);
    	limit = (max_lenght - char_less) * SMSs;
    } else {
    	SMSs = Math.floor(((count_char - 1) / (max_lenght)) + 1);
    	limit = max_lenght * SMSs;
    }
	
    if (count_char == 0) {
		limit = 160;
    }
    
    var str_language = "Language: ";
    var str_char_message = " Characters/Message  Max: ";
    var char = " Characters";
    var message = " Message";
    
    if(op_language == "th") {
    	str_language = "ภาษา: ";
        str_char_message = " ตัวอักษร/ข้อความ  ข้อความยาวไม่เกิน: ";
        char = " ตัวอักษร";
        message = " ข้อความ";
    }
	
	language.value = str_language + lang + ' ' + limit + str_char_message + real_max + char;
	show.value = count_char + '/' + limit + ' (' + SMSs + message + ')';
		
	if (SMSs > 1) {
		show.style.color = 'red';
	} else {
		show.style.color = '#007DC3';
		//#007DC3 #fc8200
	}

	if (count_char > real_max) {
		if (flag_unicode) {
			msg.value = msg.value.substr(0,real_max);
		}else{
			msg.value = msg.value.substr(0,real_max-char_runner);
		}
	}
}

function update_textbox_counter(id_string, id_length, id_lang, time_delay, code_fix, op_language, op_color) {
	timer_delay = setInterval("check_message(" + '"' + id_string + '"' + "," + '"' + id_length + '"' + "," + '"' + id_lang + '"' + "," + '"' + code_fix + '"' + "," + '"' + op_language + '"' + "," + '"' + op_color + '"' + ")", time_delay);
	return true;
}

function clear_textbox_counter() {
	clearInterval(timer_delay);
}	
/* Method :: Check Message */ 

/* Method :: Date & Time */ 
function get_str_day(day) {
	var str_day;

	switch(day) {
		case 0 : str_day = "Sunday" ; break;
		case 1 : str_day = "Monday" ; break;
		case 2 : str_day = "Tuesday" ; break;
		case 3 : str_day = "Wednesday" ; break;
		case 4 : str_day = "Thursday" ; break;
		case 5 : str_day = "Friday" ; break;
		default : str_day = "Saturday" ;
	}
	return str_day;
}

function get_str_month(month) {
	var str_month = "";

	switch(month) {
		case 0 : str_month = "Jan" ; break;
		case 1 : str_month = "Feb" ; break;
		case 2 : str_month = "Mar" ; break;
		case 3 : str_month = "Apr" ; break;
		case 4 : str_month = "May" ; break;
		case 5 : str_month = "Jun" ; break;
		case 6 : str_month = "Jul" ; break;
		case 7 : str_month = "Aug" ; break;
		case 8 : str_month = "Sep" ; break;
		case 9 : str_month = "Oct" ; break;
		case 10 : str_month = "Nov" ; break;
		default : str_month = "Dec" ;
	}
	return str_month;
}

function check_time_format(time) {
	if(time < 10) {
		time = "0" + time;
	}
	return time;
}

function check_datetime(datetime_range_1, datetime_range_2) {
	var datetime_range_1_year = datetime_range_1.getFullYear();
	var datetime_range_1_month = datetime_range_1.getMonth() + 1;
	var datetime_range_1_date = datetime_range_1.getDate();
	var datetime_range_1_hour = datetime_range_1.getHours();
	var datetime_range_1_min = datetime_range_1.getMinutes();
	
	if(datetime_range_1_month < 10) { datetime_range_1_month = "0" + datetime_range_1_month; }
	if(datetime_range_1_date < 10) { datetime_range_1_date = "0" + datetime_range_1_date; }
	if(datetime_range_1_hour < 10) { datetime_range_1_hour = "0" + datetime_range_1_hour; }
	if(datetime_range_1_min < 10) { datetime_range_1_min = "0" + datetime_range_1_min; }
	
	var datetime_range_2_year = datetime_range_2.getFullYear();
	var datetime_range_2_month = datetime_range_2.getMonth() + 1;
	var datetime_range_2_date = datetime_range_2.getDate();
	var datetime_range_2_hour = datetime_range_2.getHours();
	var datetime_range_2_min = datetime_range_2.getMinutes();
	
	if(datetime_range_2_month < 10) { datetime_range_2_month = "0" + datetime_range_2_month; }
	if(datetime_range_2_date < 10) { datetime_range_2_date = "0" + datetime_range_2_date; }
	if(datetime_range_2_hour < 10) { datetime_range_2_hour = "0" + datetime_range_2_hour; }
	if(datetime_range_2_min < 10) { datetime_range_2_min = "0" + datetime_range_2_min; }
	
	var str_datetime_range_1 = datetime_range_1_year.toString() + datetime_range_1_month.toString() + datetime_range_1_date.toString() + datetime_range_1_hour.toString() + datetime_range_1_min.toString();
	var str_datetime_range_2 = datetime_range_2_year.toString() + datetime_range_2_month.toString() + datetime_range_2_date.toString() + datetime_range_2_hour.toString() + datetime_range_2_min.toString();
	
	var int_datetime_range_1 = parseInt(str_datetime_range_1);
	var int_datetime_range_2 = parseInt(str_datetime_range_2);
	
	if(int_datetime_range_1 == int_datetime_range_2) {
		return 0;
	} else if(int_datetime_range_1 > int_datetime_range_2) {
		return 1;
	} else {
		return -1;
	}
}
/* Method :: Date & Time */ 

/* Validate Form */
function check_email(str) {
	var at = "@"
	var dot = "."
	var lat = str.indexOf(at)
	var lstr = str.length
	var ldot = str.indexOf(dot)

	if(str.indexOf(at) == -1) {
	   return false
	}
	
	if(str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
	   return false
	}
	
	if(str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
	    return false
	}
	
	if(str.indexOf(at,(lat+1)) != -1) {
	    return false
	}
	
	if(str.substring(lat-1, lat) == dot || str.substring(lat+1, lat+2) == dot) {
	    return false
	}
	
	if(str.indexOf(dot,(lat+2)) == -1) {
	    return false
	}
	
	if(str.indexOf(" ") != -1) {
	    return false
	}
	
	return true					
}

function numbers_only(e, opt) {
	var evt = (e) ? e : window.event;
	var key = (evt.keyCode) ? evt.keyCode : evt.which;

	if(key != null) {
		key = parseInt(key, 10);
		if(!evt.ctrlKey) {
			if((key < 48 || key > 57) && (key < 96 || key > 105) || (key == 190)) {
				if(!is_user_friendly_char(key, opt)) {
					return false;
				}
			} else {
				if(evt.shiftKey) {
					return false;
				}
			}
		}
	}
	return true;
}

function text_only(e, opt) {
	var evt = (e) ? e : window.event;
	var key = (evt.keyCode) ? evt.keyCode : evt.which;

	
	return true;
}

function is_user_friendly_char(val, opt) {
	if(opt == "money") {
		if(val == 190) {
			return true;
		}
	}

	// Backspace, Tab, Enter, Insert, and Delete
 	if(val == 8 || val == 9 || val == 13 || val == 45 || val == 46)
	  return true;

	// Ctrl, Alt, CapsLock, Home, End, and Arrows
	if((val > 16 && val < 21) || (val > 34 && val < 41))
	  return true;

	return false;
}

function click_textbox(id, text_default) {
	var value = document.getElementById(id).value;

	if(value == text_default) {
		document.getElementById(id).value = "";
	}
}

function blur_text(id, text_default) {
	var value = document.getElementById(id).value;

	if(value == "") {
		document.getElementById(id).value = text_default;
	}
}
/* Validate Form */

/* Method :: array */
function explode (delimiter, string, limit) {
    var emptyArray = { 0: '' };
    
    // third argument is not required
    if ( arguments.length < 2 ||
        typeof arguments[0] == 'undefined' ||
        typeof arguments[1] == 'undefined' ) {
        return null;
    }
 
    if ( delimiter === '' ||
        delimiter === false ||
        delimiter === null ) {
        return false;
    }
 
    if ( typeof delimiter == 'function' ||
        typeof delimiter == 'object' ||
        typeof string == 'function' ||
        typeof string == 'object' ) {
        return emptyArray;
    }
 
    if ( delimiter === true ) {
        delimiter = '1';
    }
    
    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}

function implode (glue, pieces) {
    var i = '', retVal='', tGlue='';
    if (arguments.length === 1) {
        pieces = glue;
        glue = '';
    }
    if (typeof(pieces) === 'object') {
        if (pieces instanceof Array) {
            return pieces.join(glue);
        }
        else {
            for (i in pieces) {
                retVal += tGlue + pieces[i];
                tGlue = glue;
            }
            return retVal;
        }
    }
    else {
        return pieces;
    }
}

function array_unique (inputArr) {
    // Removes duplicate values from array  
    // 
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/array_unique
    // +   original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
    // +      input by: duncan
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Nate
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Michael Grier
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: The second argument, sort_flags is not implemented;
    // %          note 1: also should be sorted (asort?) first according to docs
    // *     example 1: array_unique(['Kevin','Kevin','van','Zonneveld','Kevin']);
    // *     returns 1: {0: 'Kevin', 2: 'van', 3: 'Zonneveld'}
    // *     example 2: array_unique({'a': 'green', 0: 'red', 'b': 'green', 1: 'blue', 2: 'red'});
    // *     returns 2: {a: 'green', 0: 'red', 1: 'blue'}
    var key = '', tmp_arr2 = {}, val = '';
 
    var __array_search = function (needle, haystack) {
        var fkey = '';
        for (fkey in haystack) {
            if (haystack.hasOwnProperty(fkey)) {
                if ((haystack[fkey] + '') === (needle + '')) {
                    return fkey;
                }
            }
        }
        return false;
    };
 
    for (key in inputArr) {
        if (inputArr.hasOwnProperty(key)) {
            val = inputArr[key];
            if (false === __array_search(val, tmp_arr2)) {
                tmp_arr2[key] = val;
            }
        }
    }
 
    return tmp_arr2;
}
/* Method :: array */

/* Method :: string */
function trim (str, charlist) {
    // Strips whitespace from the beginning and end of a string  
    // 
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/trim
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6
    var whitespace, l = 0, i = 0;
    str += '';
    
    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
    }
    
    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    
    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
/* Method :: string */
